Index: src/libchcore/TSQLiteSerializerRowData.h =================================================================== diff -u -N -ra3d1e4c03280ece94af75d9aef32a65266cf8050 -r3933d378c75e0b245a6ccb91099eaeb2c5728209 --- src/libchcore/TSQLiteSerializerRowData.h (.../TSQLiteSerializerRowData.h) (revision a3d1e4c03280ece94af75d9aef32a65266cf8050) +++ src/libchcore/TSQLiteSerializerRowData.h (.../TSQLiteSerializerRowData.h) (revision 3933d378c75e0b245a6ccb91099eaeb2c5728209) @@ -25,6 +25,7 @@ #include "ISerializerContainer.h" #include "TSQLiteDatabase.h" #include "TSQLiteStatement.h" +#include #include #include @@ -56,7 +57,13 @@ class LIBCHCORE_API TSQLiteSerializerRowData : public ISerializerRowData { private: + enum ENullType + { + eNull + }; + typedef boost::variant< + ENullType, bool, short, unsigned short, @@ -79,19 +86,32 @@ TSQLiteSerializerRowData(const TSQLiteSerializerRowData& rSrc); virtual ~TSQLiteSerializerRowData(); - virtual ISerializerRowData& SetValue(const TString& strColName, bool bValue); - virtual ISerializerRowData& SetValue(const TString& strColName, short iValue); - virtual ISerializerRowData& SetValue(const TString& strColName, unsigned short uiValue); - virtual ISerializerRowData& SetValue(const TString& strColName, int iValue); - virtual ISerializerRowData& SetValue(const TString& strColName, unsigned int uiValue); - virtual ISerializerRowData& SetValue(const TString& strColName, long lValue); - virtual ISerializerRowData& SetValue(const TString& strColName, unsigned long ulValue); - virtual ISerializerRowData& SetValue(const TString& strColName, long long llValue); - virtual ISerializerRowData& SetValue(const TString& strColName, unsigned long long llValue); - virtual ISerializerRowData& SetValue(const TString& strColName, double dValue); - virtual ISerializerRowData& SetValue(const TString& strColName, const TString& strValue); - virtual ISerializerRowData& SetValue(const TString& strColName, const TSmartPath& pathValue); + virtual ISerializerRowData& SetValue(size_t stColIndex, bool bValue); + virtual ISerializerRowData& SetValue(size_t stColIndex, short iValue); + virtual ISerializerRowData& SetValue(size_t stColIndex, unsigned short uiValue); + virtual ISerializerRowData& SetValue(size_t stColIndex, int iValue); + virtual ISerializerRowData& SetValue(size_t stColIndex, unsigned int uiValue); + virtual ISerializerRowData& SetValue(size_t stColIndex, long lValue); + virtual ISerializerRowData& SetValue(size_t stColIndex, unsigned long ulValue); + virtual ISerializerRowData& SetValue(size_t stColIndex, long long llValue); + virtual ISerializerRowData& SetValue(size_t stColIndex, unsigned long long llValue); + virtual ISerializerRowData& SetValue(size_t stColIndex, double dValue); + virtual ISerializerRowData& SetValue(size_t stColIndex, const TString& strValue); + virtual ISerializerRowData& SetValue(size_t stColIndex, const TSmartPath& pathValue); + virtual ISerializerRowData& SetValue(const TString& strColumnName, bool bValue); + virtual ISerializerRowData& SetValue(const TString& strColumnName, short iValue); + virtual ISerializerRowData& SetValue(const TString& strColumnName, unsigned short uiValue); + virtual ISerializerRowData& SetValue(const TString& strColumnName, int iValue); + virtual ISerializerRowData& SetValue(const TString& strColumnName, unsigned int uiValue); + virtual ISerializerRowData& SetValue(const TString& strColumnName, long lValue); + virtual ISerializerRowData& SetValue(const TString& strColumnName, unsigned long ulValue); + virtual ISerializerRowData& SetValue(const TString& strColumnName, long long llValue); + virtual ISerializerRowData& SetValue(const TString& strColumnName, unsigned long long llValue); + virtual ISerializerRowData& SetValue(const TString& strColumnName, double dValue); + virtual ISerializerRowData& SetValue(const TString& strColumnName, const TString& strValue); + virtual ISerializerRowData& SetValue(const TString& strColumnName, const TSmartPath& pathValue); + TString GetQuery(const TString& strContainerName) const; TRowID GetChangeIdentification() const; @@ -100,7 +120,7 @@ void MarkAsAdded(); private: - ISerializerRowData& SetValue(const TString& strColumn, const InternalVariant& rData); + ISerializerRowData& SetValue(size_t stColIndex, const InternalVariant& rData); private: size_t m_stRowID; @@ -109,8 +129,8 @@ #pragma warning(disable: 4251) TSQLiteColumnsDefinition& m_rColumns; - typedef std::map MapVariants; // column id -> variant data - MapVariants m_mapValues; + typedef std::vector VecVariants; // column id -> variant data + VecVariants m_vValues; #pragma warning(pop) };