00001
00002
00003 #ifndef ArrayType_h
00004 #define ArrayType_h
00005
00006 #include <string>
00007 #include "BasicType.h"
00008
00009 #include "Serializable.h"
00010
00011
00012 namespace BIE {
00013
00014
00016 class ArrayType : public BasicType {
00017
00018 public:
00020 ArrayType (BasicType *btype, int len);
00021
00023 ArrayType (ArrayType *at);
00024
00026 BasicType *getBaseType() {return arrayBase;};
00027
00028
00030 bool equals(ArrayType * type);
00031
00032
00034 string toString();
00035
00037 int getLength();
00038
00039 private:
00040 int length;
00041 BasicType *arrayBase;
00042
00043
00044 protected:
00045 ArrayType() {}
00046 private:
00047 friend class boost::serialization::access;
00048 template<class Archive>
00049 void serialize(Archive & ar, const unsigned int version) {
00050 this->pre_serialize(ar, version);
00051 try {
00052 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(BasicType);
00053 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00054 }
00055 try {
00056 ar & BOOST_SERIALIZATION_NVP(length);
00057 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00058 }
00059 this->post_serialize(ar, version);
00060 }
00061
00062 };
00063
00064 }
00065 BIE_CLASS_TYPE_INFO(BIE::ArrayType)
00066 BIE_CLASS_EXPORT_KEY(BIE::ArrayType)
00067 #endif