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
00042 protected:
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
00148 virtual FdoXmlSaxHandler* XmlStartElement(
00149 FdoXmlSaxContext* context,
00150 FdoString* uri,
00151 FdoString* name,
00152 FdoString* qname,
00153 FdoXmlAttributeCollection* atts
00154 );
00155
00156
00157 virtual FdoBoolean XmlEndElement(
00158 FdoXmlSaxContext* context,
00159 FdoString* uri,
00160 FdoString* name,
00161 FdoString* qname
00162 );
00163
00164
00165 private:
00166 FdoInt32 m_alloc;
00167 FdoInt32 m_used;
00168 wchar_t** m_names;
00169 wchar_t** m_values;
00170 FdoSchemaElement* m_parent;
00171
00172
00173 FdoXmlCharDataHandlerP m_XmlContentHandler;
00174
00175
00176 FdoStringP m_nextName;
00177
00178
00179 protected:
00180
00181 virtual void _StartChanges();
00182 virtual void _BeginChangeProcessing();
00183 virtual void _AcceptChanges();
00184 virtual void _RejectChanges();
00185 virtual void _EndChangeProcessing();
00186 unsigned int m_changeInfoState;
00187 FdoInt32 m_allocCHANGED;
00188 FdoInt32 m_usedCHANGED;
00189 wchar_t** m_namesCHANGED;
00190 wchar_t** m_valuesCHANGED;
00191
00192
00193 static const unsigned int CHANGEINFO_PRESENT = 0x00000001;
00194 static const unsigned int CHANGEINFO_PROCESSING = 0x00000002;
00195 static const unsigned int CHANGEINFO_PROCESSED = 0x00000004;
00196
00197 };
00198
00199
00200
00201
00202 typedef FdoPtr<FdoSchemaAttributeDictionary> FdoSADP;
00203
00204
00205 #endif
00206
00207