com.ihr.xbrl.om.formula.functions

## Class XFI_filter_member_network_selection

- java.lang.Object
- - net.sf.saxon.expr.Expression
  - - net.sf.saxon.expr.FunctionCall
    - - com.ihr.xbrl.om.formula.functions.XFFunction
      - - com.ihr.xbrl.om.formula.functions.XFI_filter_member_network_selection

- All Implemented Interfaces:
    java.io.Serializable, javax.xml.transform.SourceLocator, net.sf.saxon.event.LocationProvider, net.sf.saxon.event.SaxonLocator, net.sf.saxon.trace.InstructionInfo, org.xml.sax.Locator

      public class XFI_filter_member_network_selection
      extends XFFunction

  The existence of this function in the functions conformance suite makes me wonder if the authors of the functions specification has ever understood the XBRL Dimensions Specification 1.0.

  The function has parameters dimension QName and Member QName for start exploring for more members in the same domain. Surprisingly the function does not considers the concept QName which is supposed to make USE OF THE DIMENSION through an hypercube. It looks like the authors of the functions specification took a very syntactical approach to the dimensions specification rather than an object model approach in which an object is declared once and used multiple times. Certainly, the Dimensions Specification was written with the idea of being able to redefine a dimension members each time a dimension is used in a concept and this function is ignoring this capability.

  Author:
    Ignacio
  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from class net.sf.saxon.expr.Expression

      `EFFECTIVE_BOOLEAN_VALUE, EVALUATE_METHOD, EVENT_FEED_METHOD, ITEM_FEED_METHOD, ITERATE_METHOD, MAX_SEQUENCE_LENGTH, MAX_STRING_LENGTH, PROCESS_METHOD, PUSH_SELECTION, UNBOUNDED_LOWER, UNBOUNDED_UPPER, WATCH_METHOD`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `XFI_filter_member_network_selection()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `net.sf.saxon.om.SequenceIterator<?>` | `iterate(net.sf.saxon.expr.XPathContext context)`
    `net.sf.saxon.expr.Expression` | `optimize(net.sf.saxon.expr.parser.ExpressionVisitor visitor, net.sf.saxon.expr.parser.ExpressionVisitor.ContextItemType contextItemType)` Perform optimisation of an expression and its subexpressions.
    `net.sf.saxon.expr.Expression` | `typeCheck(net.sf.saxon.expr.parser.ExpressionVisitor visitor, net.sf.saxon.expr.parser.ExpressionVisitor.ContextItemType contextItemType)`

    - ### Methods inherited from class com.ihr.xbrl.om.formula.functions.XFFunction

      `addDocToPathMap, checkArguments, computeCardinality, computeSpecialProperties, copy, getDetails, getErrorCodeForTypeErrors, getFormulaProcessor, getItemType, makeSystemFunction, setDetails, setFormulaProcessor`

    - ### Methods inherited from class net.sf.saxon.expr.FunctionCall

      `addExternalFunctionCallToPathMap, equals, explain, getArguments, getDisplayName, getExpressionName, getFunctionName, getNumberOfArguments, hashCode, iterateSubExpressions, preEvaluate, promote, replaceSubExpression, setArguments, setFunctionName, simplify, toString`

    - ### Methods inherited from class net.sf.saxon.expr.Expression

      `addToPathMap, adoptChildExpression, checkForUpdatingSubexpressions, checkPermittedContents, computeDependencies, computeStaticProperties, doPromotion, effectiveBooleanValue, evaluateAsString, evaluateItem, evaluatePendingUpdates, explain, getCardinality, getColumnNumber, getColumnNumber, getConstructType, getContainer, getDependencies, getEvaluationMethod, getExecutable, getHostLanguage, getImplementationMethod, getIntegerBounds, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, getSystemId, hasLoopingSubexpression, hasVariableBinding, implementsStaticTypeCheck, isSubtreeExpression, isUpdatingExpression, isVacuousExpression, iterateEvents, iterateSameFocusSubExpressions, markTailFunctionCalls, process, resetLocalStaticProperties, setContainer, setEvaluationMethod, setFiltered, setFlattened, setLocationId, staticTypeCheck, suppressValidation`

    - ### Methods inherited from class java.lang.Object

      `getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### XFI_filter_member_network_selection

          public XFI_filter_member_network_selection()

  - ### Method Detail

    - #### iterate

          public net.sf.saxon.om.SequenceIterator<?> iterate(net.sf.saxon.expr.XPathContext context)
                                                      throws net.sf.saxon.trans.XPathException

      Overrides:
        `iterate` in class `net.sf.saxon.expr.Expression`
      Throws:
        `net.sf.saxon.trans.XPathException`

    - #### typeCheck

          public net.sf.saxon.expr.Expression typeCheck(net.sf.saxon.expr.parser.ExpressionVisitor visitor,
                                               net.sf.saxon.expr.parser.ExpressionVisitor.ContextItemType contextItemType)
                                                 throws net.sf.saxon.trans.XPathException

      Overrides:
        `typeCheck` in class `net.sf.saxon.expr.FunctionCall`
      Throws:
        `net.sf.saxon.trans.XPathException`

    - #### optimize

          public net.sf.saxon.expr.Expression optimize(net.sf.saxon.expr.parser.ExpressionVisitor visitor,
                                              net.sf.saxon.expr.parser.ExpressionVisitor.ContextItemType contextItemType)
                                                throws net.sf.saxon.trans.XPathException

      Description copied from class: `XFFunction`
      Perform optimisation of an expression and its subexpressions.

      This method is called after all references to functions and variables have been resolved to the declaration of the function or variable, and after all type checking has been done.

      Overrides:
        `optimize` in class `XFFunction`
      Parameters:
        `visitor` - an expression visitor
        `contextItemType` - the static type of "." at the point where this expression is invoked. The parameter is set to null if it is known statically that the context item will be undefined. If the type of the context item is not known statically, the argument is set to `Type.ITEM_TYPE`
      Returns:
        the original expression, rewritten if appropriate to optimize execution
      Throws:
        `net.sf.saxon.trans.XPathException` - if an error is discovered during this phase (typically a type error)