added support for PT::Space as a field in a Model

methods before_field_value_string() and after_field_value_string() moved
from DbExpression and JsonExpression to BaseExpression and made virtual
and now methods before_field_value(const std::wstring &) and after_field_value(const std::wstring &)
(and the rest of them with string arguments) can be removed from DbExpression, PostgreSqlExpression and JsonExpression
This commit is contained in:
2021-03-11 18:40:32 +01:00
parent f7490594ad
commit 7bef1d5ead
14 changed files with 246 additions and 318 deletions

View File

@@ -251,6 +251,7 @@ public:
virtual void esc(const PT::Date & date, PT::TextStream & stream);
virtual void esc(const PT::TextStream & val,PT::TextStream & stream);
virtual void esc(const PT::WTextStream & val,PT::TextStream & stream);
virtual void esc(const PT::Space & space, PT::TextStream & stream);
virtual bool is_long_field_name(const wchar_t * field_name);
virtual bool is_long_field_name(const PT::TextStream & table_name);
@@ -631,6 +632,8 @@ protected:
virtual void before_field_value(const PT::Date &);
virtual void after_field_value(const PT::Date &);
virtual void before_field_value(const PT::Space &);
virtual void after_field_value(const PT::Space &);
template<typename FieldValue>
void before_field_value(const FieldValue &)
@@ -650,43 +653,51 @@ protected:
* put_type for: signed char, wchar_t, char16_t, char32_t
*
*/
virtual void put_type(char val, PT::TextStream & stream);
virtual void put_type(unsigned char val, PT::TextStream & stream);
virtual void put_type(const std::wstring & val, PT::TextStream & stream);
virtual void put_type(const wchar_t * val, PT::TextStream & stream);
virtual void put_type(const std::string & val, PT::TextStream & stream);
virtual void put_type(const char * val, PT::TextStream & stream);
virtual void put_type(bool val, PT::TextStream & stream);
virtual void put_type(short val, PT::TextStream & stream);
virtual void put_type(unsigned short val, PT::TextStream & stream);
virtual void put_type(int val, PT::TextStream & stream);
virtual void put_type(unsigned int val, PT::TextStream & stream);
virtual void put_type(long val, PT::TextStream & stream);
virtual void put_type(unsigned long val, PT::TextStream & stream);
virtual void put_type(long long val, PT::TextStream & stream);
virtual void put_type(unsigned long long val, PT::TextStream & stream);
virtual void put_type(float val, PT::TextStream & stream);
virtual void put_type(double val, PT::TextStream & stream);
virtual void put_type(long double val, PT::TextStream & stream);
// virtual void put_type(char val, PT::TextStream & stream);
// virtual void put_type(unsigned char val, PT::TextStream & stream);
//
// virtual void put_type(const std::wstring & val, PT::TextStream & stream);
// virtual void put_type(const wchar_t * val, PT::TextStream & stream);
//
// virtual void put_type(const std::string & val, PT::TextStream & stream);
// virtual void put_type(const char * val, PT::TextStream & stream);
//
// virtual void put_type(bool val, PT::TextStream & stream);
// virtual void put_type(short val, PT::TextStream & stream);
// virtual void put_type(unsigned short val, PT::TextStream & stream);
// virtual void put_type(int val, PT::TextStream & stream);
// virtual void put_type(unsigned int val, PT::TextStream & stream);
// virtual void put_type(long val, PT::TextStream & stream);
// virtual void put_type(unsigned long val, PT::TextStream & stream);
// virtual void put_type(long long val, PT::TextStream & stream);
// virtual void put_type(unsigned long long val, PT::TextStream & stream);
// virtual void put_type(float val, PT::TextStream & stream);
// virtual void put_type(double val, PT::TextStream & stream);
// virtual void put_type(long double val, PT::TextStream & stream);
//virtual void put_type(void* val, PT::TextStream & stream);
virtual void put_type(const PT::Date & date, PT::TextStream & stream);
virtual void put_type(const Model & model, PT::TextStream & stream);
// virtual void put_type(const PT::Date & date, PT::TextStream & stream);
// virtual void put_type(const Model & model, PT::TextStream & stream);
//
// template<typename ListType>
// void put_type(const std::list<ListType> & model, PT::TextStream & stream)
// {
// stream << "table"; // may just use std::list?
// }
//
// template<typename ListType>
// void put_type(const std::vector<ListType> & model, PT::TextStream & stream)
// {
// stream << "table"; // may just just std::vector?
// }
private:
virtual void before_field_value_string();
virtual void after_field_value_string();
template<typename ListType>
void put_type(const std::list<ListType> & model, PT::TextStream & stream)
{
stream << "table"; // may just use std::list?
}
template<typename ListType>
void put_type(const std::vector<ListType> & model, PT::TextStream & stream)
{
stream << "table"; // may just just std::vector?
}
};