]> SALOME platform Git repositories - modules/geom.git/blob - src/NMTDS/NMTDS_CArray1OfIndexRange.hxx
Salome HOME
Porting to OCCT development version: Standard_PI -> M_PI
[modules/geom.git] / src / NMTDS / NMTDS_CArray1OfIndexRange.hxx
1 // Copyright (C) 2007-2011  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21
22 #ifndef _NMTDS_CArray1OfIndexRange_HeaderFile
23 #define _NMTDS_CArray1OfIndexRange_HeaderFile
24
25 #include <Basics_OCCTVersion.hxx>
26
27 #ifndef _Standard_Address_HeaderFile
28 #include <Standard_Address.hxx>
29 #endif
30 #ifndef _Standard_Integer_HeaderFile
31 #include <Standard_Integer.hxx>
32 #endif
33 #ifndef _Standard_Boolean_HeaderFile
34 #include <Standard_Boolean.hxx>
35 #endif
36
37 class Standard_OutOfRange;
38 class Standard_OutOfMemory;
39 class NMTDS_IndexRange;
40
41 #ifndef _Standard_HeaderFile
42 #include <Standard.hxx>
43 #endif
44 #ifndef _Standard_Macro_HeaderFile
45 #include <Standard_Macro.hxx>
46 #endif
47
48
49 class NMTDS_CArray1OfIndexRange  {
50
51 public:
52
53     void* operator new(size_t,void* anAddress) 
54       {
55         return anAddress;
56       }
57     void* operator new(size_t size) 
58       { 
59         return Standard::Allocate(size); 
60       }
61     void  operator delete(void *anAddress) 
62       { 
63         if (anAddress) Standard::Free((Standard_Address&)anAddress); 
64       }
65  // Methods PUBLIC
66  // 
67
68
69 Standard_EXPORT NMTDS_CArray1OfIndexRange(const Standard_Integer Length = 0,const Standard_Integer BlockLength = 5);
70
71
72 Standard_EXPORT   void Resize(const Standard_Integer theNewLength) ;
73
74
75 Standard_EXPORT   void Destroy() ;
76 ~NMTDS_CArray1OfIndexRange()
77 {
78   Destroy();
79 }
80
81
82
83 Standard_EXPORT   Standard_Integer Length() const;
84
85
86 Standard_EXPORT   Standard_Integer Extent() const;
87
88
89 Standard_EXPORT   Standard_Integer FactLength() const;
90
91
92 Standard_EXPORT   Standard_Integer Append(const NMTDS_IndexRange& Value) ;
93
94
95 Standard_EXPORT   void Remove(const Standard_Integer Index) ;
96
97
98 Standard_EXPORT  const NMTDS_IndexRange& Value(const Standard_Integer Index) const;
99  const NMTDS_IndexRange& operator ()(const Standard_Integer Index) const
100 {
101   return Value(Index);
102 }
103
104
105
106 Standard_EXPORT   NMTDS_IndexRange& ChangeValue(const Standard_Integer Index) ;
107   NMTDS_IndexRange& operator ()(const Standard_Integer Index) 
108 {
109   return ChangeValue(Index);
110 }
111
112 Standard_EXPORT   void SetBlockLength(const Standard_Integer aBL) ;
113 Standard_EXPORT   Standard_Integer BlockLength() const;
114
115 #if OCC_VERSION_LARGE > 0x06050200
116 Standard_EXPORT   void Purge();
117 #endif
118
119 protected:
120
121  // Methods PROTECTED
122  // 
123
124  // Fields PROTECTED
125  //
126
127 private: 
128
129  // Methods PRIVATE
130  // 
131 Standard_EXPORT NMTDS_CArray1OfIndexRange(const NMTDS_CArray1OfIndexRange& AnArray);
132
133
134 Standard_EXPORT   NMTDS_CArray1OfIndexRange& Assign(const NMTDS_CArray1OfIndexRange& Other) ;
135   NMTDS_CArray1OfIndexRange& operator =(const NMTDS_CArray1OfIndexRange& Other) 
136 {
137   return Assign(Other);
138 }
139
140 Standard_EXPORT   Standard_Boolean IsInvalidIndex(const Standard_Integer Index) const;
141
142  // Fields PRIVATE
143  //
144 Standard_Address myStart;
145 Standard_Integer myLength;
146 Standard_Integer myFactLength;
147 Standard_Integer myBlockLength;
148 Standard_Boolean myIsAllocated;
149 };
150
151 // other Inline functions and methods (like "C++: function call" methods)
152 //
153
154 #endif