Public Types | Public Member Functions | Protected Member Functions | Protected Attributes

FbxLayerElementArray Class Reference

This reference page is linked to from the following overview topics: List of Python Fbx classes.


Search for all occurrences

Detailed Description

FbxLayerElementArray is the base class for FbxLayerElementArrayTemplate, it provides lock handling and data array manipulation of the data buffer for FbxLayerElement.

Definition at line 325 of file fbxlayer.h.

#include <fbxlayer.h>

Inheritance diagram for FbxLayerElementArray:
Inheritance graph
[legend]

List of all members.

Public Types

enum  ELockMode { eReadLock = 1, eWriteLock = 2, eReadWriteLock = 3 }
 

Identifies the access mode to the data buffer.

More...

Public Member Functions

bool IsInUse () const
 Returns whether this Array is accessed in any way.
int ReadLock () const
 Increments the number of read locks on this array.
int ReadUnlock () const
 Releases a read lock on this array.
bool WriteLock () const
 Locks this array for writing.
void WriteUnlock () const
 Releases the write lock on this array.
bool ReadWriteLock () const
 Locks this array for writing.
void ReadWriteUnlock () const
 Releases the write lock on this array.
virtual void * GetLocked (ELockMode pLockMode, EFbxType pDataType)
 Grants a locked access to the data buffer.
void * GetLocked (ELockMode pLockMode=eReadWriteLock)
 Grants a locked access to the data buffer.
template<class T >
T * GetLocked (T *, ELockMode pLockMode=eReadWriteLock)
 Grants a locked access to the data buffer.
virtual void Release (void **pDataPtr, EFbxType pDataType)
 Unlock the data buffer.
void Release (void **pDataPtr)
 Unlock the data buffer.
template<class T >
void Release (T **pDataPtr, T *dummy)
 Unlock the data buffer.
virtual size_t GetStride () const
 Returns the Stride size which equals the size of the data type of the data buffer.

Protected Member Functions

void * GetDataPtr ()
void * GetReference (int pIndex, EFbxType pValueType)
void GetReferenceTo (int pIndex, void **pRef, EFbxType pValueType)
void SetStatus (LockAccessStatus::ELockAccessStatus pVal) const
void SetImplementation (void *pImplementation)
void * GetImplementation ()
virtual void ConvertDataType (EFbxType pDataType, void **pDataPtr, size_t *pStride)

Protected Attributes

EFbxType mDataType

Constructor and Destructor

 FbxLayerElementArray (EFbxType pDataType)
 Constructor.
virtual ~FbxLayerElementArray ()
 Destructor.

Status handling

void ClearStatus ()
 Clears the access state and sets it to eSuccess.
LockAccessStatus::ELockAccessStatus GetStatus () const
 Retrieves the access state.

Locks handling

bool IsWriteLocked () const
 Returns whether write is locked.
int GetReadLockCount () const
 Retrieves the read lock count.

Data array manipulation

int GetCount () const
 Returns the count of items in the data buffer.
void SetCount (int pCount)
 Sets the count of items in the data buffer.
void Clear ()
 Clears the data buffer.
void Resize (int pItemCount)
 Resizes the data buffer.
void AddMultiple (int pItemCount)
 Appends space to the data buffer.
int Add (void const *pItem, EFbxType pValueType)
 Appends a new item to the end of the data buffer.
int InsertAt (int pIndex, void const *pItem, EFbxType pValueType)
 Inserts a new item at the specified position of the data buffer.
void SetAt (int pIndex, void const *pItem, EFbxType pValueType)
 Sets the value for the specified item.
void SetLast (void const *pItem, EFbxType pValueType)
 Sets the value of the last item.
void RemoveAt (int pIndex, void **pItem, EFbxType pValueType)
 Removes the specified item from the data buffer.
void RemoveLast (void **pItem, EFbxType pValueType)
 Removes the last item from the data buffer.
bool RemoveIt (void **pItem, EFbxType pValueType)
 Removes one item from the data buffer.
bool GetAt (int pIndex, void **pItem, EFbxType pValueType) const
 Returns the specified item's value.
