This file is indexed.

/usr/include/oce/XCAFDoc_ShapeTool.hxx is in liboce-ocaf-dev 0.18.2-2build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
// 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 _XCAFDoc_ShapeTool_HeaderFile
#define _XCAFDoc_ShapeTool_HeaderFile

#include <Standard.hxx>
#include <Standard_DefineHandle.hxx>
#include <Handle_XCAFDoc_ShapeTool.hxx>

#include <XCAFDoc_DataMapOfShapeLabel.hxx>
#include <Standard_Boolean.hxx>
#include <TDF_Attribute.hxx>
#include <Standard_Integer.hxx>
#include <Standard_OStream.hxx>
#include <Handle_TDF_Attribute.hxx>
#include <Handle_TDF_RelocationTable.hxx>
#include <Handle_XCAFDoc_GraphNode.hxx>
class Standard_GUID;
class TDF_Label;
class TopoDS_Shape;
class TDF_LabelSequence;
class TopLoc_Location;
class TDF_Attribute;
class TDF_RelocationTable;
class TColStd_SequenceOfHAsciiString;
class XCAFDoc_GraphNode;
class TDF_AttributeSequence;
class TopTools_SequenceOfShape;


//! A tool to store shapes in an XDE
//! document in the form of assembly structure, and to maintain this structure.
//! Attribute containing Shapes section of DECAF document.
//! Provide tools for management of Shapes section.
//! The API provided by this class allows to work with this
//! structure regardless of its low-level implementation.
//! All the shapes are stored on child labels of a main label which is
//! XCAFDoc_DocumentTool::LabelShapes(). The label for assembly also has
//! sub-labels, each of which represents the instance of
//! another shape in that assembly (component). Such sub-label
//! stores reference to the label of the original shape in the form
//! of TDataStd_TreeNode with GUID XCAFDoc::ShapeRefGUID(), and its
//! location encapsulated into the NamedShape.
//! For correct work with an XDE document, it is necessary to use
//! methods for analysis and methods for working with shapes.
//! For example:
//! if ( STool->IsAssembly(aLabel) )
//! { Standard_Boolean subchilds = Standard_False; (default)
//! Standard_Integer nbc = STool->NbComponents
//! (aLabel[,subchilds]);
//! }
//! If subchilds is True, commands also consider sub-levels. By
//! default, only level one is checked.
//! In this example, number of children from the first level of
//! assembly will be returned. Methods for creation and initialization:
//! Constructor:
//! XCAFDoc_ShapeTool::XCAFDoc_ShapeTool()
//! Getting a guid:
//! Standard_GUID GetID ();
//! Creation (if does not exist) of ShapeTool on label L:
//! Handle(XCAFDoc_ShapeTool) XCAFDoc_ShapeTool::Set(const TDF_Label& L)
//! Analyze whether shape is a simple shape or an instance or a
//! component of an assembly or it is an assembly ( methods of analysis).
//! For example:
//! STool->IsShape(aLabel) ;
//! Analyze that the label represents a shape (simple
//! shape, assembly or reference) or
//! STool->IsTopLevel(aLabel);
//! Analyze that the label is a label of a top-level shape.
//! Work with simple shapes, assemblies and instances (
//! methods for work with shapes).
//! For example:
//! Add shape:
//! Standard_Boolean makeAssembly;
//! // True to interpret a Compound as an Assembly, False to take it
//! as a whole
//! aLabel = STool->AddShape(aShape, makeAssembly);
//! Get shape:
//! TDF_Label aLabel...
//! // A label must be present if
//! (aLabel.IsNull()) { ... no such label : abandon .. }
//! TopoDS_Shape aShape;
//! aShape = STool->GetShape(aLabel);
//! if (aShape.IsNull())
//! { ... this label is not for a Shape ... }
//! To get a label from shape.
//! Standard_Boolean findInstance = Standard_False;
//! (this is default value)
//! aLabel = STool->FindShape(aShape [,findInstance]);
//! if (aLabel.IsNull())
//! { ... no label found for this shape ... }
class XCAFDoc_ShapeTool : public TDF_Attribute
{

public:

  
  Standard_EXPORT static  const  Standard_GUID& GetID() ;
  
  //! Create (if not exist) ShapeTool from XCAFDoc on <L>.
  Standard_EXPORT static   Handle(XCAFDoc_ShapeTool) Set (const TDF_Label& L) ;
  
