0023483: Use appropriate type for handling integer time
[occt.git] / src / Standard / Standard.cdl
1 -- Created on: 1991-09-05
2 -- Created by: J.P. TIRAUlt
3 -- Copyright (c) 1991-1999 Matra Datavision
4 -- Copyright (c) 1999-2012 OPEN CASCADE SAS
5 --
6 -- The content of this file is subject to the Open CASCADE Technology Public
7 -- License Version 6.5 (the "License"). You may not use the content of this file
8 -- except in compliance with the License. Please obtain a copy of the License
9 -- at http://www.opencascade.org and read it completely before using this file.
10 --
11 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 --
14 -- The Original Code and all software distributed under the License is
15 -- distributed on an "AS IS" basis, without warranty of any kind, and the
16 -- Initial Developer hereby disclaims all such warranties, including without
17 -- limitation, any warranties of merchantability, fitness for a particular
18 -- purpose or non-infringement. Please see the License for the specific terms
19 -- and conditions governing the rights and limitations under the License.
20
21 --              C. LEYNADIER 
22
23 package Standard
24
25     ---Purpose: 
26     --   The package Standard provides the minimum services necessary 
27     --   for other toolkits to handle persistent and transient objects. 
28     --   It is the Standard run-time encapsulation of the CAS.CADE 
29     --   database, that is, it defines a single programming interface 
30     --   for creating and accessing persistent objects manipulated by 
31     --   handles.
32
33
34 is
35     enumeration InternalType is
36                 Void,          -- TYPUND     0x00000000  /* Undefined    */
37                 Char,          -- TYPIT1     0x00010001  /* Byte         */
38                 ExtChar,       -- TYPIT2     0x00020001  /* Integer*2    */
39                 LongInt,       -- TYPIT4     0x00040001  /* Integer*4    */
40                 Bool,          -- TYPLO4     0x00040002  /* Logical*4    */
41                 Float,         -- TYPRE4     0x00040004  /* Real*4       */
42                 LongDouble,    -- TYPRE8     0x00080004  /* Real*8       */
43                 String,        -- TYPCHR     0x00000010  /* Character    */
44                 EString,       -- TYPCHREXT  0x00000011  /* Character    */
45                 EntryAddress,  -- TYPENT     0x00040020  /* Function address */
46                 DataAddress,   -- TYPDAD     0x00040080  /* Data address */
47                 EngineHandle,  -- TYPHDLE    0x00004000  /* Handle       */
48                 Long64,        -- TYPIT8     0x00080001  /* Integer*8    */
49                 Array;         -- TYPARR     0x00008000  /* Tableau      */
50
51     enumeration WayOfLife is IsNothing, IsAddress, IsTransient, IsPersistent, IsNotLoaded;
52     enumeration KindOfType is IsUnKnown, IsClass, IsEnumeration, IsPrimitive, IsImported, IsPackage;
53     enumeration HandlerStatus is HandlerVoid, HandlerJumped, HandlerProcessed;
54
55     imported IStream;
56     imported OStream;
57     imported SStream;
58     imported UUID;
59     imported JmpBuf;
60     imported ThreadId;
61
62     primitive CString;
63     primitive ExtString;
64     primitive Address;
65     primitive Size;
66     primitive PByte;
67     primitive PCharacter;
68     primitive PExtCharacter;
69
70     deferred class ErrorHandlerCallback;
71     class ErrorHandler;
72     
73     class AncestorIterator;
74     
75     deferred class Storable ;
76         primitive Boolean      inherits Storable;
77         primitive Character    inherits Storable;
78         primitive ExtCharacter inherits Storable;
79         primitive Integer      inherits Storable;
80         primitive Byte         inherits Storable;
81         primitive Real         inherits Storable;
82         primitive ShortReal    inherits Storable;
83         primitive Time         inherits Storable;
84         primitive OId          inherits Storable;
85
86         deferred class Persistent ; -- inherits Storable
87         class GUID;     -- inherits Storable
88
89     deferred class Transient ;
90             class Type; -- inherits Transient
91             class Failure; --  inherits Transient
92                 exception AbortiveTransaction inherits Failure;
93                 exception DomainError inherits Failure;
94                     exception ConstructionError inherits DomainError;
95                     exception NullObject inherits DomainError;
96                     exception NoSuchObject inherits DomainError;
97                     exception NoMoreObject inherits DomainError;
98                     exception ImmutableObject inherits DomainError;
99                     exception TypeMismatch inherits DomainError;
100                     exception MultiplyDefined inherits DomainError;
101                     exception DimensionError inherits DomainError;
102                         exception DimensionMismatch inherits DimensionError;
103                     exception RangeError inherits DomainError;
104                         exception OutOfRange inherits RangeError;
105                         exception NullValue inherits RangeError;
106                         exception NegativeValue inherits RangeError;
107                 exception NumericError inherits Failure;
108                     exception Underflow inherits NumericError;
109                     exception Overflow inherits NumericError;
110                     exception DivideByZero inherits NumericError;
111                 exception ProgramError inherits Failure;
112                     exception NotImplemented inherits ProgramError;
113                     exception OutOfMemory inherits ProgramError;
114                 exception LicenseError inherits Failure;
115                     exception LicenseNotFound inherits LicenseError;
116                     exception TooManyUsers inherits LicenseError;
117
118     pointer PErrorHandler  to ErrorHandler; 
119     
120     
121     -- 
122     --  Mutex: a class to synchronize access to shared data 
123     --  from threads within one process
124     --
125     imported Mutex;
126     
127     -- 
128     --  Memory manager  
129     --
130     Allocate (aSize: Size from Standard)  
131         returns Address from Standard; 
132     ---Purpose:  Allocates memory blocks  
133     --           aSize - bytes to  allocate 
134     
135     Free  (aStorage:in out Address from Standard); 
136     ---Purpose:  Deallocates memory blocks 
137     --           aStorage - previously allocated memory block to be freed                
138
139     Reallocate(aStorage: in out Address from Standard;
140                aNewSize: Size from Standard)  
141         returns Address from Standard; 
142     ---Purpose:  Reallocates memory blocks 
143     --           aStorage - previously allocated memory block 
144     --           aNewSize - new size in bytes 
145      
146     Purge returns Integer from Standard; 
147     ---Purpose:  Deallocates the storage retained on the free list 
148     --           and clears the list. 
149     --           Returns non-zero if some memory has been actually freed.
150
151     IsReentrant returns Boolean from Standard;
152     ---Purpose: Returns boolean flag indicating whether OCCT is
153     --          operating in reentrant mode. This flag affects OCCT 
154     --          memory manager, exception and signal handling,
155     --          operations with handles etc., making them thread-safe.
156     --
157     --          By default, this flag is set to False, in order 
158     --          to avoid performance reduction due to locking.
159     --
160     --          In multithreaded applications this flag must be set to 
161     --          True, either by calling method SetReentrant(),
162     --          or by defining environment variable MMGT_REENTRANT.
163
164     SetReentrant (isReentrant: Boolean from Standard);
165     ---Purpose: Sets boolean flag indicating whether OCCT is
166     --          operating in reentrant mode. 
167     --          See method IsReentrant() for more information.
168     --          Note: This method may be called only when no any other
169     --                thread using OCCT exists
170
171 end Standard;