00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __loaded__set_h__
00021 #define __loaded__set_h__
00022 using namespace std;
00023 #line 1 "set.h++"
00024 #include "array.h"
00025 #include "numbers.h"
00026
00027
00028
00029
00030 class NoElement{};
00031
00036 class Set
00037 {
00041 typedef Array<1,Data> Content;
00042
00046 Content content;
00047
00053 int next_element;
00054 private:
00055
00059 void init(Array<1,Data> array)
00060 {
00061 content=array;
00062 next_element=content.size()[0];
00063 }
00064
00068 void ensure_size(int S);
00069
00073 int allocated_size()
00074 {
00075 return content.size()[0];
00076 }
00077 public:
00078
00082 Set()
00083 {
00084 init(Content());
00085 };
00086
00091 Set(Data data)
00092 {
00093 init(data);
00094 };
00095
00100 operator Data()
00101 {
00102 return content(Size<1>(next_element));
00103 };
00104
00109 Set & operator=(Array<1,Data> & arr)
00110 {
00111 init(arr);
00112 return *this;
00113 }
00114
00118 void add(const Data & element);
00119
00123 int size()
00124 {
00125 return next_element;
00126 }
00127
00131 Data& operator[](int i)
00132 {
00133 return content[i];
00134 }
00135
00136 };
00137 #endif // __loaded__set_h__