bool GetFirst (void **pItem, EFbxType pValueType) const
 Returns the first item's value.
bool GetLast (void **pItem, EFbxType pValueType) const
 Returns the last item's value.
int Find (void const *pItem, EFbxType pValueType) const
 Searches for an item in the data buffer.
int FindAfter (int pAfterIndex, void const *pItem, EFbxType pValueType) const
 Searches for an item after the specified index in the data buffer.
int FindBefore (int pBeforeIndex, void const *pItem, EFbxType pValueType) const
 Searches for an item before the specified index in the data buffer.
bool IsEqual (const FbxLayerElementArray &pArray) const
 Equivalence operator.
template<class T >
int Add (T const &pItem)
 Appends a new item to the end of the data buffer.
template<class T >
int InsertAt (int pIndex, T const &pItem)
 Inserts a new item at the specified position of the data buffer.
template<class T >
void SetAt (int pIndex, T const &pItem)
 Sets the value of the specified item.
template<class T >
void SetLast (T const &pItem)
 Sets the value of the last item.
template<class T >
void RemoveAt (int pIndex, T *pItem)
 Removes the specified item from the data buffer.
template<class T >
void RemoveLast (T *pItem)
 Removes the last item from the data buffer.
template<class T >
bool RemoveIt (T *pItem)
 Removes one item from the data buffer.
template<class T >
bool GetAt (int pIndex, T *pItem) const
 Returns the specified item's value.
template<class T >
bool GetFirst (T *pItem) const
 Returns the first item's value.
template<class T >
bool GetLast (T *pItem) const
 Returns the last item's value.
template<class T >
int Find (T const &pItem) const
 Searches for an item in the data buffer.
template<class T >
int FindAfter (int pAfterIndex, T const &pItem) const
 Searches for an item after the specified index in the data buffer.
template<class T >
int FindBefore (int pBeforeIndex, T const &pItem) const
 Searches for one item before the specified index in the data buffer.
template<typename T >
void CopyTo (FbxArray< T > &pDst)
 Copies the items in the data buffer to an array.

Member Enumeration Documentation

enum ELockMode

Identifies the access mode to the data buffer.

  • eReadLock Read mode.
  • eWriteLock Write mode.
  • eReadWriteLock Read-write mode.
Enumerator:
eReadLock 
eWriteLock 
eReadWriteLock 

Definition at line 412 of file fbxlayer.h.

    {
        eReadLock = 1,
        eWriteLock = 2,
        eReadWriteLock = 3
    };

Constructor & Destructor Documentation

Constructor.

Parameters:
pDataTypeThe data type of the items in the data array.
virtual ~FbxLayerElementArray ( ) [virtual]

Destructor.


Member Function Documentation

void ClearStatus ( ) [inline]

Clears the access state and sets it to eSuccess.

Definition at line 349 of file fbxlayer.h.

LockAccessStatus::ELockAccessStatus GetStatus ( ) const [inline]

Retrieves the access state.

Definition at line 352 of file fbxlayer.h.

{ return mStatus; }
bool IsWriteLocked ( ) const [inline]

Returns whether write is locked.

Returns:
True if write is locked, false otherwise.

Definition at line 363 of file fbxlayer.h.

{ return mWriteLock; };
int GetReadLockCount ( ) const [inline]

Retrieves the read lock count.

Returns:
The read lock count.

Definition at line 368 of file fbxlayer.h.

{ return mReadLockCount; }
bool IsInUse ( ) const

Returns whether this Array is accessed in any way.

Returns:
True if it is in use, false otherwise.
int ReadLock ( ) const

Increments the number of read locks on this array.

Returns:
The current number of read locks (including the one just grabbed) or 0 if a write lock is active.
int ReadUnlock ( ) const

Releases a read lock on this array.

Returns:
The remaining read locks or -1 if a write lock is active.
bool WriteLock ( ) const

Locks this array for writing.

The data in the array is wiped out.

Returns:
True if a write lock has been successfully granted, false if one or more read locks are active.
void WriteUnlock ( ) const

Releases the write lock on this array.

bool ReadWriteLock ( ) const

Locks this array for writing.

