0024023: Revamp the OCCT Handle -- ambiguity
[occt.git] / src / Aspect / Aspect_GenId.cdl
1 -- Created on: 1992-05-13
2 -- Created by: NW,JPB,CAL
3 -- Copyright (c) 1992-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
5 --
6 -- This file is part of Open CASCADE Technology software library.
7 --
8 -- This library is free software; you can redistribute it and/or modify it under
9 -- the terms of the GNU Lesser General Public License version 2.1 as published
10 -- by the Free Software Foundation, with special exception defined in the file
11 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 -- distribution for complete text of the license and disclaimer of any warranty.
13 --
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
16
17 class GenId from Aspect
18
19   ---Purpose: This class permits the creation and control of integer identifiers.
20
21 uses
22
23   ListOfInteger from TColStd
24
25 raises
26
27   IdentDefinitionError from Aspect
28
29 is
30
31   Create
32   returns GenId from Aspect;
33   ---Purpose: Creates an available set of identifiers with the lower bound 0 and the upper bound INT_MAX / 2.
34
35   Create (theLow, theUpper : Integer from Standard)
36   returns GenId from Aspect
37   ---Purpose: Creates an available set of identifiers with specified range.
38   -- Raises IdentDefinitionError if theUpper is less than theLow.
39   raises IdentDefinitionError from Aspect;
40
41   Free (me : in out);
42   ---Level: Internal
43   ---Purpose: Free all identifiers - make the whole range available again.
44
45   Free (me    : in out;
46         theId : Integer from Standard);
47   ---Purpose: Free specified identifier. Warning - method has no protection against double-freeing!
48
49   HasFree (me)
50   returns Boolean from Standard;
51   ---Purpose: Returns true if there are available identifiers in range.
52
53   Available (me)
54   returns Integer from Standard;
55   ---Purpose: Returns the number of available identifiers.
56
57   Lower (me)
58   returns Integer from Standard;
59   ---Purpose: Returns the lower identifier in range.
60
61   Next (me : in out)
62   returns Integer from Standard
63   ---Purpose: Returns the next available identifier.
64   -- Warning: Raises IdentDefinitionError if all identifiers are busy.
65   raises IdentDefinitionError from Aspect;
66
67   Upper (me)
68   returns Integer from Standard;
69   ---Purpose: Returns the upper identifier in range.
70
71 fields
72
73   myFreeCount  : Integer from Standard;      -- the current number of available identifiers in range, excluding freed numbers
74   myLength     : Integer from Standard;      -- the number of identifiers
75   myLowerBound : Integer from Standard;      -- the lower limit for identifiers
76   myUpperBound : Integer from Standard;      -- the upper limit for identifiers
77   myFreeIds    : ListOfInteger from TColStd; -- to save free identifiers
78
79 end GenId;