summaryrefslogtreecommitdiff
path: root/inc/TDocStd_XLinkTool.hxx
blob: 92a19bb3edd4263e24cc9829cbd4655e6a6c6a86 (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
// 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 _TDocStd_XLinkTool_HeaderFile
#define _TDocStd_XLinkTool_HeaderFile

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

#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Handle_TDF_DataSet_HeaderFile
#include <Handle_TDF_DataSet.hxx>
#endif
#ifndef _Handle_TDF_RelocationTable_HeaderFile
#include <Handle_TDF_RelocationTable.hxx>
#endif
class TDF_DataSet;
class TDF_RelocationTable;
class TDF_Label;


//! This  tool class  is  used to copy  the content of <br>
//!            source label   under  target label.   Only child <br>
//!           labels and  attributes   of  source are   copied. <br>
//!          attributes located   out of source  scope are  not <br>
//!          copied by this algorithm. <br>
//!           Depending  of   the called  method  an   external <br>
//!          reference is set  in  the the target  document  to <br>
//!          registred the externallink. <br>
//!  Warning1: Nothing is provided in this class  about the <br>
//!          opportunity to copy, set a link or  update  it. <br>
//!          Such decisions must be under application control. <br>
//!  Warning2: If the document manages shapes, use after copy <br>
//!            TNaming::ChangeShapes(target,M) to make copy of <br>
//!            shapes. <br>
class TDocStd_XLinkTool  {
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); 
  }

  
  Standard_EXPORT   TDocStd_XLinkTool();
  //! Copies the content of the label <fromsource> to the label <intarget>. <br>
//!  The link is registred with an XLink attribute by <intarget> <br>
//!           label.  if  the    content  of <fromsource>   is  not <br>
//!          self-contained,  and/or <intarget> has already an XLink <br>
//!          attribute, an exception is raised. <br>
  Standard_EXPORT     void CopyWithLink(const TDF_Label& intarget,const TDF_Label& fromsource) ;
  //! Update the external reference set   at <L>. <br>
//!    Example <br>
//! Handle(TDocStd_Document) aDoc; <br>
//! if <br>
//! (!OCAFTest::GetDocument(1,aDoc)) return 1; <br>
//! Handle(TDataStd_Reference) aRef; <br>
//! TDocStd_XLinkTool xlinktool; <br>
//! if <br>
//! (!OCAFTest::Find(aDoc,2),TDataStd_Reference::GetID(),aRef) return 1; <br>
//! xlinktool.UpdateLink(aRef->Label()); <br>
//! Exceptions <br>
//! Standard_DomainError if <L> has no XLink attribute. <br>
  Standard_EXPORT     void UpdateLink(const TDF_Label& L) ;
  //!   Copy    the   content     of    <fromsource>   under <br>
//!          <intarget>. Noone link is registred. noone check is done. <br>
//! Example <br>
//!  Handle(TDocStd_Document) DOC, XDOC; <br>
//!  TDF_Label L, XL; <br>
//! TDocStd_XLinkTool xlinktool; <br>
//!  xlinktool.Copy(L,XL); <br>
//! Exceptions: <br>
//! Standard_DomainError if the contents of <br>
//! fromsource are not entirely in the scope of this <br>
//! label, in other words, are not self-contained. <br>
//! !!! ==> Warning: <br>
//! If the document manages shapes use the next way: <br>
//! TDocStd_XLinkTool xlinktool; <br>
//! xlinktool.Copy(L,XL); <br>
//! TopTools_DataMapOfShapeShape M; <br>
//! TNaming::ChangeShapes(target,M); <br>
  Standard_EXPORT   virtual  void Copy(const TDF_Label& intarget,const TDF_Label& fromsource) ;
  
  Standard_EXPORT     Standard_Boolean IsDone() const;
  
  Standard_EXPORT     Handle_TDF_DataSet DataSet() const;
  
  Standard_EXPORT     Handle_TDF_RelocationTable RelocationTable() const;





protected:



Standard_Boolean isDone;


private:



Handle_TDF_DataSet myDS;
Handle_TDF_RelocationTable myRT;


};





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


#endif