The data that already exists in the array is kept and is valid.

Returns:
True if a write lock has been successfully granted, false if one or more read locks are active.
void ReadWriteUnlock ( ) const

Releases the write lock on this array.

virtual void* GetLocked ( ELockMode  pLockMode,
EFbxType  pDataType 
) [virtual]

Grants a locked access to the data buffer.

Parameters:
pLockModeAccess mode to the data buffer.
pDataTypeIf defined, tries to return the data as this type.
Returns:
A pointer to the data buffer or NULL if a failure occurs.
Remarks:
In the case of a failure, the Status is updated with the reason for the failure. Also, when a type conversion occurs, a second buffer of the new type is allocated. In this case, the LockMode does not apply to the returned buffer since it is a copy but it does apply to the internal data of this object. The returned buffer still remains a property of this object and is deleted when the pointer is released or the object is destroyed. At the moment of release or destruction, the values in this buffer are copied back into this object.
void* GetLocked ( ELockMode  pLockMode = eReadWriteLock) [inline]

Grants a locked access to the data buffer.

Parameters:
pLockModeAccess mode to the data buffer.
Returns:
A pointer to the data buffer or NULL if a failure occurs.
Remarks:
In the case of a failure, the Status is updated with the reason for the failure. Also, when a type conversion occurs, a second buffer of the new type is allocated. In this case, the LockMode does not apply to the returned buffer since it is a copy but it does apply to the internal data of this object. The returned buffer still remains a property of this object and is deleted when the pointer is released or the object is destroyed. At the moment of release or destruction, the values in this buffer are copied back into this object.

Definition at line 444 of file fbxlayer.h.

{ return GetLocked(pLockMode, mDataType); }
T* GetLocked ( T *  ,
ELockMode  pLockMode = eReadWriteLock 
) [inline]

Grants a locked access to the data buffer.

Parameters:
pLockModeAccess mode to the data buffer.
Returns:
A pointer to the data buffer or NULL if a failure occurs.
Remarks:
In the case of a failure, the Status is updated with the reason for the failure. Also, when a type conversion occurs, a second buffer of the new type is allocated. In this case, the LockMode does not apply to the returned buffer since it is a copy but it does apply to the internal data of this object. The returned buffer still remains a property of this object and is deleted when the pointer is released or the object is destroyed. At the moment of release or destruction, the values in this buffer are copied back into this object.

Definition at line 457 of file fbxlayer.h.

{T v; return (T*)GetLocked(pLockMode, FbxTypeOf(v)); }
virtual void Release ( void **  pDataPtr,
EFbxType  pDataType 
) [virtual]

Unlock the data buffer.

Parameters:
pDataPtrThe buffer to be released.
pDataTypeThe data type of the data buffer.
Remarks:
The passed pointer must be the one obtained by the call to GetLocked(). Any other pointer causes this method to fail and the Status is updated with the reason for the failure. If the passed pointer refers a converted data buffer (see comment of GetLocked), this method copies the GetCount() items of the received buffer back into this object. Any other items that may have been added using a realloc call are ignored.
void Release ( void **  pDataPtr) [inline]

Unlock the data buffer.

Parameters:
pDataPtrThe buffer to be released.
Remarks:
The passed pointer must be the one obtained by the call to GetLocked(). Any other pointer causes this method to fail and the Status is updated with the reason for the failure. If the passed pointer refers a converted data buffer (see comment of GetLocked), this method copies the GetCount() items of the received buffer back into this object. Any other items that may have been added using a realloc call are ignored.

Definition at line 480 of file fbxlayer.h.

{ Release(pDataPtr, mDataType); }
void Release ( T **  pDataPtr,
T *  dummy 
) [inline]

Unlock the data buffer.

Parameters:
pDataPtrThe buffer to be released.
dummyThe data type of dummy is used to specialize this function.
Remarks:
The passed pointer must be the one obtained by the call to GetLocked(). Any other pointer causes this method to fail and the Status is updated with the reason for the failure. If the passed pointer refers a converted data buffer (see comment of GetLocked), this method copies the GetCount() items of the received buffer back into this object. Any other items that may have been added using a realloc call are ignored.

