webengine/osswebengine/JavaScriptCore/bindings/c/c_class.cpp
changeset 5 10e98eab6f85
parent 0 dd21522fd290
equal deleted inserted replaced
1:7c90e6132015 5:10e98eab6f85
    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;