  //! Creates an empty tool
  //! Creates a tool to work with a document <Doc>
  //! Attaches to label XCAFDoc::LabelShapes()
  Standard_EXPORT XCAFDoc_ShapeTool();
  
  //! Returns True if the label is a label of top-level shape,
  //! as opposed to component of assembly or subshape
  Standard_EXPORT   Standard_Boolean IsTopLevel (const TDF_Label& L)  const;
  
  //! Returns True if the label is not used by any assembly, i.e.
  //! contains sublabels which are assembly components
  //! This is relevant only if IsShape() is True
  //! (There  is  no  Father TreeNode on  this  <L>)
  Standard_EXPORT static   Standard_Boolean IsFree (const TDF_Label& L) ;
  
  //! Returns True if the label represents a shape (simple shape,
  //! assembly or reference)
  Standard_EXPORT static   Standard_Boolean IsShape (const TDF_Label& L) ;
  
  //! Returns True if the label is a label of simple shape
  Standard_EXPORT static   Standard_Boolean IsSimpleShape (const TDF_Label& L) ;
  
  //! Return true if <L> is a located instance of other shape
  //! i.e. reference
  Standard_EXPORT static   Standard_Boolean IsReference (const TDF_Label& L) ;
  
  //! Returns True if the label is a label of assembly, i.e.
  //! contains sublabels which are assembly components
  //! This is relevant only if IsShape() is True
  Standard_EXPORT static   Standard_Boolean IsAssembly (const TDF_Label& L) ;
  
  //! Return true if <L> is reference serving as component
  //! of assembly
  Standard_EXPORT static   Standard_Boolean IsComponent (const TDF_Label& L) ;
  
  //! Returns True if the label is a label of compound, i.e.
  //! contains some sublabels
  //! This is relevant only if IsShape() is True
  Standard_EXPORT static   Standard_Boolean IsCompound (const TDF_Label& L) ;
  
  //! Return true if <L> is subshape of the top-level shape
  Standard_EXPORT static   Standard_Boolean IsSubShape (const TDF_Label& L) ;
  
  //! Checks whether shape <sub> is subshape of shape stored on
  //! label shapeL
  Standard_EXPORT   Standard_Boolean IsSubShape (const TDF_Label& shapeL, const TopoDS_Shape& sub)  const;
  
  Standard_EXPORT   Standard_Boolean SearchUsingMap (const TopoDS_Shape& S, TDF_Label& L, const Standard_Boolean findWithoutLoc, const Standard_Boolean findSubshape)  const;
  
  //! General tool to find a (sub) shape in the document
  //! * If findInstance is True, and S has a non-null location,
  //! first tries to find the shape among the top-level shapes
  //! with this location
  //! * If not found, and findComponent is True, tries to find the shape
  //! among the components of assemblies
  //! * If not found, tries to find the shape without location
  //! among top-level shapes
  //! * If not found and findSubshape is True, tries to find a
  //! shape as a subshape of top-level simple shapes
  //! Returns False if nothing is found
  Standard_EXPORT   Standard_Boolean Search (const TopoDS_Shape& S, TDF_Label& L, const Standard_Boolean findInstance = Standard_True, const Standard_Boolean findComponent = Standard_True, const Standard_Boolean findSubshape = Standard_True)  const;
  
  //! Returns the label corresponding to shape S
  //! (searches among top-level shapes, not including subcomponents
  //! of assemblies)
  //! If findInstance is False (default), searches for the
  //! non-located shape (i.e. among original shapes)
  //! If findInstance is True, searches for the shape with the same
  //! location, including shape instances
  //! Return True if <S> is found.
  Standard_EXPORT   Standard_Boolean FindShape (const TopoDS_Shape& S, TDF_Label& L, const Standard_Boolean findInstance = Standard_False)  const;
  
  //! Does the same as previous method
  //! Returns Null label if not found
  Standard_EXPORT   TDF_Label FindShape (const TopoDS_Shape& S, const Standard_Boolean findInstance = Standard_False)  const;
  
  //! To get TopoDS_Shape from shape's label
  //! For component, returns new shape with correct location
  //! Returns False if label does not contain shape
  Standard_EXPORT static   Standard_Boolean GetShape (const TDF_Label& L, TopoDS_Shape& S) ;
  
