00001 #ifndef _SCHEMAATTRIBUTEDICTIONARY_H_
00002 #define _SCHEMAATTRIBUTEDICTIONARY_H_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifdef _WIN32
00022 #pragma once
00023 #endif
00024
00025 #include <FdoStd.h>
00026
00027 class FdoSchemaElement;
00028 class FdoSchemaXmlContext;
00029
00030
00031
00032
00033
00034
00035 class FdoSchemaAttributeDictionary :
00036 public FdoIDisposable,
00037 public virtual FdoXmlSaxHandler
00038 {
00039 friend class FdoSchemaElement;
00040
00041 protected:
00042
00043 FdoSchemaAttributeDictionary()
00044 {
00045 }
00046 FdoSchemaAttributeDictionary(FdoSchemaElement& parent);
00047
00048 virtual ~FdoSchemaAttributeDictionary();
00049
00050 virtual void Dispose();
00051
00052
00053 virtual void _writeXml( FdoSchemaXmlContext* pContext );
00054
00055
00056 public:
00057
00058
00059
00060
00061
00062
00063 FDO_API FdoInt32 GetCount();
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074 FDO_API FdoString** GetAttributeNames(FdoInt32& length);
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085 FDO_API FdoString* GetAttributeValue(FdoString* name);
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098 FDO_API void SetAttributeValue(FdoString* name, FdoString* value);
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109 FDO_API bool ContainsAttribute(FdoString* name);
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122 FDO_API void Add(FdoString* name, FdoString* value);
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133 FDO_API void Remove(FdoString* name);
00134
00135
00136
00137
00138
00139
00140
00141 FDO_API void Clear();
00142
00143
00144
00145
00146
00147 virtual FdoXmlSaxHandler* XmlStartElement(
00148 FdoXmlSaxContext* context,
00149 FdoString* uri,
00150 FdoString* name,
00151 FdoString* qname,
00152 FdoXmlAttributeCollection* atts
00153 );
00154
00155
00156 virtual FdoBoolean XmlEndElement(
00157 FdoXmlSaxContext* context,
00158 FdoString* uri,
00159 FdoString* name,
00160 FdoString* qname
00161 );
00162
00163
00164 private:
00165 FdoInt32 m_alloc;
00166 FdoInt32 m_used;
00167 wchar_t** m_names;
00168 wchar_t** m_values;
00169 FdoSchemaElement* m_parent;
00170
00171
00172 FdoXmlCharDataHandlerP m_XmlContentHandler;
00173
00174
00175 FdoStringP m_nextName;
00176
00177
00178 protected:
00179
00180 virtual void _StartChanges();
00181 virtual void _BeginChangeProcessing();
00182 virtual void _AcceptChanges();
00183 virtual void _RejectChanges();
00184 virtual void _EndChangeProcessing();
00185 unsigned int m_changeInfoState;
00186 FdoInt32 m_allocCHANGED;
00187 FdoInt32 m_usedCHANGED;
00188 wchar_t** m_namesCHANGED;
00189 wchar_t** m_valuesCHANGED;
00190
00191
00192 static const unsigned int CHANGEINFO_PRESENT = 0x00000001;
00193 static const unsigned int CHANGEINFO_PROCESSING = 0x00000002;
00194 static const unsigned int CHANGEINFO_PROCESSED = 0x00000004;
00195
00196 };
00197
00198
00199
00200 typedef FdoPtr<FdoSchemaAttributeDictionary> FdoSADP;
00201
00202
00203 #endif
00204
00205