19 #ifndef INCLUDE_SF_SERIALIZEDYNAMICARRAY_HPP 20 #define INCLUDE_SF_SERIALIZEDYNAMICARRAY_HPP 22 #include <SF/SerializeFundamental.hpp> 23 #include <SF/SfNew.hpp> 29 template<
typename T,
typename N>
33 DynamicArray(
const T *&pt,
const N &n ) : pt_( const_cast< T*&>(pt) ), n_( const_cast<N &>(n) ) {}
34 DynamicArray( T *&pt,
const N &n ) : pt_( const_cast< T*&>(pt) ), n_( const_cast<N &>(n) ) {}
35 DynamicArray(
const DynamicArray &rhs) : pt_(rhs.pt_), n_(rhs.n_) {}
36 T *&
get() {
return pt_; }
37 N &length() {
return n_; }
38 T &operator[](
unsigned int idx) { RCF_ASSERT(
get() != NULL && 0 <= idx && idx < length() );
return *(
get() + idx); }
40 DynamicArray &operator=(
const DynamicArray &rhs);
46 template<
typename T,
typename N>
47 inline void serializeDynamicArray(
50 DynamicArray<T,N> &da)
54 I_Encoding &e = ar.getIstream()->getEncoding();
56 bool bRet = ar.getIstream()->get( data );
59 UInt32 nCount = e.getCount( data , (T *) NULL);
60 da.get() =
new T[ nCount ];
62 e.toObject(data, da.get(), nCount );
65 else if (ar.isWrite())
69 I_Encoding &e = ar.getOstream()->getEncoding();
71 e.toData(data, da.get(), da.length() );
72 ar.getOstream()->put(data);
78 template<
typename T,
typename N>
79 inline void serializeDynamicArray(
82 DynamicArray<T,N> &da)
88 da.get() =
new T[nCount];
90 for (UInt32 i=0; i<da.length(); i++)
93 else if (ar.isWrite())
96 for (UInt32 i=0; i<da.length(); i++)
101 template<
typename T,
typename N>
102 inline void serialize(Archive &ar, DynamicArray<T,N> &da)
104 typedef typename RCF::IsFundamental<T>::type FundamentalOrNot;
105 serializeDynamicArray( (FundamentalOrNot *) NULL, ar, da);
108 SF_NO_CTOR_T2( DynamicArray )
110 template<
typename T,
typename N>
111 inline DynamicArray<T,N> dynamicArray(
const T *&pt,
const N &size)
113 return DynamicArray<T,N>(pt, size);
116 template<
typename T,
typename N>
117 inline DynamicArray<T,N> dynamicArray( T *&pt,
const N &size)
119 return DynamicArray<T,N>(pt, size);
124 #endif // ! INCLUDE_SF_SERIALIZEDYNAMICARRAY_HPP Definition: ByteBuffer.hpp:189