Definition at line 492 of file fbxlayer.h.

{ Release((void**)pDataPtr, FbxTypeOf(*dummy)); }
virtual size_t GetStride ( ) const [virtual]

Returns the Stride size which equals the size of the data type of the data buffer.

int GetCount ( ) const

Returns the count of items in the data buffer.

void SetCount ( int  pCount)

Sets the count of items in the data buffer.

Parameters:
pCountThe count of items to be set.
void Clear ( )

Clears the data buffer.

void Resize ( int  pItemCount)

Resizes the data buffer.

Parameters:
pItemCountThe new size of the data buffer.
void AddMultiple ( int  pItemCount)

Appends space to the data buffer.

Parameters:
pItemCountThe appended space size
int Add ( void const *  pItem,
EFbxType  pValueType 
)

Appends a new item to the end of the data buffer.

Parameters:
pItemPointer of the new item to be added
pValueTypeData type of the new item
Returns:
The index of the new item
int InsertAt ( int  pIndex,
void const *  pItem,
EFbxType  pValueType 
)

Inserts a new item at the specified position of the data buffer.

Parameters:
pIndexThe specified position
pItemPointer of the new item to be inserted
pValueTypeData type of the new item
Returns:
The index of the inserted item
Remarks:
The input index must be within valid range and no error will be thrown if it is invalid.
void SetAt ( int  pIndex,
void const *  pItem,
EFbxType  pValueType 
)

Sets the value for the specified item.

Parameters:
pIndexThe index of the item to be updated.
pItemPointer of the item whose value is copied to pIndex'th item
pValueTypeData type of the item
Remarks:
The input index must be within valid range and no error will be thrown if it is invalid.
void SetLast ( void const *  pItem,
EFbxType  pValueType 
)

Sets the value of the last item.

Parameters:
pItemPointer of the item whose value is copied to the last item
pValueTypeData type of the item
Remarks:
The array should contain at least one item and no error will be thrown if it is empty.
void RemoveAt ( int  pIndex,
void **  pItem,
EFbxType  pValueType 
)

Removes the specified item from the data buffer.

Parameters:
pIndexThe index of the item to be removed
pItemPlace to hold the value of the removed item.
pValueTypeData type of the item
Remarks:
The input index must be within valid range and no error will be thrown if it is invalid.
void RemoveLast ( void **  pItem,
EFbxType  pValueType 
)

Removes the last item from the data buffer.

Parameters:
pItemPlace to hold the value of the removed item.
pValueTypeData type of the item
Remarks:
The array should contain at least one item and no error will be thrown if it is empty.
bool RemoveIt ( void **  pItem,
EFbxType  pValueType 
)

Removes one item from the data buffer.

Parameters:
pItemThe first item who equals pItem is to be removed
pValueTypeData type of the item
Returns:
True if the item is removed successfully, false otherwise
bool GetAt ( int  pIndex,
void **  pItem,
EFbxType  pValueType 
) const

Returns the specified item's value.

Parameters:
pIndexIndex of the item
pItemPlace to hold the item's value
pValueTypeData type of the item
Returns:
True if the item's value is returned successfully, false otherwise
Remarks:
If the index is invalid, pItem is set to zero.
bool GetFirst ( void **  pItem,
EFbxType  pValueType 
) const

Returns the first item's value.

Parameters:
pItemPlace to hold the item's value
pValueTypeData type of the item
Returns:
True if the item's value is returned successfully, false otherwise
bool GetLast ( void **  pItem,
EFbxType  pValueType 
) const

Returns the last item's value.

Parameters:
pItemPlace to hold the item's value
pValueTypeData type of the item
Returns:
True if the item's value is returned successfully, false otherwise
int Find ( void const *  pItem,
EFbxType  pValueType 
) const

Searches for an item in the data buffer.

Parameters:
pItemThe value of the item for which to search.
pValueTypeData type of the item
Returns:
The index of the item found, -1 if not found.
Remarks:
The index of the first item whose value equals pItem is returned.
int FindAfter ( int  pAfterIndex,
void const *  pItem,
EFbxType  pValueType 
) const