  //! To get TopoDS_Shape from shape's label
  //! For component, returns new shape with correct location
  //! Returns Null shape if label does not contain shape
  Standard_EXPORT static   TopoDS_Shape GetShape (const TDF_Label& L) ;
  
  //! Creates new (empty) top-level shape.
  //! Initially it holds empty TopoDS_Compound
  Standard_EXPORT   TDF_Label NewShape()  const;
  
  //! Sets representation (TopoDS_Shape) for top-level shape
  Standard_EXPORT   void SetShape (const TDF_Label& L, const TopoDS_Shape& S) ;
  
  //! Adds a new top-level (creates and returns a new label)
  //! If makeAssembly is True, treats TopAbs_COMPOUND shapes
  //! as assemblies (creates assembly structure).
  //! NOTE: <makePrepare> replace components without location
  //! in assmebly by located components to avoid some problems.
  //! If AutoNaming() is True then automatically attaches names.
  Standard_EXPORT   TDF_Label AddShape (const TopoDS_Shape& S, const Standard_Boolean makeAssembly = Standard_True, const Standard_Boolean makePrepare = Standard_True) ;
  
  //! Removes shape (whole label and all its sublabels)
  //! If removeCompletely is true, removes complete shape
  //! If removeCompletely is false, removes instance(location) only
  //! Returns False (and does nothing) if shape is not free
  //! or is not top-level shape
  Standard_EXPORT   Standard_Boolean RemoveShape (const TDF_Label& L, const Standard_Boolean removeCompletely = Standard_True)  const;
  
  //! set hasComponents into false
  Standard_EXPORT   void Init() ;
  
  //! Sets auto-naming mode to <V>. If True then for added
  //! shapes, links, assemblies and SHUO's, the TDataStd_Name attribute
  //! is automatically added. For shapes it contains a shape type
  //! (e.g. "SOLID", "SHELL", etc); for links it has a form
  //! "=>[0:1:1:2]" (where a tag is a label containing a shape
  //! without a location); for assemblies it is "ASSEMBLY", and
  //! "SHUO" for SHUO's.
  //! This setting is global; it cannot be made a member function
  //! as it is used by static methods as well.
  //! By default, auto-naming is enabled.
  //! See also AutoNaming().
  Standard_EXPORT static   void SetAutoNaming (const Standard_Boolean V) ;
  
  //! Returns current auto-naming mode. See SetAutoNaming() for
  //! description.
  Standard_EXPORT static   Standard_Boolean AutoNaming() ;
  
  //! recursive
  Standard_EXPORT   void ComputeShapes (const TDF_Label& L) ;
  
  //! Compute a sequence of simple shapes
  Standard_EXPORT   void ComputeSimpleShapes() ;
  
  //! Returns a sequence of all top-level shapes
  Standard_EXPORT   void GetShapes (TDF_LabelSequence& Labels)  const;
  
  //! Returns a sequence of all top-level shapes
  //! which are free (i.e. not referred by any other)
  Standard_EXPORT   void GetFreeShapes (TDF_LabelSequence& FreeLabels)  const;
  
  //! Returns list of labels which refer shape L as component
  //! Returns number of users (0 if shape is free)
  Standard_EXPORT static   Standard_Integer GetUsers (const TDF_Label& L, TDF_LabelSequence& Labels, const Standard_Boolean getsubchilds = Standard_False) ;
  
  //! Returns location of instance
  Standard_EXPORT static   TopLoc_Location GetLocation (const TDF_Label& L) ;
  
  //! Returns label which corresponds to a shape referred by L
  //! Returns False if label is not reference
  Standard_EXPORT static   Standard_Boolean GetReferredShape (const TDF_Label& L, TDF_Label& Label) ;
  
  //! Returns number of Assembles components
  Standard_EXPORT static   Standard_Integer NbComponents (const TDF_Label& L, const Standard_Boolean getsubchilds = Standard_False) ;
  
  //! Returns list of components of assembly
  //! Returns False if label is not assembly
  Standard_EXPORT static   Standard_Boolean GetComponents (const TDF_Label& L, TDF_LabelSequence& Labels, const Standard_Boolean getsubchilds = Standard_False) ;
  
  //! Adds a component given by its label and location to the assembly
  //! Note: assembly must be IsAssembly() or IsSimpleShape()
  Standard_EXPORT   TDF_Label AddComponent (const TDF_Label& assembly, const TDF_Label& comp, const TopLoc_Location& Loc)  const;
  
