00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 #ifndef COH_POF_BUFFER_WRITER_HPP
00017 #define COH_POF_BUFFER_WRITER_HPP
00018 
00019 #include "coherence/lang.ns"
00020 
00021 #include "coherence/io/WriteBuffer.hpp"
00022 #include "coherence/io/pof/PofContext.hpp"
00023 #include "coherence/io/pof/PofHelper.hpp"
00024 #include "coherence/io/pof/PofWriter.hpp"
00025 #include "coherence/io/pof/RawDate.hpp"
00026 #include "coherence/io/pof/RawDateTime.hpp"
00027 #include "coherence/io/pof/RawDayTimeInterval.hpp"
00028 #include "coherence/io/pof/RawTime.hpp"
00029 #include "coherence/io/pof/RawTimeInterval.hpp"
00030 #include "coherence/io/pof/RawYearMonthInterval.hpp"
00031 #include "coherence/io/pof/ReferenceLibrary.hpp"
00032 #include "coherence/io/pof/WritingPofHandler.hpp"
00033 #include "coherence/util/Binary.hpp"
00034 #include "coherence/util/Collection.hpp"
00035 #include "coherence/util/LongArray.hpp"
00036 #include "coherence/util/Map.hpp"
00037 
00038 COH_OPEN_NAMESPACE3(coherence,io,pof)
00039 
00040 using coherence::io::WriteBuffer;
00041 using coherence::util::Binary;
00042 using coherence::util::Collection;
00043 using coherence::util::LongArray;
00044 using coherence::util::Map;
00045 
00046 
00047 
00048 
00049 
00050 
00051 
00052 
00053 class COH_EXPORT PofBufferWriter
00054     : public class_spec<PofBufferWriter,
00055         extends<PofHelper>,
00056         implements<PofWriter> >
00057     {
00058     friend class factory<PofBufferWriter>;
00059 
00060     
00061 
00062     protected:
00063 
00064 
00065 
00066 
00067 
00068 
00069 
00070 
00071         PofBufferWriter(WriteBuffer::BufferOutput::Handle hOut,
00072                 PofContext::View vCtx);
00073 
00074 
00075 
00076 
00077 
00078 
00079 
00080 
00081 
00082 
00083         PofBufferWriter(WritingPofHandler::Handle hHandler,
00084                 PofContext::View vCtx);
00085 
00086 
00087     
00088 
00089     public:
00090 
00091 
00092 
00093         virtual void writeBoolean(int32_t iProp, bool f);
00094 
00095 
00096 
00097 
00098         virtual void writeOctet(int32_t iProp, octet_t b);
00099 
00100 
00101 
00102 
00103         virtual void writeChar16(int32_t iProp, char16_t ch);
00104 
00105 
00106 
00107 
00108         virtual void writeInt16(int32_t iProp, int16_t n);
00109 
00110 
00111 
00112 
00113         virtual void writeInt32(int32_t iProp, int32_t n);
00114 
00115 
00116 
00117 
00118         virtual void writeInt64(int32_t iProp, int64_t l);
00119 
00120 
00121 
00122 
00123         virtual void writeFloat32(int32_t iProp, float32_t fl);
00124 
00125 
00126 
00127 
00128         virtual void writeFloat64(int32_t iProp, float64_t dfl);
00129 
00130 
00131 
00132 
00133         virtual void writeBooleanArray(int32_t iProp, Array<bool>::View vaf);
00134 
00135 
00136 
00137 
00138         virtual void writeOctetArray(int32_t iProp, Array<octet_t>::View vab);
00139 
00140 
00141 
00142 
00143         virtual void writeChar16Array(int32_t iProp, Array<char16_t>::View vach);
00144 
00145 
00146 
00147 
00148         virtual void writeInt16Array(int32_t iProp, Array<int16_t>::View van);
00149 
00150 
00151 
00152 
00153         virtual void writeInt32Array(int32_t iProp, Array<int32_t>::View van);
00154 
00155 
00156 
00157 
00158         virtual void writeInt64Array(int32_t iProp, Array<int64_t>::View val);
00159 
00160 
00161 
00162 
00163         virtual void writeFloat32Array(int32_t iProp, Array<float32_t>::View vafl);
00164 
00165 
00166 
00167 
00168         virtual void writeFloat64Array(int32_t iProp, Array<float64_t>::View vadfl);
00169 
00170 
00171 
00172 
00173         virtual void writeBinary(int32_t iProp, Binary::View vBin);
00174 
00175 
00176 
00177 
00178         virtual void writeString(int32_t iProp, String::View vs);
00179 
00180 
00181 
00182 
00183         virtual void writeRawDate(int32_t iProp, RawDate::View vDate);
00184 
00185 
00186 
00187 
00188         virtual void writeRawDateTime(int32_t iProp, RawDateTime::View vdt);
00189 
00190 
00191 
00192 
00193         virtual void writeRawDayTimeInterval(int32_t iProp,
00194                 RawDayTimeInterval::View vInterval);
00195 
00196 
00197 
00198 
00199         virtual void writeRawTime(int32_t iProp, RawTime::View vTime);
00200 
00201 
00202 
00203 
00204         virtual void writeRawTimeInterval(int32_t iProp,
00205                 RawTimeInterval::View vInterval);
00206 
00207 
00208 
00209 
00210         virtual void writeRawYearMonthInterval(int32_t iProp,
00211                 RawYearMonthInterval::View vInterval);
00212 
00213 
00214 
00215 
00216         virtual void writeObject(int32_t iProp, Object::View v);
00217 
00218 
00219 
00220 
00221         virtual void writeObjectArray(int32_t iProp, ObjectArray::View va);
00222 
00223 
00224 
00225 
00226         virtual void writeObjectArray(int32_t iProp, ObjectArray::View va,
00227                 Class::View vClass);
00228 
00229 
00230 
00231 
00232         virtual void writeLongArray(int32_t iProp, LongArray::View vla);
00233 
00234 
00235 
00236 
00237         virtual void writeLongArray(int32_t iProp, LongArray::View vla,
00238                 Class::View vClass);
00239 
00240 
00241 
00242 
00243         virtual void writeCollection(int32_t iProp, Collection::View vCol);
00244 
00245 
00246 
00247 
00248         virtual void writeCollection(int32_t iProp, Collection::View vCol,
00249                 Class::View vClass);
00250 
00251 
00252 
00253 
00254         virtual void writeMap(int32_t iProp, Map::View vMap);
00255 
00256 
00257 
00258 
00259         virtual void writeMap(int32_t iProp, Map::View vMap,
00260                 Class::View vClassKey);
00261 
00262 
00263 
00264 
00265         virtual void writeMap(int32_t iProp, Map::View vMap,
00266                 Class::View vClassKey, Class::View vClassValue);
00267 
00268 
00269 
00270 
00271         virtual PofContext::View getPofContext() const;
00272 
00273 
00274 
00275 
00276         virtual void setPofContext(PofContext::View vCtx);
00277 
00278 
00279 
00280 
00281         virtual int32_t getUserTypeId() const;
00282 
00283 
00284 
00285 
00286         virtual int32_t getVersionId() const;
00287 
00288 
00289 
00290 
00291         virtual void setVersionId(int32_t nVersionId);
00292 
00293 
00294 
00295 
00296         virtual PofWriter::Handle createNestedPofWriter(int32_t iProp);
00297 
00298 
00299 
00300 
00301         virtual void writeRemainder(Binary::View vBinProps);
00302 
00303 
00304     
00305 
00306     protected:
00307 
00308 
00309 
00310 
00311 
00312 
00313 
00314 
00315         virtual void writeUserType(int32_t iProp, Object::View v);
00316 
00317 
00318 
00319 
00320 
00321 
00322 
00323         virtual PofBufferWriter::Handle getParentWriter();
00324 
00325 
00326 
00327 
00328 
00329 
00330 
00331         virtual PofBufferWriter::View getParentWriter() const;
00332 
00333 
00334 
00335 
00336 
00337 
00338 
00339 
00340 
00341 
00342 
00343 
00344 
00345 
00346 
00347 
00348         virtual void beginProperty(int32_t iProp);
00349 
00350 
00351 
00352 
00353 
00354 
00355         virtual void endProperty(int32_t iProp);
00356 
00357 
00358 
00359 
00360 
00361 
00362 
00363 
00364 
00365 
00366         static void assertEqual(Class::View vClass, Class::View vClassTest);
00367 
00368 
00369     
00370 
00371     public:
00372 
00373 
00374 
00375         virtual void enableReference();
00376 
00377 
00378 
00379 
00380 
00381 
00382 
00383 
00384         virtual bool isReferenceEnabled();
00385 
00386     protected:
00387 
00388 
00389 
00390 
00391 
00392         virtual WriteBuffer::BufferOutput::Handle getBufferOutput();
00393 
00394 
00395 
00396 
00397 
00398 
00399         virtual WriteBuffer::BufferOutput::View getBufferOutput() const;
00400 
00401 
00402 
00403 
00404 
00405 
00406 
00407         virtual WritingPofHandler::Handle getPofHandler();
00408 
00409 
00410 
00411 
00412 
00413 
00414 
00415         virtual WritingPofHandler::View getPofHandler() const;
00416 
00417 
00418 
00419 
00420 
00421 
00422 
00423 
00424 
00425         virtual bool isEvolvable();
00426 
00427 
00428 
00429 
00430 
00431 
00432 
00433 
00434 
00435         virtual void setEvolvable(bool fEvolvable);
00436 
00437 
00438     
00439 
00440     protected:
00441 
00442 
00443 
00444         FinalHandle<WriteBuffer::BufferOutput> f_hOut;
00445 
00446 
00447 
00448 
00449         FinalView<PofContext> f_vCtx;
00450 
00451 
00452 
00453 
00454 
00455         bool m_fEvolvable;
00456 
00457 
00458 
00459 
00460         FinalHandle<WritingPofHandler> f_hHandler;
00461 
00462 
00463 
00464 
00465         FinalHandle<ReferenceLibrary> f_hRefs;
00466 
00467 
00468     
00469 
00470     friend class UserTypeWriter;
00471     };
00472 
00473 COH_CLOSE_NAMESPACE3
00474 
00475 #endif // COH_POF_BUFFER_WRITER_HPP