23#include "vtkCommonCoreModule.h"
29VTK_ABI_NAMESPACE_BEGIN
30class vtkBitArrayLookup;
42 using ArrayTypeTag = std::integral_constant<int, vtkArrayTypes::VTK_BIT_ARRAY>;
70 int GetArrayType()
const override {
return vtkBitArray::ArrayTypeTag::value; }
71 int GetDataType()
const override {
return vtkBitArray::DataTypeTag::value; }
452 return this->Buffer->GetBuffer();
457 void DeepCopy(
vtkDataArray& da) { this->vtkDataArray::DeepCopy(&da); }
459 vtkBitArray(
const vtkBitArray&) =
delete;
460 void operator=(
const vtkBitArray&) =
delete;
462 vtkBitArrayLookup* Lookup;
471 const auto bitsetDiv = std::div(
id,
static_cast<vtkIdType>(8));
472 const vtkIdType &bitsetId = bitsetDiv.quot, &bitId = bitsetDiv.rem;
474 this->
Buffer->GetBuffer()[bitsetId] =
475 static_cast<ValueType>((value != 0) ? (this->
Buffer->GetBuffer()[bitsetId] | mask)
476 : (this->
Buffer->GetBuffer()[bitsetId] & (~mask)));
482 if (valueIdx >= this->
Size)
490 if (valueIdx > this->
MaxId)
492 this->
MaxId = valueIdx;
int GetNumberOfComponents() const
Set/Get the dimension (n) of the components.
vtkIdType GetNumberOfTuples() const
Get the number of complete tuples (a component group) in the array.
@ VTK_DATA_ARRAY_USER_DEFINED
@ VTK_DATA_ARRAY_ALIGNED_FREE
vtkIdType GetNumberOfValues() const
Get the total number of values in the array.
virtual void ShallowCopy(vtkAbstractArray *src)
This method will copy the data from the source array to this array.
Abstract base class for vtkBuffer providing buffer protocol support.
Abstract superclass to iterate over elements in an vtkAbstractArray.
dynamic, self-adjusting array of bits
int GetValue(vtkIdType id) const
Get the data at a particular index.
void * WriteVoidPointer(vtkIdType id, vtkIdType number) override
Get the address of a particular data index.
vtkIdType InsertNextTuple(vtkIdType j, vtkAbstractArray *source) override
Insert the jth tuple in the source array, at the end in this array.
void GetTypedTuple(vtkIdType tupleIdx, ValueType *tuple) const
Copy the tuple at tupleIdx into tuple.
static vtkBitArray * FastDownCast(vtkAbstractArray *source)
Perform a fast, safe cast from a vtkAbstractArray to a vtkBitArray.
vtkIdType InsertNextTuple(const double *tuple) override
Insert (memory allocation performed) the tuple onto the end of the array.
void DataChanged() override
Tell the array explicitly that the data has changed.
bool AllocateTuples(vtkIdType numTuples)
Allocate space for numTuples.
void InsertTuples(vtkIdType dstStart, vtkIdType n, vtkIdType srcStart, vtkAbstractArray *source) override
Copy n consecutive tuples starting at srcStart from the source array to this array,...
void SetNumberOfTuples(vtkIdType number) override
Set the number of n-tuples in the array.
void SetVariantValue(vtkIdType idx, vtkVariant value) override
Set a value in the array from a variant.
std::integral_constant< int, vtkArrayTypes::VTK_BIT_ARRAY > ArrayTypeTag
void SetValue(vtkIdType id, int value)
Set the data at a particular index.
vtkTypeBool Allocate(vtkIdType sz, vtkIdType ext=1000) override
Allocate memory for this array.
void InsertTuple(vtkIdType i, const double *tuple) override
Insert (memory allocation performed) the tuple into the ith location in the array.
void ShallowCopy(vtkDataArray *da) override
Shallow copy of another bit array.
void GetTuple(vtkIdType i, double *tuple) override
Copy the tuple value into a user-provided array.
std::vector< double > LegacyTuple
void SetTuple(vtkIdType i, const double *tuple) override
Set the tuple value at the ith location in the array.
void InsertComponent(vtkIdType i, int j, double c) override
Insert the data component at ith tuple and jth component location.
vtkBuffer< ValueType > * GetBuffer()
Return the underlying buffer object.
ValueType * WritePointer(vtkIdType id, vtkIdType number)
Get the address of a particular data index.
void DeepCopy(vtkAbstractArray *aa) override
Deep copy of another bit array.
double GetComponent(vtkIdType tupleIdx, int compIdx) override
Set/Get the data component at the ith tuple and jth component location.
void SetComponent(vtkIdType i, int j, double c) override
Set/Get the data component at the ith tuple and jth component location.
void SetTuple(vtkIdType i, const float *tuple) override
Set the tuple value at the ith location in the array.
vtkIdType InsertNextTuple(const float *tuple) override
Insert (memory allocation performed) the tuple onto the end of the array.
bool ReallocateTuples(vtkIdType numTuples)
Allocate space for numTuples.
vtkArrayIterator * NewIterator() override
Returns a new vtkBitArrayIterator instance.
vtkBuffer< ValueType > * Buffer
void SetTypedTuple(vtkIdType tupleIdx, const ValueType *tuple)
Set this array's tuple at tupleIdx to the values in tuple.
vtkTypeBool Resize(vtkIdType numTuples) override
Resize the array while conserving the data.
void InsertValue(vtkIdType id, int i)
Inserts values and checks to make sure there is enough memory.
ValueType * GetPointer(vtkIdType id)
Direct manipulation of the underlying data.
void RemoveFirstTuple() override
These methods remove tuples from the data array.
void InsertTuple(vtkIdType i, const float *tuple) override
Insert (memory allocation performed) the tuple into the ith location in the array.
void SetTypedComponent(vtkIdType tupleIdx, int comp, ValueType value)
Set component comp of the tuple at tupleIdx to value.
void Initialize() override
Release storage and reset array to initial state.
void InsertTuplesStartingAt(vtkIdType dstStart, vtkIdList *srcIds, vtkAbstractArray *source) override
Copy the tuples indexed in srcIds from the source array to the tuple locations starting at index dstS...
bool SetNumberOfValues(vtkIdType number) override
In addition to setting the number of values, this method also sets the unused bits of the last byte o...
void SetVoidArray(void *array, vtkIdType size, int save, int deleteMethod) override
This method lets the user specify data to be held by the array.
void SetArrayFreeFunction(void(*callback)(void *)) override
This method allows the user to specify a custom free function to be called when the array is dealloca...
std::integral_constant< int, VTK_BIT > DataTypeTag
vtkIdType InsertNextValue(int i)
double * GetTuple(vtkIdType i) override
Get a pointer to a tuple at the ith location.
void InsertTuple(vtkIdType i, vtkIdType j, vtkAbstractArray *source) override
Insert the jth tuple in the source array, at ith location in this array.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetVoidArray(void *array, vtkIdType size, int save) override
This method lets the user specify data to be held by the array.
void RemoveTuple(vtkIdType id) override
These methods remove tuples from the data array.
void * GetVoidPointer(vtkIdType id) override
Return a void pointer.
int GetDataTypeSize() const override
Return the size of the underlying data type.
void RemoveLastTuple() override
These methods remove tuples from the data array.
int GetArrayType() const override
Method for type-checking in FastDownCast implementations.
void SetTuple(vtkIdType i, vtkIdType j, vtkAbstractArray *source) override
Set the tuple at the ith location using the jth tuple in the source array.
void DeepCopy(vtkDataArray *da) override
Deep copy of another bit array.
void SetArray(ValueType *array, vtkIdType size, int save, int deleteMethod=VTK_DATA_ARRAY_DELETE)
This method lets the user specify data to be held by the array.
@ VTK_DATA_ARRAY_USER_DEFINED
@ VTK_DATA_ARRAY_ALIGNED_FREE
void InsertTuples(vtkIdList *dstIds, vtkIdList *srcIds, vtkAbstractArray *source) override
Copy the tuples indexed in srcIds from the source array to the tuple locations indexed by dstIds in t...
int GetDataType() const override
Return the underlying data type.
vtkVariant GetVariantValue(vtkIdType idx) override
Get a value in the array as a variant.
vtkIdType LookupValue(vtkVariant value) override
Return the indices where a specific value appears.
static vtkBitArray * New()
void InsertVariantValue(vtkIdType idx, vtkVariant value) override
Inserts values from a variant and checks to ensure there is enough memory.
void Squeeze() override
Free any unneeded memory.
ValueType GetTypedComponent(vtkIdType tupleIdx, int comp) const
Get component comp of the tuple at tupleIdx.
virtual void InitializeUnusedBitsInLastByte()
This method should be called whenever MaxId needs to be changed, as this method fills the unused bits...
ValueType * ResizeAndExtend(vtkIdType size)
Function to resize data.
void ClearLookup() override
Delete the associated fast lookup data structure on this array, if it exists.
internal storage class used by vtkSOADataArrayTemplate, vtkAOSDataArrayTemplate, and others.
void DeepCopy(vtkAbstractArray *aa) override
Deep copy of data.
list of point or cell ids
a simple class to control print indentation
A type representing the union of many types.
int ToInt(bool *valid) const
Convert the variant to a numeric type: If it holds a numeric, cast to the appropriate type.
#define vtkArrayDownCast_FastCastMacro(ArrayT)
This macro is used to tell vtkArrayDownCast to use FastDownCast instead of SafeDownCast.
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
#define VTK_DEPRECATED_IN_9_7_0(reason)
void save(Archiver &ar, const std::string &str, const unsigned int version)