  //! Adds a shape (located) as a component to the assembly
  //! If necessary, creates an additional top-level shape for
  //! component and return the Label of component.
  //! If expand is True and component is Compound, it will
  //! be created as assembly also
  //! Note: assembly must be IsAssembly() or IsSimpleShape()
  Standard_EXPORT   TDF_Label AddComponent (const TDF_Label& assembly, const TopoDS_Shape& comp, const Standard_Boolean expand = Standard_False) ;
  
  //! Removes a component from its assembly
  Standard_EXPORT   void RemoveComponent (const TDF_Label& comp)  const;
  
  //! Update an assembly at label <L>
  Standard_EXPORT   void UpdateAssembly (const TDF_Label& L)  const;
  
  //! Finds a label for subshape <sub> of shape stored on
  //! label shapeL
  //! Returns Null label if it is not found
  Standard_EXPORT   Standard_Boolean FindSubShape (const TDF_Label& shapeL, const TopoDS_Shape& sub, TDF_Label& L)  const;
  
  //! Adds a label for subshape <sub> of shape stored on
  //! label shapeL
  //! Returns Null label if it is not subshape
  Standard_EXPORT   TDF_Label AddSubShape (const TDF_Label& shapeL, const TopoDS_Shape& sub)  const;
  
  Standard_EXPORT   TDF_Label FindMainShapeUsingMap (const TopoDS_Shape& sub)  const;
  
  //! Performs a search among top-level shapes to find
  //! the shape containing <sub> as subshape
  //! Checks only simple shapes, and returns the first found
  //! label (which should be the only one for valid model)
  Standard_EXPORT   TDF_Label FindMainShape (const TopoDS_Shape& sub)  const;
  
  //! Returns list of labels identifying subshapes of the given shape
  //! Returns False if no subshapes are placed on that label
  Standard_EXPORT static   Standard_Boolean GetSubShapes (const TDF_Label& L, TDF_LabelSequence& Labels) ;
  
  //! returns the label under which shapes are stored
  Standard_EXPORT   TDF_Label BaseLabel()  const;
  
  Standard_EXPORT   void Dump (Standard_OStream& theDumpLog, const Standard_Boolean deep = Standard_False)  const;
  
  //! Print to ostream <theDumpLog> type of shape found on <L> label
  //! and the entry of <L>, with <level> tabs before.
  //! If <deep>, print also TShape and Location addresses
  Standard_EXPORT static   void DumpShape (Standard_OStream& theDumpLog, const TDF_Label& L, const Standard_Integer level = 0, const Standard_Boolean deep = Standard_False) ;
  
  Standard_EXPORT  const  Standard_GUID& ID()  const;
  
  Standard_EXPORT   void Restore (const Handle(TDF_Attribute)& with) ;
  
  Standard_EXPORT   Handle(TDF_Attribute) NewEmpty()  const;
  
  Standard_EXPORT   void Paste (const Handle(TDF_Attribute)& into, const Handle(TDF_RelocationTable)& RT)  const;
  
  //! Returns True if the label is a label of external references, i.e.
  //! there are some reference on the no-step files, which are
  //! described in document only their names
  Standard_EXPORT static   Standard_Boolean IsExternRef (const TDF_Label& L) ;
  
  //! Sets the names of references on the no-step files
  Standard_EXPORT   TDF_Label SetExternRefs (const TColStd_SequenceOfHAsciiString& SHAS)  const;
  
  //! Sets the names of references on the no-step files
  Standard_EXPORT   void SetExternRefs (const TDF_Label& L, const TColStd_SequenceOfHAsciiString& SHAS)  const;
  
  //! Gets the names of references on the no-step files
  Standard_EXPORT static   void GetExternRefs (const TDF_Label& L, TColStd_SequenceOfHAsciiString& SHAS) ;
  
  //! Sets the SHUO structure between upper_usage and next_usage
  //! create multy-level (if number of labels > 2) SHUO from first to last
  //! Initialise out <MainSHUOAttr> by main upper_usage SHUO attribute.
  //! Returns FALSE if some of labels in not component label
  Standard_EXPORT   Standard_Boolean SetSHUO (const TDF_LabelSequence& Labels, Handle(XCAFDoc_GraphNode)& MainSHUOAttr)  const;
  
