00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef SB_EXT_INT__LIST_H
00025 #define SB_EXT_INT__LIST_H
00026
00027 #include <Inventor/SbBase.h>
00028 #include <Inventor/STL/vector>
00029
00030
00031 #if defined(_WIN32)
00032 #pragma warning( push )
00033 #pragma warning( disable: 4251 ) // 'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2'
00034 #endif
00035
00047 namespace SbExtIntListNamespace
00048 {
00049
00050
00051
00052
00053 GenIndex
00054 {
00055 public:
00056 GenIndex( )
00057 {
00058 first = -1;
00059 second = -1;
00060 }
00061
00062 explicit GenIndex( int index )
00063 {
00064 first = index;
00065 second = -1;
00066 }
00067
00068 explicit GenIndex( int index0, int index1 )
00069 {
00070 first = index0;
00071 second = index1;
00072 }
00073
00074 operator int() const { return first; }
00075 operator int&() { return first; }
00076
00077 int first;
00078 int second;
00079
00080 };
00081
00082 typedef GenIndex IndexType;
00083 typedef std::vector<IndexType> IndexContainerType;
00084 typedef IndexContainerType::iterator IndexContainerIterator;
00085
00086 };
00087
00088
00089
00090
00091
00092
00093 SbExtIntList
00094 {
00095
00096 public:
00097
00098
00099
00100
00101 enum { NODE = -1 };
00102 enum { ALL_INSTANCE = -2 };
00103 enum { FORWARD_TRAVERSAL = -3 };
00104
00105 typedef SbExtIntListNamespace::IndexContainerIterator IteratorType;
00106
00110 SbExtIntList();
00111
00115 SbExtIntList(int initSize);
00116
00117 virtual ~SbExtIntList() { }
00118
00119
00120 void append(int val);
00121 void append(int val1, int val2);
00122
00123 void set(int index, int val);
00124 void set (int index, int val1, int val2);
00125
00126 void set(int startIndex, int* values, int numValues);
00127
00128
00129 int find(int integer);
00130
00134 void truncate( int start );
00135
00136 SbExtIntListNamespace::GenIndex& operator[](int i) { return m_container[i]; }
00137 const SbExtIntListNamespace::GenIndex& operator[](int i) const { return m_container[i]; }
00138 unsigned int size() const { return static_cast<unsigned int>(m_container.size()); }
00139
00140 private:
00141
00142 SbExtIntListNamespace::IndexContainerType m_container;
00143
00144 };
00145
00146 #if defined(_WIN32)
00147 #pragma warning( pop )
00148 #endif
00149
00150 #endif
00151