# ApplicationFramework
TKLCAF
TDF

# TDF_Data Class Reference

This class is used to manipulate a complete
independant, self sufficient data structure and
its services:
Access to the root label;
Opens, aborts, commits a transaction;
Generation and use of Delta, depending on the time.
This class uses a special allocator
(see LabelNodeAllocator() method)
for more efficient allocation of
objects in memory.
.

`#include <TDF_Data.hxx>`

## Public Member Functions

Standard_EXPORT | TDF_Data ()
| A new and empty Data structure. .
const TDF_Label | Root () const
| Returns the root label of the Data structure. .
Standard_EXPORT Standard_Integer | Transaction () const
| Returns the current transaction number. .
Standard_Integer | Time () const
| Returns the current tick. It is incremented each Commit. .
Standard_EXPORT Standard_Boolean | IsApplicable (const Handle(TDF_Delta)&aDelta) const
| Returns true if <adelta> is applicable HERE and NOW. .
Standard_EXPORT Handle_TDF_Delta | Undo (const Handle(TDF_Delta)&aDelta, const Standard_Boolean withDelta=Standard_False)
| Apply <adelta> to undo a set of attribute modifications. Optionnal <withdelta> set to True indiquates a Delta Set must be generated. (See above) .
Standard_EXPORT void | Destroy ()
| ~TDF_Data ()
Standard_Boolean | NotUndoMode () const
| Returns the undo mode status. .
Standard_EXPORT Standard_OStream & | Dump (Standard_OStream &anOS) const
| Dumps the Data on <astream>. .
Standard_OStream & | operator<< (Standard_OStream &anOS) const
void | AllowModification (const Standard_Boolean isAllowed)
| Sets modification mode. .
Standard_Boolean | IsModificationAllowed () const
| returns modification mode.
const TDF_HAllocator & | LabelNodeAllocator () const

Returns TDF_HAllocator, which is an
incremental allocator used by
TDF_LabelNode.
This allocator is used to
manage TDF_LabelNode objects,
but it can also be used for
allocating memory to
application-specific data (be
careful because this
allocator does not release
the memory).
The benefits of this
allocation scheme are
noticeable when dealing with
large OCAF documents, due to:
1. Very quick allocation of
objects (memory heap is not
used, the algorithm that
replaces it is very simple).
2. Very quick destruction of
objects (memory is released not
by destructors of TDF_LabelNode,
but rather by the destructor of
TDF_Data).
3. TDF_LabelNode objects do not
fragmentize the memory; they are
kept compactly in a number of
arrays of 16K each.
4. Swapping is reduced on large
data, because each document now
occupies a smaller number of
memory pages.
.

Standard_EXPORT const | Handle (Standard_Type)&DynamicType() const

## Private Member Functions

Standard_EXPORT Standard_Integer | OpenTransaction ()
| Increments the transaction number and returns it. .
Standard_EXPORT Handle_TDF_Delta | CommitTransaction (const Standard_Boolean withDelta=Standard_False)
| Decrements the transaction number and commits the modifications. Raises if there is no current transaction. Optionnal <withdelta> set to True indiquates a Delta must be generated. .
Standard_EXPORT Handle_TDF_Delta | CommitUntilTransaction (const Standard_Integer untilTransaction, const Standard_Boolean withDelta=Standard_False)
| Decrements the transaction number and commits the modifications until AND including the transaction <untiltransaction>. .
Standard_EXPORT void | AbortTransaction ()
| Decrements the transaction number and forgets the modifications. Raises if there is no current transaction. .
Standard_EXPORT void | AbortUntilTransaction (const Standard_Integer untilTransaction)
| Decrements the transaction number and forgets the modifications until AND including the transaction <untiltransaction>. .
Standard_EXPORT Standard_Integer | CommitTransaction (const TDF_Label &aLabel, const Handle(TDF_Delta)&aDelta, const Standard_Boolean withDelta)
| Decrements the transaction number and commits the modifications. Used to implement the recursif commit process. The returned boolean says how many attributes (new, modified or deleted) has been committed from the previous transaction into the current one. .