Searches for an item after the specified index in the data buffer.

Parameters:
pAfterIndexThe specified index after which the searching begins
pItemThe value of the item for which to search, the searching begins after pAfterIndex.
pValueTypeData type of the item
Returns:
The index of the item found, -1 if not found.
Remarks:
The index of the first item whose value equals pItem is returned.
int FindBefore ( int  pBeforeIndex,
void const *  pItem,
EFbxType  pValueType 
) const

Searches for an item before the specified index in the data buffer.

Parameters:
pBeforeIndexThe specified index before which the searching begins
pItemThe value of the item for which to search, the searching begins before pBeforeIndex.
pValueTypeThe item's data type.
Returns:
The index of the item found, -1 if not found.
Remarks:
The index of the first item whose value equals pItem is returned.
bool IsEqual ( const FbxLayerElementArray pArray) const

Equivalence operator.

Parameters:
pArrayArray compared to this one
Returns:
True if equal. false otherwise.
int Add ( T const &  pItem) [inline]

Appends a new item to the end of the data buffer.

Parameters:
pItemThe new item to be added
Returns:
The index of the new item

Reimplemented in FbxLayerElementArrayTemplate< T >.

Definition at line 636 of file fbxlayer.h.

{ return Add((void const*)&pItem, FbxTypeOf(pItem)); }
int InsertAt ( int  pIndex,
T const &  pItem 
) [inline]

Inserts a new item at the specified position of the data buffer.

Parameters:
pIndexThe specified position
pItemThe new item to be inserted
Returns:
The index of the inserted item
Remarks:
The input index must be within valid range and no error will be thrown if it is invalid.

Reimplemented in FbxLayerElementArrayTemplate< T >.

Definition at line 644 of file fbxlayer.h.

{ return InsertAt(pIndex, (void const*)&pItem, FbxTypeOf(pItem)); }
void SetAt ( int  pIndex,
T const &  pItem 
) [inline]

Sets the value of the specified item.

Parameters:
pIndexThe index of the item to be updated.
pItemThe item whose value is copied to pIndex'th item
Remarks:
The input index must be within valid range and no error will be thrown if it is invalid.

Reimplemented in FbxLayerElementArrayTemplate< T >.

Definition at line 651 of file fbxlayer.h.

{ SetAt(pIndex, (void const*)&pItem, FbxTypeOf(pItem)); }
void SetLast ( T const &  pItem) [inline]

Sets the value of the last item.

Parameters:
pItemThe item whose value is copied to the last item
Remarks:
The array should contain at least one item and no error will be thrown if it is empty.

Reimplemented in FbxLayerElementArrayTemplate< T >.

Definition at line 657 of file fbxlayer.h.

{ SetLast((void const*)&pItem, FbxTypeOf(pItem)); }
void RemoveAt ( int  pIndex,
T *  pItem 
) [inline]

Removes the specified item from the data buffer.

Parameters:
pIndexThe index of the item to be removed
pItemPlace to hold the value of the removed item.
Remarks:
The input index must be within valid range and no error will be thrown if it is invalid.

Definition at line 664 of file fbxlayer.h.

{ RemoveAt(pIndex, (void**)&pItem, FbxTypeOf(*pItem)); }
void RemoveLast ( T *  pItem) [inline]

Removes the last item from the data buffer.

Parameters:
pItemPlace to hold the value of the removed item.
Remarks:
The array should contain at least one item and no error will be thrown if it is empty.

Definition at line 670 of file fbxlayer.h.

{ RemoveLast((void**)&pItem, FbxTypeOf(*pItem)); }
bool RemoveIt ( T *  pItem) [inline]

Removes one item from the data buffer.

Parameters:
pItemThe first item who equals pItem is to be removed
Returns:
True if the item is removed successfully, false otherwise

Definition at line 676 of file fbxlayer.h.

{ return RemoveIt((void**)&pItem, FbxTypeOf(*pItem)); }
bool GetAt ( int  pIndex,
T *  pItem 
) const [inline]

Returns the specified item's value.

Parameters:
pIndexIndex of the item
pItemPlace to hold the item's value
Returns:
True if the item's value is returned successfully, false otherwise
Remarks:
If the index is invalid, pItem is set to zero.

