Changeset 270 in dev for trunk/abdev/BasicCompiler_Common/include/Class.h
- Timestamp:
- Aug 9, 2007, 3:18:40 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler_Common/include/Class.h
r266 r270 31 31 typedef vector<InheritedInterface> Interfaces; 32 32 33 class CClass: public Prototype 33 class CClass: public Prototype, public Jenga::Common::ObjectInHashmap<CClass> 34 34 { 35 35 public: … … 148 148 } 149 149 150 virtual const std::string &GetKeyName() const 151 { 152 return GetName(); 153 } 154 virtual bool IsDuplication( const CClass *pClass ) const 155 { 156 if( pClass->IsEqualSymbol( *this ) ) 157 { 158 return true; 159 } 160 return false; 161 } 162 150 163 void Readed(){ 151 164 isReady = true; … … 355 368 }; 356 369 357 #define MAX_CLASS_HASH 65535 358 class Classes 370 class Classes : public Jenga::Common::Hashmap<CClass> 359 371 { 360 CClass *pobj_ClassHash[MAX_CLASS_HASH];361 int GetHashCode(const char *name) const;362 363 372 // XMLシリアライズ用 364 private:365 friend class boost::serialization::access;366 BOOST_SERIALIZATION_SPLIT_MEMBER();367 template<class Archive> void load(Archive& ar, const unsigned int version)368 {369 trace_for_serialize( "serializing(load) - Classes" );370 371 std::vector<CClass *> vectorClasses;372 ar & BOOST_SERIALIZATION_NVP( vectorClasses );373 374 // 読み込み後の処理375 Clear();376 BOOST_FOREACH( CClass *pClass, vectorClasses )377 {378 Insert( pClass );379 }380 Iterator_Init();381 }382 template<class Archive> void save(Archive& ar, const unsigned int version) const383 {384 trace_for_serialize( "serializing(save) - Classes" );385 386 // 保存準備387 std::vector<CClass *> vectorClasses;388 vectorClasses.clear();389 Iterator_Reset();390 while( Iterator_HasNext() )391 {392 vectorClasses.push_back( dynamic_cast<CClass *>(Iterator_GetNext()) );393 }394 395 ar & BOOST_SERIALIZATION_NVP( vectorClasses );396 }397 398 373 public: 399 374 Classes() … … 401 376 , pStringClass( NULL ) 402 377 , pObjectClass( NULL ) 403 , ppobj_IteClass( NULL ) 404 , iIteMaxNum( 0 ) 405 , iIteNextNum( 0 ) 406 { 407 memset( pobj_ClassHash, 0, MAX_CLASS_HASH * sizeof(CClass *) ); 378 { 408 379 } 409 380 ~Classes() 410 381 { 411 for(int i=0;i<MAX_CLASS_HASH;i++){412 if(pobj_ClassHash[i]) DestroyClass(pobj_ClassHash[i]);413 }414 }415 void DestroyClass(CClass *pobj_c)416 {417 if(pobj_c->pobj_NextClass){418 DestroyClass(pobj_c->pobj_NextClass);419 }420 421 delete pobj_c;422 }423 void Clear()424 {425 if(ppobj_IteClass)426 {427 free(ppobj_IteClass);428 ppobj_IteClass = NULL;429 }430 // TODO: ここはこれでいいのか…431 memset( pobj_ClassHash, 0, MAX_CLASS_HASH * sizeof(CClass *) );432 382 } 433 383 … … 473 423 CClass *GetStringClassPtr() const; 474 424 CClass *GetObjectClassPtr() const; 475 476 477 /////////////////////478 // イテレータ479 /////////////////////480 private:481 mutable CClass **ppobj_IteClass;482 mutable int iIteMaxNum;483 mutable int iIteNextNum;484 public:485 void Iterator_Init() const;486 void Iterator_Reset() const;487 BOOL Iterator_HasNext() const;488 CClass *Iterator_GetNext() const;489 int Iterator_GetMaxCount() const;490 425 };
Note:
See TracChangeset
for help on using the changeset viewer.