Index: src/libchcore/TSQLiteSerializerRowData.h =================================================================== diff -u -N -r213cc1a2b3530ea7cb31fd0dac258df23bcc3416 -ra3d1e4c03280ece94af75d9aef32a65266cf8050 --- src/libchcore/TSQLiteSerializerRowData.h (.../TSQLiteSerializerRowData.h) (revision 213cc1a2b3530ea7cb31fd0dac258df23bcc3416) +++ src/libchcore/TSQLiteSerializerRowData.h (.../TSQLiteSerializerRowData.h) (revision a3d1e4c03280ece94af75d9aef32a65266cf8050) @@ -23,10 +23,10 @@ #include "ISerializerRowData.h" #include "TSQLiteColumnDefinition.h" #include "ISerializerContainer.h" -#include "TRowData.h" #include "TSQLiteDatabase.h" #include "TSQLiteStatement.h" #include +#include BEGIN_CHCORE_NAMESPACE @@ -56,15 +56,41 @@ class LIBCHCORE_API TSQLiteSerializerRowData : public ISerializerRowData { private: - TSQLiteSerializerRowData(const TSQLiteSerializerRowData&); - TSQLiteSerializerRowData& operator=(const TSQLiteSerializerRowData&); + typedef boost::variant< + bool, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + unsigned long long, + double, + TString, + TSmartPath + > InternalVariant; +private: + TSQLiteSerializerRowData& operator=(const TSQLiteSerializerRowData& rSrc); + public: TSQLiteSerializerRowData(size_t stRowID, TSQLiteColumnsDefinition& rColumnDefinition, bool bAdded); + TSQLiteSerializerRowData(const TSQLiteSerializerRowData& rSrc); virtual ~TSQLiteSerializerRowData(); - virtual ISerializerRowData& operator%(const TRowData& rData); - virtual ISerializerRowData& SetValue(const TRowData& rData); + 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); TString GetQuery(const TString& strContainerName) const; TRowID GetChangeIdentification() const; @@ -74,13 +100,16 @@ void MarkAsAdded(); private: + ISerializerRowData& SetValue(const TString& strColumn, const InternalVariant& rData); + +private: size_t m_stRowID; bool m_bAdded; #pragma warning(push) #pragma warning(disable: 4251) TSQLiteColumnsDefinition& m_rColumns; - typedef std::map MapVariants; // column id -> variant data + typedef std::map MapVariants; // column id -> variant data MapVariants m_mapValues; #pragma warning(pop) };