00001
00002
00003
00004
00005
00006
00007 #ifndef COH_READ_ONLY_MULTI_LIST_HPP
00008 #define COH_READ_ONLY_MULTI_LIST_HPP
00009
00010 #include "coherence/lang.ns"
00011
00012 #include "coherence/util/AbstractList.hpp"
00013 #include "coherence/util/Collection.hpp"
00014 #include "coherence/util/Iterator.hpp"
00015 #include "coherence/util/List.hpp"
00016 #include "coherence/util/Set.hpp"
00017 #include "coherence/util/WrapperCollections.hpp"
00018
00019
00020 COH_OPEN_NAMESPACE2(coherence,util)
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 class COH_EXPORT ReadOnlyMultiList
00041 : public class_spec<ReadOnlyMultiList,
00042 extends<AbstractList>,
00043 implements<Set> >
00044 {
00045 friend class factory<ReadOnlyMultiList>;
00046
00047
00048
00049 public:
00050 typedef this_spec::Handle Handle;
00051 typedef this_spec::View View;
00052 typedef this_spec::Holder Holder;
00053
00054
00055
00056
00057 protected:
00058
00059
00060
00061
00062
00063
00064 ReadOnlyMultiList(ObjectArray::View vaao);
00065
00066 private:
00067
00068
00069
00070 ReadOnlyMultiList(const ReadOnlyMultiList&);
00071
00072
00073
00074
00075 public:
00076
00077
00078
00079
00080
00081 virtual List::Handle getList();
00082
00083
00084
00085
00086
00087
00088 virtual List::View getList() const;
00089
00090
00091
00092
00093
00094
00095 virtual Set::Handle getSet();
00096
00097
00098
00099
00100
00101
00102 virtual Set::View getSet() const;
00103
00104
00105
00106
00107 public:
00108
00109
00110
00111 virtual size32_t size() const;
00112
00113
00114
00115
00116 virtual Object::Holder get(size32_t i) const;
00117 using List::get;
00118
00119
00120
00121
00122 virtual Object::Holder set(size32_t i, Object::Holder oh);
00123
00124
00125
00126
00127 virtual bool add(size32_t i, Object::Holder oh);
00128 using Collection::add;
00129
00130
00131
00132
00133 virtual bool addAll(size32_t i, Collection::View vColl);
00134 using Collection::addAll;
00135
00136
00137
00138
00139 virtual Object::Holder remove(size32_t i);
00140 using Collection::remove;
00141
00142
00143
00144
00145 virtual size32_t indexOf(Object::View v) const;
00146
00147
00148
00149
00150 virtual size32_t lastIndexOf(Object::View v) const;
00151
00152
00153
00154
00155 virtual bool contains(Object::View v) const;
00156
00157
00158
00159
00160 virtual ObjectArray::Handle toArray(ObjectArray::Handle ha = NULL) const;
00161
00162
00163
00164
00165 virtual Iterator::Handle iterator() const;
00166 using Collection::iterator;
00167
00168
00169
00170
00171 virtual Muterator::Handle iterator();
00172 using List::iterator;
00173
00174
00175
00176
00177 virtual ListIterator::Handle listIterator(size32_t i = 0) const;
00178
00179
00180
00181
00182 virtual ListMuterator::Handle listIterator(size32_t i = 0);
00183
00184
00185
00186
00187 virtual List::View subList(size32_t iFrom, size32_t iTo) const;
00188
00189
00190
00191
00192 virtual List::Handle subList(size32_t iFrom, size32_t iTo);
00193
00194
00195
00196
00197 public:
00198
00199
00200
00201 virtual bool equals(Object::View v) const;
00202
00203
00204
00205
00206 public:
00207
00208
00209
00210
00211
00212
00213
00214 static size32_t calculateTotalLength(ObjectArray::View vaao);
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230 static ObjectArray::Handle flatten(ObjectArray::View vaaoFrom,
00231 size32_t cTotal, ObjectArray::Handle haoTo = NULL);
00232
00233 protected:
00234
00235
00236
00237 template<class T> static List::Holder subList(T, size32_t iFrom,
00238 size32_t iTo);
00239
00240
00241
00242
00243 protected:
00244
00245
00246
00247
00248 class COH_EXPORT ListView
00249 : public class_spec<ListView,
00250 extends<WrapperCollections::AbstractWrapperList> >
00251 {
00252 friend class factory<ListView>;
00253
00254
00255
00256 protected:
00257
00258
00259
00260 ListView(ReadOnlyMultiList::Holder ohList);
00261
00262
00263
00264
00265
00266
00267
00268 virtual bool equals(Object::View v) const;
00269
00270
00271
00272
00273 virtual size32_t hashCode() const;
00274 };
00275
00276
00277
00278
00279 protected:
00280
00281
00282
00283
00284 class COH_EXPORT SetView
00285 : public class_spec<SetView,
00286 extends<WrapperCollections::AbstractWrapperSet> >
00287 {
00288 friend class factory<SetView>;
00289
00290
00291
00292 protected:
00293
00294
00295
00296 SetView(ReadOnlyMultiList::Holder ohSet);
00297
00298
00299
00300
00301
00302
00303
00304 virtual bool equals(Object::View v) const;
00305
00306
00307
00308
00309 virtual size32_t hashCode() const;
00310 };
00311
00312
00313
00314
00315 private:
00316
00317
00318
00319 FinalView<ObjectArray> f_vaao;
00320
00321
00322
00323
00324
00325
00326 mutable FinalView<Set> f_vSet;
00327
00328
00329
00330
00331 const size32_t m_cTotal;
00332 };
00333
00334 COH_CLOSE_NAMESPACE2
00335
00336 #endif // COH_READ_ONLY_MULTI_LIST_HPP