Integration of OCCT 6.5.0 from SVN
[occt.git] / src / IFSelect / IFSelect_WorkLibrary.cdl
1 -- File:        IFSelect_WorkLibrary.cdl
2 -- Created:     Fri Jan  8 19:05:42 1993
3 -- Author:      Christian CAILLET
4 --              <cky@sdsun1>
5 ---Copyright:    Matra Datavision 1993
6
7
8 deferred class WorkLibrary  from IFSelect  inherits Transient
9
10     ---Purpose : This class defines the (empty) frame which can be used to
11     --           enrich a XSTEP set with new capabilities
12     --           In particular, a specific WorkLibrary must give the way for
13     --           Reading a File into a Model, and Writing a Model to a File
14     --           Thus, it is possible to define several Work Libraries for each
15     --           norm, but recommanded to define one general class for each one :
16     --           this general class will define the Read and Write methods.
17     --           
18     --           Also a Dump service is provided, it can produce, according the
19     --           norm, either a parcel of a file for an entity, or any other
20     --           kind of informations relevant for the norm,
21
22 uses CString, 
23      Messenger from Message,
24      HArray1OfHAsciiString from Interface,
25      CheckIterator, InterfaceModel, Protocol from Interface,
26      EntityIterator, CopyTool,
27      AppliedModifiers, ContextWrite
28
29 is
30
31     Initialize;
32     ---Purpose : Required to initialise fields
33
34     ReadFile (me; name : CString;
35               model    : out mutable InterfaceModel;
36               protocol : Protocol from Interface)
37               returns Integer  is deferred;
38     ---Purpose : Gives the way to Read a File and transfer it to a Model
39     --           <mod> is the resulting Model, which has to be created by this
40     --           method. In case of error, <mod> must be returned Null
41     --           Return value is a status with free values.
42     --           Simply, 0 is for "Execution OK"
43     --           The Protocol can be used to work (e.g. create the Model, read
44     --           and recognize the Entities)
45
46     WriteFile (me; ctx : in out ContextWrite)
47             returns Boolean  is deferred;
48     ---Purpose : Gives the way to Write a File from a Model.
49     --           <ctx> contains all necessary informations : the model, the
50     --           protocol, the file name, and the list of File Modifiers to be
51     --           applied, also with restricted list of selected entities for
52     --           each one, if required.
53     --           In return, it brings the produced check-list
54     --           
55     --           The WorkLibrary has to query <applied> to get then run the
56     --           ContextWrite by looping like this (example) :
57     --             for (numap = 1; numap <= ctx.NbModifiers(); numap ++) {
58     --               ctx.SetModifier (numap);
59     --               cast ctx.FileModifier()  to specific type -> variable filemod
60     --               if (!filemod.IsNull()) filemod->Perform (ctx,writer);
61     --                 filemod then works with ctx. It can, either act on the
62     --                 model itself (for instance on its header), or iterate
63     --                 on selected entities (Start/Next/More/Value)
64     --                 it can call AddFail or AddWarning, as necessary
65     --             }
66
67     CopyModel (me;
68                original : InterfaceModel;
69                newmodel : mutable InterfaceModel;
70                list     : EntityIterator;
71                TC       : in out CopyTool)
72         returns Boolean  is virtual;
73     ---Purpose : Performs the copy of entities from an original model to a new
74     --           one. It must also copy headers if any. Returns True when done.
75     --           The provided default works by copying the individual entities
76     --           designated in the list, by using the general service class
77     --           CopyTool.
78     --           It can be redefined for a norm which, either implements Copy
79     --           by another way (do not forget to Bind each copied result with
80     --           its original entity in TC) and returns True, or does not know
81     --           how to copy and returns False
82
83
84     DumpEntity (me;
85                model    : InterfaceModel;
86                protocol : Protocol from Interface;
87                entity   : Transient;
88                S        : Messenger from Message;
89                level    : Integer)
90         is deferred;
91     ---Purpose : Gives the way of dumping an entity under a form comprehensive
92     --           for each norm. <model> helps to identify, number ... entities.
93     --           <level> is to be interpreted for each norm (because of the
94     --           formats which can be very different)
95
96     DumpEntity (me;
97                model    : InterfaceModel;
98                protocol : Protocol from Interface;
99                entity   : Transient;
100                S        : Messenger from Message);
101     ---Purpose : Calls deferred DumpEntity with the recorded default level
102
103     SetDumpLevels (me : mutable; def, max : Integer);
104     ---Purpose : Records a default level and a maximum value for level
105     --           level for DumpEntity can go between 0 and <max>
106     --           default value will be <def>
107
108     DumpLevels (me; def, max : out Integer);
109     ---Purpose : Returns the recorded default and maximum dump levels
110     --           If none was recorded, max is returned negative, def as zero
111
112     SetDumpHelp (me : mutable; level : Integer; help : CString);
113     ---Purpose : Records a short line of help for a level (0 - max)
114
115     DumpHelp (me; level : Integer) returns CString;
116     ---Purpose : Returns the help line recorded for <level>, or an empty string
117
118 fields
119
120     thelevdef : Integer;
121     thelevhlp : HArray1OfHAsciiString from Interface;
122
123 end WorkLibrary;