"""
This type stub file was generated by pyright.
"""

from .vtkDataObject import vtkDataObject

class vtkSelection(vtkDataObject):
    """
    vtkSelection - data object that represents a "selection" in VTK.
    
    Superclass: vtkDataObject
    
    vtkSelection is a data object that represents a selection definition.
    It is used to define the elements that are selected. The criteria of
    the selection is defined using one or more vtkSelectionNode
    instances. Parameters of the vtkSelectionNode define what kind of
    elements are being selected (vtkSelectionNode::GetFieldType), how the
    selection criteria is defined (vtkSelectionNode::GetContentType),
    etc.
    
    Filters like vtkExtractSelection, vtkExtractDataArraysOverTime can be
    used to extract the selected elements from a dataset.
    
    @section CombiningSelection Combining Selections
    
    When a vtkSelection contains multiple vtkSelectionNode instances, the
    selection defined is a union of all the elements identified by each
    of the nodes.
    
    Optionally, one can use `vtkSelection::SetExpression` to define a
    boolean expression to build arbitrarily complex combinations. The
    expression can be defined using names assigned to the selection nodes
    when the nodes are added to vtkSelection (either explicitly or
    automatically).
    
    @sa
    vtkSelectionNode
    """
    def AddNode(self, vtkSelectionNode):
        """
        V.AddNode(vtkSelectionNode) -> string
        C++: virtual std::string AddNode(vtkSelectionNode *)
        
        Adds a selection node. Assigns the node a unique name and returns
        that name. This API is primarily provided for backwards
        compatibility and `SetNode` is the preferred method.
        """
        ...
    
    def DeepCopy(self, vtkDataObject):
        """
        V.DeepCopy(vtkDataObject)
        C++: void DeepCopy(vtkDataObject *src) override;
        
        Copy selection nodes of the input.
        """
        ...
    
    def Dump(self):
        """
        V.Dump()
        C++: virtual void Dump()
        
        Dumps the contents of the selection, giving basic information
        only.
        """
        ...
    
    def GetData(self, vtkInformation):
        """
        V.GetData(vtkInformation) -> vtkSelection
        C++: static vtkSelection *GetData(vtkInformation *info)
        V.GetData(vtkInformationVector, int) -> vtkSelection
        C++: static vtkSelection *GetData(vtkInformationVector *v,
            int i=0)
        
        Retrieve a vtkSelection stored inside an invormation object.
        """
        ...
    
    def GetDataObjectType(self):
        """
        V.GetDataObjectType() -> int
        C++: int GetDataObjectType() override;
        
        Returns VTK_SELECTION enumeration value.
        """
        ...
    
    def GetExpression(self):
        """
        V.GetExpression() -> string
        C++: virtual std::string GetExpression()
        
        Get/Set the expression that defines the boolean expression to
        combine the selection nodes. Expression consists of node name
        identifiers, `|` for boolean-or, '&' for boolean and, '!' for
        boolean not, and parenthesis `(` and `)`. If the expression
        consists of a node name identifier that is not assigned any
        `vtkSelectionNode` (using `SetNode`) then it is evaluates to
        `false`.
        
        `SetExpression` does not validate the expression. It will be
        validated in `Evaluate` call.
        """
        ...
    
    def GetMTime(self):
        """
        V.GetMTime() -> int
        C++: vtkMTimeType GetMTime() override;
        
        Return the MTime taking into account changes to the properties
        """
        ...
    
    def GetNode(self, p_int):
        """
        V.GetNode(int) -> vtkSelectionNode
        C++: virtual vtkSelectionNode *GetNode(unsigned int idx)
        V.GetNode(string) -> vtkSelectionNode
        C++: virtual vtkSelectionNode *GetNode(const std::string &name)
        
        Returns a node given it's index. Performs bound checking and will
        return nullptr if out-of-bounds.
        """
        ...
    
    def GetNodeNameAtIndex(self, p_int):
        """
        V.GetNodeNameAtIndex(int) -> string
        C++: virtual std::string GetNodeNameAtIndex(unsigned int idx)
        
        Returns the name for a node at the given index.
        """
        ...
    
    def GetNumberOfGenerationsFromBase(self, string):
        """
        V.GetNumberOfGenerationsFromBase(string) -> int
        C++: vtkIdType GetNumberOfGenerationsFromBase(const char *type)
            override;
        
        Given a the name of a base class of this class type, return the
        distance of inheritance between this class type and the named
        class (how many generations of inheritance are there between this
        class and the named class). If the named class is not in this
        class's inheritance tree, return a negative value. Valid
        responses will always be nonnegative. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def GetNumberOfGenerationsFromBaseType(self, string):
        """
        V.GetNumberOfGenerationsFromBaseType(string) -> int
        C++: static vtkIdType GetNumberOfGenerationsFromBaseType(
            const char *type)
        
        Given a the name of a base class of this class type, return the
        distance of inheritance between this class type and the named
        class (how many generations of inheritance are there between this
        class and the named class). If the named class is not in this
        class's inheritance tree, return a negative value. Valid
        responses will always be nonnegative. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def GetNumberOfNodes(self):
        """
        V.GetNumberOfNodes() -> int
        C++: unsigned int GetNumberOfNodes()
        
        Returns the number of nodes in this selection. Each node contains
        information about part of the selection.
        """
        ...
    
    def Initialize(self):
        """
        V.Initialize()
        C++: void Initialize() override;
        
        Restore data object to initial state,
        """
        ...
    
    def IsA(self, string):
        """
        V.IsA(string) -> int
        C++: vtkTypeBool IsA(const char *type) override;
        
        Return 1 if this class is the same type of (or a subclass of) the
        named class. Returns 0 otherwise. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def IsTypeOf(self, string):
        """
        V.IsTypeOf(string) -> int
        C++: static vtkTypeBool IsTypeOf(const char *type)
        
        Return 1 if this class type is the same type of (or a subclass
        of) the named class. Returns 0 otherwise. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def NewInstance(self):
        """
        V.NewInstance() -> vtkSelection
        C++: vtkSelection *NewInstance()
        """
        ...
    
    def RemoveAllNodes(self):
        """
        V.RemoveAllNodes()
        C++: virtual void RemoveAllNodes()
        
        Removes all selection nodes.
        """
        ...
    
    def RemoveNode(self, p_int):
        """
        V.RemoveNode(int)
        C++: virtual void RemoveNode(unsigned int idx)
        V.RemoveNode(string)
        C++: virtual void RemoveNode(const std::string &name)
        V.RemoveNode(vtkSelectionNode)
        C++: virtual void RemoveNode(vtkSelectionNode *)
        
        Removes a selection node.
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase) -> vtkSelection
        C++: static vtkSelection *SafeDownCast(vtkObjectBase *o)
        """
        ...
    
    def SetExpression(self, string):
        """
        V.SetExpression(string)
        C++: virtual void SetExpression(std::string _arg)
        
        Get/Set the expression that defines the boolean expression to
        combine the selection nodes. Expression consists of node name
        identifiers, `|` for boolean-or, '&' for boolean and, '!' for
        boolean not, and parenthesis `(` and `)`. If the expression
        consists of a node name identifier that is not assigned any
        `vtkSelectionNode` (using `SetNode`) then it is evaluates to
        `false`.
        
        `SetExpression` does not validate the expression. It will be
        validated in `Evaluate` call.
        """
        ...
    
    def SetNode(self, string, vtkSelectionNode):
        """
        V.SetNode(string, vtkSelectionNode)
        C++: virtual void SetNode(const std::string &name,
            vtkSelectionNode *)
        
        Adds a vtkSelectionNode and assigns it the specified name. The
        name must be a non-empty string. If an item with the same name
        has already been added, it will be removed.
        """
        ...
    
    def ShallowCopy(self, vtkDataObject):
        """
        V.ShallowCopy(vtkDataObject)
        C++: void ShallowCopy(vtkDataObject *src) override;
        
        Copy selection nodes of the input. This is a shallow copy:
        selection lists and pointers in the properties are passed by
        reference.
        """
        ...
    
    def Subtract(self, vtkSelection):
        """
        V.Subtract(vtkSelection)
        C++: virtual void Subtract(vtkSelection *selection)
        V.Subtract(vtkSelectionNode)
        C++: virtual void Subtract(vtkSelectionNode *node)
        
        Remove the nodes from the specified selection from this
        selection. Assumes that selection node internal arrays are
        vtkIdTypeArrays.
        """
        ...
    
    def Union(self, vtkSelection):
        """
        V.Union(vtkSelection)
        C++: virtual void Union(vtkSelection *selection)
        V.Union(vtkSelectionNode)
        C++: virtual void Union(vtkSelectionNode *node)
        
        Union this selection with the specified selection. Attempts to
        reuse selection nodes in this selection if properties match
        exactly. Otherwise, creates new selection nodes.
        """
        ...
    
    def __delattr__(self, *args, **kwargs):
        """ Implement delattr(self, name). """
        ...
    
    def __getattribute__(self, *args, **kwargs):
        """ Return getattr(self, name). """
        ...
    
    def __init__(self, either_explicitly_or, *args, **kwargs) -> None:
        ...
    
    @staticmethod
    def __new__(*args, **kwargs):
        """ Create and return a new object.  See help(type) for accurate signature. """
        ...
    
    def __repr__(self, *args, **kwargs):
        """ Return repr(self). """
        ...
    
    def __setattr__(self, *args, **kwargs):
        """ Implement setattr(self, name, value). """
        ...
    
    def __str__(self, *args, **kwargs) -> str:
        """ Return str(self). """
        ...
    
    __this__ = ...
    __dict__ = ...
    __vtkname__ = ...


