46 // Attributes |
46 // Attributes |
47 DEFINE_GLOBAL(QualifiedName, baseAttr, nullAtom, "base", xmlNamespaceURI); |
47 DEFINE_GLOBAL(QualifiedName, baseAttr, nullAtom, "base", xmlNamespaceURI); |
48 DEFINE_GLOBAL(QualifiedName, langAttr, nullAtom, "lang", xmlNamespaceURI); |
48 DEFINE_GLOBAL(QualifiedName, langAttr, nullAtom, "lang", xmlNamespaceURI); |
49 DEFINE_GLOBAL(QualifiedName, spaceAttr, nullAtom, "space", xmlNamespaceURI); |
49 DEFINE_GLOBAL(QualifiedName, spaceAttr, nullAtom, "space", xmlNamespaceURI); |
50 |
50 |
|
51 static bool initialized = false; |
|
52 // Attributes |
|
53 static const char *xmlNSString = "http://www.w3.org/XML/1998/namespace"; |
|
54 static const char *baseAttrString = "base"; |
|
55 static const char *langAttrString = "lang"; |
|
56 static const char *spaceAttrString = "space"; |
|
57 |
51 |
58 |
52 WebCore::QualifiedName** getXMLAttrs(size_t* size) |
59 WebCore::QualifiedName** getXMLAttrs(size_t* size) |
53 { |
60 { |
54 static WebCore::QualifiedName* XMLAttr[] = { |
61 static WebCore::QualifiedName* XMLAttr[] = { |
55 (WebCore::QualifiedName*)&baseAttr, |
62 (WebCore::QualifiedName*)&baseAttr, |
60 return XMLAttr; |
67 return XMLAttr; |
61 } |
68 } |
62 |
69 |
63 void init() |
70 void init() |
64 { |
71 { |
65 static bool initialized = false; |
|
66 if (initialized) |
72 if (initialized) |
67 return; |
73 return; |
68 initialized = true; |
74 initialized = true; |
69 |
75 |
70 // Use placement new to initialize the globals. |
76 // Use placement new to initialize the globals. |
71 |
77 |
72 AtomicString::init(); |
78 AtomicString::init(); |
73 AtomicString xmlNS("http://www.w3.org/XML/1998/namespace"); |
79 AtomicString xmlNS(xmlNSString); |
74 |
80 |
75 // Namespace |
81 // Namespace |
76 new ((void*)&xmlNamespaceURI) AtomicString(xmlNS); |
82 new ((void*)&xmlNamespaceURI) AtomicString(xmlNS); |
77 |
|
78 // Attributes |
|
79 const char *baseAttrString = "base"; |
|
80 const char *langAttrString = "lang"; |
|
81 const char *spaceAttrString = "space"; |
|
82 |
83 |
83 new ((void*)&baseAttr) QualifiedName(nullAtom, baseAttrString, xmlNS); |
84 new ((void*)&baseAttr) QualifiedName(nullAtom, baseAttrString, xmlNS); |
84 new ((void*)&langAttr) QualifiedName(nullAtom, langAttrString, xmlNS); |
85 new ((void*)&langAttr) QualifiedName(nullAtom, langAttrString, xmlNS); |
85 new ((void*)&spaceAttr) QualifiedName(nullAtom, spaceAttrString, xmlNS); |
86 new ((void*)&spaceAttr) QualifiedName(nullAtom, spaceAttrString, xmlNS); |
86 } |
87 } |
87 |
88 |
|
89 void remove() |
|
90 { |
|
91 if( initialized ) { |
|
92 xmlNamespaceURI.~AtomicString(); |
|
93 baseAttr.~QualifiedName(); |
|
94 langAttr.~QualifiedName(); |
|
95 spaceAttr.~QualifiedName(); |
|
96 } |
|
97 xmlNSString = ""; |
|
98 baseAttrString = ""; |
|
99 langAttrString = ""; |
|
100 spaceAttrString = ""; |
|
101 initialized = false; |
|
102 } |
|
103 |
88 } } |
104 } } |
89 |
105 |