39 |
39 |
40 using namespace KJS::Bindings; |
40 using namespace KJS::Bindings; |
41 |
41 |
42 typedef HashMap<RefPtr<KJS::UString::Rep>, PrivateIdentifier*> StringIdentifierMap; |
42 typedef HashMap<RefPtr<KJS::UString::Rep>, PrivateIdentifier*> StringIdentifierMap; |
43 |
43 |
|
44 static StringIdentifierMap* stringIdentifierMap = 0; |
|
45 |
44 static StringIdentifierMap* getStringIdentifierMap() |
46 static StringIdentifierMap* getStringIdentifierMap() |
45 { |
47 { |
46 static StringIdentifierMap* stringIdentifierMap = 0; |
|
47 if (!stringIdentifierMap) |
48 if (!stringIdentifierMap) |
48 stringIdentifierMap = new StringIdentifierMap; |
49 stringIdentifierMap = new StringIdentifierMap; |
49 return stringIdentifierMap; |
50 return stringIdentifierMap; |
50 } |
51 } |
|
52 |
|
53 struct cleanupStringIdentifier { |
|
54 ~cleanupStringIdentifier() { |
|
55 if( stringIdentifierMap ) { |
|
56 stringIdentifierMap->clear(); |
|
57 delete stringIdentifierMap; |
|
58 stringIdentifierMap = 0; |
|
59 } |
|
60 } |
|
61 }; |
|
62 struct cleanupStringIdentifier cleanup; |
51 |
63 |
52 typedef HashMap<int, PrivateIdentifier*> IntIdentifierMap; |
64 typedef HashMap<int, PrivateIdentifier*> IntIdentifierMap; |
53 |
65 |
54 static IntIdentifierMap* getIntIdentifierMap() |
66 static IntIdentifierMap* getIntIdentifierMap() |
55 { |
67 { |