00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef DCSTACK_H
00034 #define DCSTACK_H
00035
00036 #include "osconfig.h"
00037 #include "dctypes.h"
00038
00039 class DcmObject;
00040
00041
00044 class DcmStackNode
00045 {
00046 public:
00050 DcmStackNode(DcmObject *obj);
00051
00053 ~DcmStackNode();
00054
00058 DcmObject *value() const;
00059
00060 private:
00062 DcmStackNode(const DcmStackNode &);
00063
00065 DcmStackNode &operator=(const DcmStackNode &);
00066
00068 DcmStackNode *link;
00069
00071 DcmObject *objNodeValue;
00072
00074 friend class DcmStack;
00075 };
00076
00077
00081 class DcmStack
00082 {
00083 public:
00085 DcmStack();
00086
00091 DcmStack(const DcmStack& arg);
00092
00094 ~DcmStack();
00095
00101 DcmStack& operator=(const DcmStack &arg);
00102
00107 OFBool operator==(const DcmStack& arg) const;
00108
00116 OFBool operator<(const DcmStack& arg) const;
00117
00122 DcmObject* push( DcmObject *obj );
00123
00127 DcmObject* pop();
00128
00132 DcmObject* top() const;
00133
00137 DcmObject* elem(const unsigned long number) const;
00138
00142 OFBool empty() const;
00143
00147 unsigned long card() const;
00148
00151 void clear();
00152
00153 private:
00155 DcmStackNode *topNode_;
00156
00158 unsigned long cardinality_;
00159 };
00160
00161
00162 #endif // DCSTACK_H
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184