equal
deleted
inserted
replaced
51 deleteAllValues(_fields); |
51 deleteAllValues(_fields); |
52 _fields.clear(); |
52 _fields.clear(); |
53 } |
53 } |
54 |
54 |
55 typedef HashMap<NPClass*, CClass*> ClassesByIsAMap; |
55 typedef HashMap<NPClass*, CClass*> ClassesByIsAMap; |
|
56 typedef HashMap<NPClass*, CClass*>::iterator ClassesByIsAMapIt; |
56 static ClassesByIsAMap* classesByIsA = 0; |
57 static ClassesByIsAMap* classesByIsA = 0; |
|
58 |
|
59 struct cleanupClassesByIsA { |
|
60 ~cleanupClassesByIsA() { |
|
61 if( classesByIsA ) { |
|
62 ClassesByIsAMapIt end = classesByIsA->end(); |
|
63 for( ClassesByIsAMapIt it=classesByIsA->begin(); it!=end; ++it ) { |
|
64 CClass* obj = (*it).second; |
|
65 delete obj; |
|
66 } |
|
67 classesByIsA->clear(); |
|
68 delete classesByIsA; |
|
69 classesByIsA = 0; |
|
70 } |
|
71 } |
|
72 }; |
|
73 struct cleanupClassesByIsA cleanupClassIsAHash; |
57 |
74 |
58 CClass* CClass::classForIsA(NPClass* isa) |
75 CClass* CClass::classForIsA(NPClass* isa) |
59 { |
76 { |
60 if (!classesByIsA) |
77 if (!classesByIsA) |
61 classesByIsA = new ClassesByIsAMap; |
78 classesByIsA = new ClassesByIsAMap; |