## Private Attributes

TDF_LabelNodePtr | myRoot
Standard_Integer | myTransaction
Standard_Integer | myNbTouchedAtt
Standard_Boolean | myNotUndoMode
Standard_Integer | myTime
TColStd_StackOfInteger | myTimes
TDF_HAllocator | myLabelNodeAllocator
Standard_Boolean | myAllowModification

## Constructor & Destructor Documentation

Standard_EXPORT TDF_Data::TDF_Data | ( |  | ) |

TDF_Data::~TDF_Data | ( |  | ) | `[inline]`

## Member Function Documentation

Standard_EXPORT void TDF_Data::AbortTransaction | ( |  | ) | `[private]`

Standard_EXPORT void TDF_Data::AbortUntilTransaction | ( | const Standard_Integer | untilTransaction | ) | `[private]`

void TDF_Data::AllowModification | ( | const Standard_Boolean | isAllowed | ) | `[inline]`

Standard_EXPORT Standard_Integer TDF_Data::CommitTransaction | ( | const TDF_Label & | aLabel,
|  | const Handle(TDF_Delta)& | aDelta,
|  | const Standard_Boolean | withDelta
| ) | `[private]`

Standard_EXPORT Handle_TDF_Delta TDF_Data::CommitTransaction | ( | const Standard_Boolean | withDelta = `Standard_False` | ) | `[private]`

Standard_EXPORT Handle_TDF_Delta TDF_Data::CommitUntilTransaction | ( | const Standard_Integer | untilTransaction,
|  | const Standard_Boolean | withDelta = `Standard_False`
| ) | `[private]`

Standard_EXPORT void TDF_Data::Destroy | ( |  | ) |

Standard_EXPORT Standard_OStream& TDF_Data::Dump | ( | Standard_OStream & | anOS | ) | const

Standard_EXPORT const TDF_Data::Handle | ( | Standard_Type |  | ) | const

Standard_EXPORT Standard_Boolean TDF_Data::IsApplicable | ( | const Handle(TDF_Delta)& | aDelta | ) | const

Standard_Boolean TDF_Data::IsModificationAllowed | ( |  | ) | const`[inline]`

const TDF_HAllocator& TDF_Data::LabelNodeAllocator | ( |  | ) | const

Standard_Boolean TDF_Data::NotUndoMode | ( |  | ) | const`[inline]`

Standard_EXPORT Standard_Integer TDF_Data::OpenTransaction | ( |  | ) | `[private]`

Standard_OStream& TDF_Data::operator<< | ( | Standard_OStream & | anOS | ) | const`[inline]`

const TDF_Label TDF_Data::Root | ( |  | ) | const`[inline]`

Standard_Integer TDF_Data::Time | ( |  | ) | const`[inline]`

Standard_Integer TDF_Data::Transaction | ( |  | ) | const`[inline]`

Standard_EXPORT Handle_TDF_Delta TDF_Data::Undo | ( | const Handle(TDF_Delta)& | aDelta,
|  | const Standard_Boolean | withDelta = `Standard_False`
| ) |

## Field Documentation

Standard_Boolean TDF_Data::myAllowModification`[private]`

TDF_HAllocator TDF_Data::myLabelNodeAllocator`[private]`

Standard_Integer TDF_Data::myNbTouchedAtt`[private]`

Standard_Boolean TDF_Data::myNotUndoMode`[private]`

TDF_LabelNodePtr TDF_Data::myRoot`[private]`

Standard_Integer TDF_Data::myTime`[private]`

TColStd_StackOfInteger TDF_Data::myTimes`[private]`

Standard_Integer TDF_Data::myTransaction`[private]`

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

- TDF_Data.hxx
- TDF_Data.lxx