summaryrefslogtreecommitdiff
path: root/inc/IntTools_MarkedRangeSet.hxx
blob: 25858f581ae04deba516a1855ee7bb33bdbc0f92 (plain)
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
// 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 _IntTools_MarkedRangeSet_HeaderFile
#define _IntTools_MarkedRangeSet_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif

#ifndef _TColStd_SequenceOfReal_HeaderFile
#include <TColStd_SequenceOfReal.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _TColStd_SequenceOfInteger_HeaderFile
#include <TColStd_SequenceOfInteger.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
class IntTools_CArray1OfReal;
class IntTools_Range;
class TColStd_SequenceOfInteger;


//! class MarkedRangeSet provides continuous set of ranges marked with flags <br>
class IntTools_MarkedRangeSet  {
public:

  void* operator new(size_t,void* anAddress) 
  {
    return anAddress;
  }
  void* operator new(size_t size) 
  {
    return Standard::Allocate(size); 
  }
  void  operator delete(void *anAddress) 
  {
    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
  }

  
//! Empty constructor <br>
  Standard_EXPORT   IntTools_MarkedRangeSet();
  
//! build set of ranges which consists of one range with <br>
//! boundary values theFirstBoundary and theLastBoundary <br>
  Standard_EXPORT   IntTools_MarkedRangeSet(const Standard_Real theFirstBoundary,const Standard_Real theLastBoundary,const Standard_Integer theInitFlag);
  
//! Build set of ranges based on the array of progressive sorted values <br>
  Standard_EXPORT   IntTools_MarkedRangeSet(const IntTools_CArray1OfReal& theSortedArray,const Standard_Integer theInitFlag);
  
//! build set of ranges which consists of one range with <br>
//! boundary values theFirstBoundary and theLastBoundary <br>
  Standard_EXPORT     void SetBoundaries(const Standard_Real theFirstBoundary,const Standard_Real theLastBoundary,const Standard_Integer theInitFlag) ;
  
//! Build set of ranges based on the array of progressive sorted values <br>
  Standard_EXPORT     void SetRanges(const IntTools_CArray1OfReal& theSortedArray,const Standard_Integer theInitFlag) ;
  
//! Inserts a new range marked with flag theFlag <br>
//! It replace the existing ranges or parts of ranges <br>
//! and their flags. <br>
//! Returns True if the range is inside the initial boundaries, <br>
//! otherwise or in case of some error returns False <br>
  Standard_EXPORT     Standard_Boolean InsertRange(const Standard_Real theFirstBoundary,const Standard_Real theLastBoundary,const Standard_Integer theFlag) ;
  
//! Inserts a new range marked with flag theFlag <br>
//! It replace the existing ranges or parts of ranges <br>
//! and their flags. <br>
//! Returns True if the range is inside the initial boundaries, <br>
//! otherwise or in case of some error returns False <br>
  Standard_EXPORT     Standard_Boolean InsertRange(const IntTools_Range& theRange,const Standard_Integer theFlag) ;
  
//! Inserts a new range marked with flag theFlag <br>
//! It replace the existing ranges or parts of ranges <br>
//! and their flags. <br>
//! The index theIndex is a position where the range will be inserted. <br>
//! Returns True if the range is inside the initial boundaries, <br>
//! otherwise or in case of some error returns False <br>
  Standard_EXPORT     Standard_Boolean InsertRange(const Standard_Real theFirstBoundary,const Standard_Real theLastBoundary,const Standard_Integer theFlag,const Standard_Integer theIndex) ;
  
//! Inserts a new range marked with flag theFlag <br>
//! It replace the existing ranges or parts of ranges <br>
//! and their flags. <br>
//! The index theIndex is a position where the range will be inserted. <br>
//! Returns True if the range is inside the initial boundaries, <br>
//! otherwise or in case of some error returns False <br>
  Standard_EXPORT     Standard_Boolean InsertRange(const IntTools_Range& theRange,const Standard_Integer theFlag,const Standard_Integer theIndex) ;
  
//! Set flag theFlag for range with index theIndex <br>
  Standard_EXPORT     void SetFlag(const Standard_Integer theIndex,const Standard_Integer theFlag) ;
  
//! Returns flag of the range with index theIndex <br>
  Standard_EXPORT     Standard_Integer Flag(const Standard_Integer theIndex) const;
  
//! Returns index of range which contains theValue. <br>
//! If theValue do not belong any range returns 0. <br>
  Standard_EXPORT     Standard_Integer GetIndex(const Standard_Real theValue) const;
  
  Standard_EXPORT    const TColStd_SequenceOfInteger& GetIndices(const Standard_Real theValue) ;
  
//! Returns index of range which contains theValue <br>
//! If theValue do not belong any range returns 0. <br>
//! If UseLower is Standard_True then lower boundary of the range <br>
//! can be equal to theValue, otherwise upper boundary of the range <br>
//! can be equal to theValue. <br>
  Standard_EXPORT     Standard_Integer GetIndex(const Standard_Real theValue,const Standard_Boolean UseLower) const;
  
//! Returns number of ranges <br>
        Standard_Integer Length() const;
  
//! Returns the range with index theIndex. <br>
//! the Index can be from 1 to Length() <br>
  Standard_EXPORT     IntTools_Range Range(const Standard_Integer theIndex) const;





protected:





private:



TColStd_SequenceOfReal myRangeSetStorer;
Standard_Integer myRangeNumber;
TColStd_SequenceOfInteger myFlags;
TColStd_SequenceOfInteger myFoundIndices;


};


#include <IntTools_MarkedRangeSet.lxx>



// other Inline functions and methods (like "C++: function call" methods)


#endif