18 #ifndef INCLUDE_SF_SERIALIZEDYNAMICARRAY_HPP 19 #define INCLUDE_SF_SERIALIZEDYNAMICARRAY_HPP 21 #include <SF/SerializeFundamental.hpp> 22 #include <SF/SfNew.hpp> 28 template<
typename T,
typename N>
32 DynamicArray(
const T *&pt,
const N &n ) : pt_( const_cast< T*&>(pt) ), n_( const_cast<N &>(n) ) {}
33 DynamicArray( T *&pt,
const N &n ) : pt_( const_cast< T*&>(pt) ), n_( const_cast<N &>(n) ) {}
34 DynamicArray(
const DynamicArray &rhs) : pt_(rhs.pt_), n_(rhs.n_) {}
35 T *&
get() {
return pt_; }
36 N &length() {
return n_; }
37 T &operator[](
unsigned int idx) { RCF_ASSERT(
get() != NULL && 0 <= idx && idx < length() );
return *(
get() + idx); }
39 DynamicArray &operator=(
const DynamicArray &rhs);
45 template<
typename T,
typename N>
46 inline void serializeDynamicArray(
49 DynamicArray<T,N> &da)
53 I_Encoding &e = ar.getIstream()->getEncoding();
55 bool bRet = ar.getIstream()->get( data );
58 UInt32 nCount = e.getCount( data , (T *) NULL);
59 da.get() =
new T[ nCount ];
61 e.toObject(data, da.get(), nCount );
64 else if (ar.isWrite())
68 I_Encoding &e = ar.getOstream()->getEncoding();
70 e.toData(data, da.get(), da.length() );
71 ar.getOstream()->put(data);
77 template<
typename T,
typename N>
78 inline void serializeDynamicArray(
81 DynamicArray<T,N> &da)
87 da.get() =
new T[nCount];
89 for (UInt32 i=0; i<da.length(); i++)
92 else if (ar.isWrite())
95 for (UInt32 i=0; i<da.length(); i++)
100 template<
typename T,
typename N>
101 inline void serialize(Archive &ar, DynamicArray<T,N> &da)
103 typedef typename RCF::IsFundamental<T>::type FundamentalOrNot;
104 serializeDynamicArray( (FundamentalOrNot *) NULL, ar, da);
107 SF_NO_CTOR_T2( DynamicArray )
109 template<
typename T,
typename N>
110 inline DynamicArray<T,N> dynamicArray(
const T *&pt,
const N &size)
112 return DynamicArray<T,N>(pt, size);
115 template<
typename T,
typename N>
116 inline DynamicArray<T,N> dynamicArray( T *&pt,
const N &size)
118 return DynamicArray<T,N>(pt, size);
123 #endif // ! INCLUDE_SF_SERIALIZEDYNAMICARRAY_HPP Definition: ByteBuffer.hpp:188