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

from .object import object

class vtkDataSetAttributesFieldList(object):
    """
    vtkDataSetAttributesFieldList - helps manage arrays from multiple
    vtkDataSetAttributes.
    
    vtkDataSetAttributesFieldList, also called
    vtkDataSetAttributes::FieldList, is used to help with filters when
    dealing with arrays from multiple vtkDataSetAttributes instances,
    potentially from multiple inputs.
    
    Consider a filter that appends multiple inputs, e.g.
    vtkAppendPolyData. Besides appending mesh elements, such a filter
    also needs to combine field arrays (point, and cell data) from inputs
    to pass on to the output. Now if all the inputs had exactly the same
    set of arrays, we're all set. However, more often than not, the
    inputs will have different sets of arrays. The filter will need to
    match up from various inputs to combine together, potentially
    dropping arrays not in all inputs. Furthermore, it needs to ensure
    arrays in the output are flagged as attributes consistently. All of
    this can be done using vtkDataSetAttributesFieldList.
    
    @section Usage Usage
    
    Typical usage is as follows:
    1. call `IntersectFieldList` or `UnionFieldList` for all input
       vtkDataSetAttributes instances,
    2. allocate arrays for the output vtkDataSetAttributes by using
       `CopyAllocate`,
    3. call `CopyData` per input (preserving the input order used in step
    1) to copy tuple(s) from input to the output.
    
    `vtkDataSetAttributes::InitializeFieldList` is provided for API
    compatibility with previous implementation of this class and it not
    required to be called. Simply calling `UnionFieldList` or
    `IntersectFieldList` for the first vtkDataSetAttributes instance is
    sufficient.
    
    `CopyAllocate, `CopyData`, and `InterpolatePoint` methods on this
    class are called by similarly named variants on vtkDataSetAttributes
    that take in a FieldList instance as an argument. Hence, either forms
    may be used.
    
    Calls to `UnionFieldList` and `IntersectFieldList` cannot be mixed.
    Use `Reset` or `InitializeFieldList` to change mode and start
    reinitialization.
    
    vtkDataSetAttributesFieldList(int number_of_inputs=0)
    """
    def CopyAllocate(self, vtkDataSetAttributes, p_int, p_int_1, p_int_2):
        """
        V.CopyAllocate(vtkDataSetAttributes, int, int, int)
        C++: void CopyAllocate(vtkDataSetAttributes *output, int ctype,
            vtkIdType sz, vtkIdType ext)
        
        These methods can called to generate and update the output
        vtkDataSetAttributes. These match corresponding API on
        vtkDataSetAttributes and can be called via the output
        vtkDataSetAttributes instance instead as well.
        """
        ...
    
    def CopyData(self, p_int, vtkDataSetAttributes, p_int_1, vtkDataSetAttributes_1, p_int_2):
        """
        V.CopyData(int, vtkDataSetAttributes, int, vtkDataSetAttributes,
            int)
        C++: void CopyData(int inputIndex, vtkDataSetAttributes *input,
            vtkIdType fromId, vtkDataSetAttributes *output,
            vtkIdType toId)
        V.CopyData(int, vtkDataSetAttributes, int, int,
            vtkDataSetAttributes, int)
        C++: void CopyData(int inputIdx, vtkDataSetAttributes *input,
            vtkIdType inputStart, vtkIdType numValues,
            vtkDataSetAttributes *output, vtkIdType outStart)
        
        These methods can called to generate and update the output
        vtkDataSetAttributes. These match corresponding API on
        vtkDataSetAttributes and can be called via the output
        vtkDataSetAttributes instance instead as well.
        """
        ...
    
    def InitializeFieldList(self, vtkDataSetAttributes):
        """
        V.InitializeFieldList(vtkDataSetAttributes)
        C++: void InitializeFieldList(vtkDataSetAttributes *dsa)
        
        Initialize the field list. This also adds the first input.
        Calling this method is optional. The first call to
        `IntersectFieldList` or `UnionFieldList` on a new instance or
        after calling `Reset()` will have the same effect.
        """
        ...
    
    def InterpolatePoint(self, p_int, vtkDataSetAttributes, vtkIdList, *float, **kwargs):
        """
        V.InterpolatePoint(int, vtkDataSetAttributes, vtkIdList, [float,
            ...], vtkDataSetAttributes, int)
        C++: void InterpolatePoint(int inputIdx,
            vtkDataSetAttributes *input, vtkIdList *inputIds,
            double *weights, vtkDataSetAttributes *output, vtkIdType toId)
        
        These methods can called to generate and update the output
        vtkDataSetAttributes. These match corresponding API on
        vtkDataSetAttributes and can be called via the output
        vtkDataSetAttributes instance instead as well.
        """
        ...
    
    def IntersectFieldList(self, vtkDataSetAttributes):
        """
        V.IntersectFieldList(vtkDataSetAttributes)
        C++: void IntersectFieldList(vtkDataSetAttributes *dsa)
        
        Update the field list for an intersection of arrays registered so
        far and those in `dsa`.
        """
        ...
    
    def Reset(self):
        """
        V.Reset()
        C++: void Reset()
        
        Initializes the field list to empty.
        """
        ...
    
    def UnionFieldList(self, vtkDataSetAttributes):
        """
        V.UnionFieldList(vtkDataSetAttributes)
        C++: void UnionFieldList(vtkDataSetAttributes *dsa)
        
        Update the field list for an union of arrays registered so far
        and those in `dsa`.
        """
        ...
    
    def __getattribute__(self, *args, **kwargs):
        """ Return getattr(self, name). """
        ...
    
    def __hash__(self, *args, **kwargs) -> int:
        """ Return hash(self). """
        ...
    
    def __init__(self, int_number_of_inputs=...) -> 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). """
        ...
    


