summaryrefslogtreecommitdiff
path: root/inc/TDF_CopyTool.hxx
blob: 924e1ea7aa67d8ee46645dfb5211dfe27333bc20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _TDF_CopyTool_HeaderFile
#define _TDF_CopyTool_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif

#ifndef _Handle_TDF_DataSet_HeaderFile
#include <Handle_TDF_DataSet.hxx>
#endif
#ifndef _Handle_TDF_RelocationTable_HeaderFile
#include <Handle_TDF_RelocationTable.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
class TDF_DataSet;
class TDF_RelocationTable;
class TDF_IDFilter;
class TDF_Label;
class TDF_LabelDataMap;
class TDF_AttributeDataMap;
class TDF_LabelMap;
class TDF_AttributeMap;


//! This class provides services to build, copy or <br>
//!          paste a set of information. <br>
//! <br>
//!          Copy methods: <br>
//!          ------------- <br>
//! <br>
//!          * Copy(aSourceDataSet, aTargetLabel, <br>
//!          aRelocationTable) copies a source DataSet under <br>
//!          its target place (see below: IMPORTANT NOTICE 1). <br>
//! <br>
//!          * Copy(aSourceDataSet, anTargetLabel, <br>
//!          aRelocationTable, aFilter) does the same job as <br>
//!          the previous method. But <aFilter> gives a list of <br>
//!          IDs for which a target attribute prevails over a <br>
//!          source one. In this special case, the source <br>
//!          attribute will be copied only if there will be no <br>
//!          target attribute. <br>
//! <br>
//! <br>
//!          IMPORTANT NOTICE : Label pre-binding <br>
//!          ------------------ <br>
//! <br>
//!          For it is possible to copy root labels in another <br>
//!          place in the same Data or in a different one with <br>
//!          other tags, it is necessary to inform the Copy <br>
//!          algorithm about the target place. To do so: <br>
//! <br>
//!          * first get or create new target root labels; <br>
//! <br>
//!          * then bind them with the source root labels using <br>
//!          the relocation table method: <br>
//!          SetRelocation(aSourceLabel, aTargetLabel); <br>
//! <br>
//!          * finally call Copy(...) with the relocation table <br>
//!          previously set. In this way, this method will take <br>
//!          these relocations in account. <br>
class TDF_CopyTool  {
public:

  void* operator new(size_t,void* anAddress) 
  {
    return anAddress;
  }
  void* operator new(size_t size) 
  {
    return Standard::Allocate(size); 
  }
  void  operator delete(void *anAddress) 
  {
    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
  }

  //!  Copy   <aSourceDataSet> with using  and  updating <br>
//!           <aRelocationTable>. This  method ignores   target <br>
//!          attributes privilege over source ones. <br>
  Standard_EXPORT   static  void Copy(const Handle(TDF_DataSet)& aSourceDataSet,const Handle(TDF_RelocationTable)& aRelocationTable) ;
  //!    Copy  <aSourceDataSet>  using      and updating <br>
//!          <aRelocationTable>. Use <aPrivilegeFilter> to give <br>
//!           a list  of   IDs for which  the target  attribute <br>
//!          prevails over the source one. <br>
  Standard_EXPORT   static  void Copy(const Handle(TDF_DataSet)& aSourceDataSet,const Handle(TDF_RelocationTable)& aRelocationTable,const TDF_IDFilter& aPrivilegeFilter) ;
  //!   Copy    <aSourceDataSet>   using and    updating <br>
//!          <aRelocationTable>. Use <aPrivilegeFilter> to give <br>
//!           a  list of IDs   for which  the target  attribute <br>
//!             prevails    over    the    source     one.   If <br>
//!            <setSelfContained>   is   set  to   true,  every <br>
//!          TDF_Reference will  be replaced  by the referenced <br>
//!          structure according to <aRefFilter>. <br>
//! <br>
//!          NB: <aRefFilter> is used only if <br>
//!          <setSelfContained> is true. <br>//! Internal root label copy recursive method. <br>
  Standard_EXPORT   static  void Copy(const Handle(TDF_DataSet)& aSourceDataSet,const Handle(TDF_RelocationTable)& aRelocationTable,const TDF_IDFilter& aPrivilegeFilter,const TDF_IDFilter& aRefFilter,const Standard_Boolean setSelfContained) ;





protected:





private:

  //! Internal root label copy recursive method. <br>
  Standard_EXPORT   static  void CopyLabels(const TDF_Label& aSLabel,TDF_Label& aTargetLabel,TDF_LabelDataMap& aLabMap,TDF_AttributeDataMap& aAttMap,const TDF_LabelMap& aSrcLabelMap,const TDF_AttributeMap& aSrcAttributeMap) ;
  //! Internal attribute copy method. <br>
  Standard_EXPORT   static  void CopyAttributes(const TDF_Label& aSLabel,TDF_Label& aTargetLabel,TDF_AttributeDataMap& aAttMap,const TDF_AttributeMap& aSrcAttributeMap) ;




};





// other Inline functions and methods (like "C++: function call" methods)


#endif