Definition at line 684 of file fbxlayer.h.

{ return GetAt(pIndex, (void**)&pItem, FbxTypeOf(*pItem)); }
bool GetFirst ( T *  pItem) const [inline]

Returns the first item's value.

Parameters:
pItemPlace to hold the item's value
Returns:
True if the item's value is returned successfully, false otherwise

Definition at line 690 of file fbxlayer.h.

{ return GetFirst((void**)&pItem, FbxTypeOf(*pItem)); }
bool GetLast ( T *  pItem) const [inline]

Returns the last item's value.

Parameters:
pItemPlace to hold the item's value
Returns:
True if the item's value is returned successfully, false otherwise

Definition at line 696 of file fbxlayer.h.

{ return GetLast((void**)&pItem, FbxTypeOf(*pItem)); }
int Find ( T const &  pItem) const [inline]

Searches for an item in the data buffer.

Parameters:
pItemThe value of the item for which to search.
Returns:
The index of the item found, -1 if not found.
Remarks:
The index of the first item whose value equals pItem is returned.

Definition at line 703 of file fbxlayer.h.

{ return Find((void const*)&pItem, FbxTypeOf(pItem)); }
int FindAfter ( int  pAfterIndex,
T const &  pItem 
) const [inline]

Searches for an item after the specified index in the data buffer.

Parameters:
pAfterIndexThe specified index after which the searching begins
pItemThe value of the item for which to search, the searching begins after pAfterIndex.
Returns:
The index of the item found, -1 if not found.
Remarks:
The index of the first item whose value equals pItem is returned.

Definition at line 711 of file fbxlayer.h.

{ return FindAfter(pAfterIndex, (void const*)&pItem, FbxTypeOf(pItem)); }
int FindBefore ( int  pBeforeIndex,
T const &  pItem 
) const [inline]

Searches for one item before the specified index in the data buffer.

Parameters:
pBeforeIndexThe specified index before which the searching begins
pItemThe value of the item for which to search, the searching begins before pBeforeIndex.
Returns:
The index of the item found, -1 if not found.
Remarks:
The index of the first item whose value equals pItem is returned.

Definition at line 719 of file fbxlayer.h.

{ return FindBefore(pBeforeIndex, (void const*)&pItem, FbxTypeOf(pItem)); }
void CopyTo ( FbxArray< T > &  pDst) [inline]

Copies the items in the data buffer to an array.

Parameters:
pDstThe destination array where the items are to be copied.

Definition at line 725 of file fbxlayer.h.

    {
        T src;
        T* srcPtr = &src;

        pDst.Clear();
        if (mDataType != FbxTypeOf(src))
        {
            SetStatus(LockAccessStatus::eUnsupportedDTConversion);
            return;
        }

        pDst.Resize(GetCount());
        for (int i = 0; i < GetCount(); i++)
        {
            if (GetAt(i, (void**)&srcPtr, mDataType))
            {
                pDst.SetAt(i, src);
            }
        }
        SetStatus(LockAccessStatus::eSuccess);
    }
void* GetDataPtr ( ) [protected]
void* GetReference ( int  pIndex,
EFbxType  pValueType 
) [protected]
void GetReferenceTo ( int  pIndex,
void **  pRef,
EFbxType  pValueType 
) [protected]
void SetStatus ( LockAccessStatus::ELockAccessStatus  pVal) const [inline, protected]

Definition at line 754 of file fbxlayer.h.

    {
        const_cast<FbxLayerElementArray*>(this)->mStatus = pVal;
    }
void SetImplementation ( void *  pImplementation) [protected]
void* GetImplementation ( ) [inline, protected]

Definition at line 760 of file fbxlayer.h.

{ return mImplementation; }
virtual void ConvertDataType ( EFbxType  pDataType,
void **  pDataPtr,
size_t *  pStride 
) [protected, virtual]

Member Data Documentation

EFbxType mDataType [protected]

Definition at line 763 of file fbxlayer.h.


The documentation for this class was generated from the following file:

FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray
FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray FbxLayerElementArray