  //! Returns founded SHUO GraphNode attribute <aSHUOAttr>
  //! Returns false in other case
  Standard_EXPORT static   Standard_Boolean GetSHUO (const TDF_Label& SHUOLabel, Handle(XCAFDoc_GraphNode)& aSHUOAttr) ;
  
  //! Returns founded SHUO GraphNodes of indicated component
  //! Returns false in other case
  Standard_EXPORT static   Standard_Boolean GetAllComponentSHUO (const TDF_Label& CompLabel, TDF_AttributeSequence& SHUOAttrs) ;
  
  //! Returns the sequence of labels of SHUO attributes,
  //! which is upper_usage for this next_usage SHUO attribute
  //! (that indicated by label)
  //! NOTE: returns upper_usages only on one level (not recurse)
  //! NOTE: do not clear the sequence before filling
  Standard_EXPORT static   Standard_Boolean GetSHUOUpperUsage (const TDF_Label& NextUsageL, TDF_LabelSequence& Labels) ;
  
  //! Returns the sequence of labels of SHUO attributes,
  //! which is next_usage for this upper_usage SHUO attribute
  //! (that indicated by label)
  //! NOTE: returns next_usages only on one level (not recurse)
  //! NOTE: do not clear the sequence before filling
  Standard_EXPORT static   Standard_Boolean GetSHUONextUsage (const TDF_Label& UpperUsageL, TDF_LabelSequence& Labels) ;
  
  //! Remove SHUO from component sublabel,
  //! remove all dependencies on other SHUO.
  //! Returns FALSE if cannot remove SHUO dependencies.
  //! NOTE: remove any styles that associated with this SHUO.
  Standard_EXPORT   Standard_Boolean RemoveSHUO (const TDF_Label& SHUOLabel)  const;
  
  //! Serach the path of labels in the document,
  //! that corresponds the component from any assembly
  //! Try to search the sequence of labels with location that
  //! produce this shape as component of any assembly
  //! NOTE: Clear sequence of labels before filling
  Standard_EXPORT   Standard_Boolean FindComponent (const TopoDS_Shape& theShape, TDF_LabelSequence& Labels)  const;
  
  //! Search for the component shape that styled by shuo
  //! Returns null shape if no any shape is found.
  Standard_EXPORT   TopoDS_Shape GetSHUOInstance (const Handle(XCAFDoc_GraphNode)& theSHUO)  const;
  
  //! Search for the component shape by labelks path
  //! and set SHUO structure for founded label structure
  //! Returns null attribute if no component in any assembly found.
  Standard_EXPORT   Handle(XCAFDoc_GraphNode) SetInstanceSHUO (const TopoDS_Shape& theShape)  const;
  
  //! Seaching for component shapes that styled by shuo
  //! Returns empty sequence of shape if no any shape is found.
  Standard_EXPORT   Standard_Boolean GetAllSHUOInstances (const Handle(XCAFDoc_GraphNode)& theSHUO, TopTools_SequenceOfShape& theSHUOShapeSeq)  const;
  
  //! Searchs the SHUO by labels of components
  //! from upper_usage componet to next_usage
  //! Returns null attribute if no SHUO found
  Standard_EXPORT static   Standard_Boolean FindSHUO (const TDF_LabelSequence& Labels, Handle(XCAFDoc_GraphNode)& theSHUOAttr) ;




  DEFINE_STANDARD_RTTI(XCAFDoc_ShapeTool)

protected:




private: 

  
  //! Adds a new top-level (creates and returns a new label)
  //! For internal use. Used by public method AddShape.
  Standard_EXPORT   TDF_Label addShape (const TopoDS_Shape& S, const Standard_Boolean makeAssembly = Standard_True) ;
  
  //! Makes a shape on label L to be a reference to shape refL
  //! with location loc
  Standard_EXPORT static   void MakeReference (const TDF_Label& L, const TDF_Label& refL, const TopLoc_Location& loc) ;

  XCAFDoc_DataMapOfShapeLabel myShapeLabels;
  XCAFDoc_DataMapOfShapeLabel mySubShapes;
  XCAFDoc_DataMapOfShapeLabel mySimpleShapes;
  Standard_Boolean hasSimpleShapes;


};







#endif // _XCAFDoc_ShapeTool_HeaderFile