use a char32_t character as a main character when converting strings

Use a char32_t instead of a wchar_t type. This is needed on systems
where sizeof(wchar_t) is equal to 2.
This commit is contained in:
2024-06-01 00:17:01 +02:00
parent 6fb7e29867
commit 90b4d9af0b
15 changed files with 92 additions and 190 deletions

View File

@@ -59,7 +59,6 @@
./dbconnector.o: ../../pikotools/src/convert/strtoint.h ./dbconnector.o: ../../pikotools/src/convert/strtoint.h
./dbconnector.o: ../../pikotools/src/convert/text.h ./dbconnector.o: ../../pikotools/src/convert/text.h
./dbconnector.o: ../../pikotools/src/convert/misc.h ./dbconnector.o: ../../pikotools/src/convert/misc.h
./dbconnector.o: ../../pikotools/src/textstream/types.h
./dbconnector.o: ../../pikotools/src/convert/double.h ./dbconnector.o: ../../pikotools/src/convert/double.h
./dbexpression.o: dbexpression.h baseexpression.h ./dbexpression.o: dbexpression.h baseexpression.h
./dbexpression.o: ../../pikotools/src/textstream/stream.h ./dbexpression.o: ../../pikotools/src/textstream/stream.h
@@ -147,8 +146,6 @@
./jsonexpression.o: fieldvaluehelper.h wrapper.h spacewrapper.h ./jsonexpression.o: fieldvaluehelper.h wrapper.h spacewrapper.h
./jsonexpression.o: baseobjectwrapper.h modelcontainerwrapper.h select.h ft.h ./jsonexpression.o: baseobjectwrapper.h modelcontainerwrapper.h select.h ft.h
./jsonexpression.o: ../../pikotools/src/convert/misc.h ./jsonexpression.o: ../../pikotools/src/convert/misc.h
./jsonexpression.o: ../../pikotools/src/convert/text.h
./jsonexpression.o: ../../pikotools/src/textstream/types.h
./model.o: model.h ../../pikotools/src/textstream/textstream.h ./model.o: model.h ../../pikotools/src/textstream/textstream.h
./model.o: ../../pikotools/src/textstream/stream.h ./model.o: ../../pikotools/src/textstream/stream.h
./model.o: ../../pikotools/src/space/space.h ./model.o: ../../pikotools/src/space/space.h
@@ -240,8 +237,6 @@
./csvexpression.o: fieldvaluehelper.h wrapper.h spacewrapper.h ./csvexpression.o: fieldvaluehelper.h wrapper.h spacewrapper.h
./csvexpression.o: baseobjectwrapper.h modelcontainerwrapper.h select.h ft.h ./csvexpression.o: baseobjectwrapper.h modelcontainerwrapper.h select.h ft.h
./csvexpression.o: ../../pikotools/src/convert/misc.h ./csvexpression.o: ../../pikotools/src/convert/misc.h
./csvexpression.o: ../../pikotools/src/convert/text.h
./csvexpression.o: ../../pikotools/src/textstream/types.h
./xmlexpression.o: xmlexpression.h flatexpression.h baseexpression.h ./xmlexpression.o: xmlexpression.h flatexpression.h baseexpression.h
./xmlexpression.o: ../../pikotools/src/textstream/stream.h ./xmlexpression.o: ../../pikotools/src/textstream/stream.h
./xmlexpression.o: ../../pikotools/src/date/date.h ./xmlexpression.o: ../../pikotools/src/date/date.h
@@ -259,8 +254,24 @@
./xmlexpression.o: fieldvaluehelper.h wrapper.h spacewrapper.h ./xmlexpression.o: fieldvaluehelper.h wrapper.h spacewrapper.h
./xmlexpression.o: baseobjectwrapper.h modelcontainerwrapper.h select.h ft.h ./xmlexpression.o: baseobjectwrapper.h modelcontainerwrapper.h select.h ft.h
./xmlexpression.o: ../../pikotools/src/convert/misc.h ./xmlexpression.o: ../../pikotools/src/convert/misc.h
./xmlexpression.o: ../../pikotools/src/convert/text.h ./postgresqlconnector.o: postgresqlconnector.h dbconnector.h
./xmlexpression.o: ../../pikotools/src/textstream/types.h ./postgresqlconnector.o: ../../pikotools/src/textstream/stream.h
./postgresqlconnector.o: ../../pikotools/src/log/log.h
./postgresqlconnector.o: ../../pikotools/src/textstream/textstream.h
./postgresqlconnector.o: ../../pikotools/src/textstream/stream.h
./postgresqlconnector.o: ../../pikotools/src/space/space.h
./postgresqlconnector.o: ../../pikotools/src/convert/inttostr.h
./postgresqlconnector.o: ../../pikotools/src/utf8/utf8.h
./postgresqlconnector.o: ../../pikotools/src/date/date.h
./postgresqlconnector.o: ../../pikotools/src/membuffer/membuffer.h
./postgresqlconnector.o: ../../pikotools/src/textstream/types.h
./postgresqlconnector.o: ../../pikotools/src/textstream/stream_private.h
./postgresqlconnector.o: ../../pikotools/src/log/filelog.h queryresult.h ft.h
./postgresqlconnector.o: postgresqlqueryresult.h postgresqlexpression.h
./postgresqlconnector.o: dbexpression.h baseexpression.h morm_types.h
./postgresqlconnector.o: modelenv.h modeldata.h cursorhelper.h finderhelper.h
./postgresqlconnector.o: fieldvaluehelper.h wrapper.h spacewrapper.h
./postgresqlconnector.o: baseobjectwrapper.h modelcontainerwrapper.h select.h
./transaction.o: transaction.h ../../pikotools/src/log/log.h ./transaction.o: transaction.h ../../pikotools/src/log/log.h
./transaction.o: ../../pikotools/src/textstream/textstream.h ./transaction.o: ../../pikotools/src/textstream/textstream.h
./transaction.o: ../../pikotools/src/textstream/stream.h ./transaction.o: ../../pikotools/src/textstream/stream.h
@@ -308,25 +319,3 @@
./csvconnector.o: ../../pikotools/src/log/filelog.h finderhelper.h ./csvconnector.o: ../../pikotools/src/log/filelog.h finderhelper.h
./csvconnector.o: fieldvaluehelper.h wrapper.h spacewrapper.h ./csvconnector.o: fieldvaluehelper.h wrapper.h spacewrapper.h
./csvconnector.o: baseobjectwrapper.h modelcontainerwrapper.h select.h ft.h ./csvconnector.o: baseobjectwrapper.h modelcontainerwrapper.h select.h ft.h
./postgresqlconnector.o: postgresqlconnector.h dbconnector.h
./postgresqlconnector.o: ../../pikotools/src/textstream/stream.h
./postgresqlconnector.o: ../../pikotools/src/log/log.h
./postgresqlconnector.o: ../../pikotools/src/textstream/textstream.h
./postgresqlconnector.o: ../../pikotools/src/textstream/stream.h
./postgresqlconnector.o: ../../pikotools/src/space/space.h
./postgresqlconnector.o: ../../pikotools/src/convert/inttostr.h
./postgresqlconnector.o: ../../pikotools/src/utf8/utf8.h
./postgresqlconnector.o: ../../pikotools/src/date/date.h
./postgresqlconnector.o: ../../pikotools/src/membuffer/membuffer.h
./postgresqlconnector.o: ../../pikotools/src/textstream/types.h
./postgresqlconnector.o: ../../pikotools/src/textstream/stream_private.h
./postgresqlconnector.o: ../../pikotools/src/log/filelog.h queryresult.h ft.h
./postgresqlconnector.o: postgresqlqueryresult.h postgresqlexpression.h
./postgresqlconnector.o: dbexpression.h baseexpression.h morm_types.h
./postgresqlconnector.o: modelenv.h modeldata.h cursorhelper.h finderhelper.h
./postgresqlconnector.o: fieldvaluehelper.h wrapper.h spacewrapper.h
./postgresqlconnector.o: baseobjectwrapper.h modelcontainerwrapper.h select.h
./postgresqlconnector.o: ../../pikotools/src/convert/strtoint.h
./postgresqlconnector.o: ../../pikotools/src/convert/text.h
./postgresqlconnector.o: ../../pikotools/src/convert/misc.h
./postgresqlconnector.o: ../../pikotools/src/textstream/types.h

View File

@@ -467,7 +467,7 @@ void BaseExpression::char_to_hex(char c, pt::Stream & stream)
} }
void BaseExpression::char_to_hex(wchar_t c, pt::Stream & stream) void BaseExpression::char_to_hex(char32_t c, pt::Stream & stream)
{ {
unsigned int z = static_cast<unsigned int>(c); unsigned int z = static_cast<unsigned int>(c);
@@ -485,17 +485,28 @@ void BaseExpression::char_to_hex(wchar_t c, pt::Stream & stream)
*/ */
bool BaseExpression::esc_char(char val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) bool BaseExpression::esc_char(char val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env)
{ {
return esc_char((wchar_t)(unsigned char)val, stream, field_type, model_env); return esc_char((char32_t)(unsigned char)val, stream, field_type, model_env);
} }
/* /*
* return true if the val character was escaped and put (or ignored) to the stream * return true if the val character was escaped and put (or ignored) to the stream
* *
* in most cases you have to provide your own esc_char(wchar_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) method
* *
*/ */
bool BaseExpression::esc_char(wchar_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) bool BaseExpression::esc_char(wchar_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env)
{
return esc_char((char32_t)val, stream, field_type, model_env);
}
/*
* return true if the val character was escaped and put (or ignored) to the stream
*
* in most cases you have to provide your own esc_char(char32_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) method
*
*/
bool BaseExpression::esc_char(char32_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env)
{ {
return false; return false;
} }
@@ -524,6 +535,12 @@ void BaseExpression::esc(unsigned char val, pt::Stream & stream, const FT & fiel
void BaseExpression::esc(wchar_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) void BaseExpression::esc(wchar_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env)
{
esc(static_cast<char32_t>(val), stream, field_type, model_env);
}
void BaseExpression::esc(char32_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env)
{ {
if( field_type.is_binary() || field_type.is_hexadecimal() ) if( field_type.is_binary() || field_type.is_hexadecimal() )
{ {
@@ -720,18 +737,17 @@ void BaseExpression::esc(const pt::Stream & val, pt::Stream & stream, const FT &
if( val.is_char_stream() ) if( val.is_char_stream() )
{ {
// from utf8 to utf8 or from utf8 to wide // from utf8 to utf8 or from utf8 to wide
pt::utf8_to_output_function(val, [&](int z) { pt::utf8_to_output_function_by_index(val, [&](int z) {
esc(static_cast<wchar_t>(z), stream, field_type, model_env); esc(static_cast<char32_t>(z), stream, field_type, model_env);
}); });
} }
else else
if( val.is_wchar_stream() ) if( val.is_wchar_stream() )
{ {
// from wide to wide or from wide to utf8 // from wide to wide or from wide to utf8
for(size_t i=0 ; i < val.size() ; ++i) pt::wide_to_output_function_by_index(val, [&](int z) {
{ esc(static_cast<char32_t>(z), stream, field_type, model_env);
esc(val.get_wchar(i), stream, field_type, model_env); });
}
} }
} }

View File

@@ -332,10 +332,12 @@ public:
*/ */
virtual bool esc_char(char val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr); virtual bool esc_char(char val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr);
virtual bool esc_char(wchar_t val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr); virtual bool esc_char(wchar_t val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr);
virtual bool esc_char(char32_t val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr);
virtual void esc(char val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr); virtual void esc(char val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr);
virtual void esc(unsigned char val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr); virtual void esc(unsigned char val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr);
virtual void esc(wchar_t val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr); virtual void esc(wchar_t val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr);
virtual void esc(char32_t val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr);
virtual void esc(const std::wstring & val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr); virtual void esc(const std::wstring & val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr);
virtual void esc(const wchar_t * val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr); virtual void esc(const wchar_t * val, pt::Stream & stream, const FT & field_type = FT::default_type, ModelEnv * model_env = nullptr);
@@ -366,24 +368,17 @@ public:
if( val.is_char_stream() ) if( val.is_char_stream() )
{ {
// from utf8 to utf8 or from utf8 to wide // from utf8 to utf8 or from utf8 to wide
typename pt::TextStreamBase<char_type, stack_size, heap_block_size>::const_iterator start = val.begin(); pt::utf8_to_output_function(val, [&](int z) {
typename pt::TextStreamBase<char_type, stack_size, heap_block_size>::const_iterator end = val.end(); esc(static_cast<char32_t>(z), stream, field_type, model_env);
pt::utf8_to_output_function(start, end, [&](int z) {
esc(static_cast<wchar_t>(z), stream, field_type, model_env);
}); });
} }
else else
if( val.is_wchar_stream() ) if( val.is_wchar_stream() )
{ {
// from wide to wide or from wide to utf8 // from wide to wide or from wide to utf8
typename pt::TextStreamBase<char_type, stack_size, heap_block_size>::const_iterator i = val.begin(); pt::wide_to_output_function(val, [&](int z) {
typename pt::TextStreamBase<char_type, stack_size, heap_block_size>::const_iterator end = val.end(); esc(static_cast<char32_t>(z), stream, field_type, model_env);
});
for(; i != end ; ++i)
{
esc(*i, stream, field_type, model_env);
}
} }
} }
@@ -762,7 +757,7 @@ protected:
char char_to_hex_part(char c); char char_to_hex_part(char c);
void char_to_hex(char c, pt::Stream & stream); void char_to_hex(char c, pt::Stream & stream);
void char_to_hex(wchar_t c, pt::Stream & stream); void char_to_hex(char32_t c, pt::Stream & stream);
void esc(const wchar_t * val, bool has_known_length, size_t len, pt::Stream & stream, const FT & field_type, ModelEnv * model_env); void esc(const wchar_t * val, bool has_known_length, size_t len, pt::Stream & stream, const FT & field_type, ModelEnv * model_env);
void esc(const char * val, bool has_known_length, size_t len, pt::Stream & stream, const FT & field_type, ModelEnv * model_env); void esc(const char * val, bool has_known_length, size_t len, pt::Stream & stream, const FT & field_type, ModelEnv * model_env);

View File

@@ -88,7 +88,7 @@ void CSVExpression::after_field_value_string(const FT & field_type, ModelEnv * m
} }
bool CSVExpression::esc_char(wchar_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) bool CSVExpression::esc_char(char32_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env)
{ {
return pt::try_esc_to_csv(val, stream); return pt::try_esc_to_csv(val, stream);
} }

View File

@@ -58,7 +58,7 @@ protected:
void after_field_value_string(const FT & field_type, ModelEnv * model_env) override; void after_field_value_string(const FT & field_type, ModelEnv * model_env) override;
using BaseExpression::esc; using BaseExpression::esc;
bool esc_char(wchar_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) override; bool esc_char(char32_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) override;
}; };

View File

@@ -596,11 +596,11 @@ void DbConnector::unescape_hex_char(const char * str, char & c)
} }
void DbConnector::unescape_hex_char(const char * str, wchar_t & c) void DbConnector::unescape_hex_char(const char * str, char32_t & c)
{ {
unsigned int res = 0; unsigned int res = 0;
unescape_hex_char(str, sizeof(wchar_t) * 2, res); unescape_hex_char(str, sizeof(wchar_t) * 2, res);
c = (wchar_t)res; c = (char32_t)res;
} }
@@ -610,7 +610,7 @@ void DbConnector::unescape_bin_char(const char * str, char & c)
} }
void DbConnector::unescape_bin_char(const char * str, wchar_t & c) void DbConnector::unescape_bin_char(const char * str, char32_t & c)
{ {
unescape_hex_char(str, c); unescape_hex_char(str, c);
} }
@@ -680,8 +680,15 @@ void DbConnector::get_value(const char * value_str, unsigned char & field_value,
} }
void DbConnector::get_value(const char * value_str, wchar_t & field_value, const FT & field_type) void DbConnector::get_value(const char * value_str, wchar_t & field_value, const FT & field_type)
{
char32_t tmp;
get_value(value_str, tmp, field_type);
field_value = static_cast<wchar_t>(tmp);
}
void DbConnector::get_value(const char * value_str, char32_t & field_value, const FT & field_type)
{ {
field_value = 0; field_value = 0;
@@ -705,7 +712,7 @@ void DbConnector::get_value(const char * value_str, wchar_t & field_value, const
if( is_correct ) if( is_correct )
{ {
field_value = static_cast<wchar_t>(value_int); field_value = static_cast<char32_t>(value_int);
} }
else else
{ {
@@ -714,13 +721,12 @@ void DbConnector::get_value(const char * value_str, wchar_t & field_value, const
} }
else else
{ {
field_value = static_cast<wchar_t>((unsigned char)*value_str); field_value = static_cast<char32_t>((unsigned char)*value_str);
} }
} }
} }
void DbConnector::get_value(const char * value_str, std::string & field_value, const FT & field_type) void DbConnector::get_value(const char * value_str, std::string & field_value, const FT & field_type)
{ {
if( field_type.is_hexadecimal() ) if( field_type.is_hexadecimal() )

View File

@@ -139,6 +139,7 @@ public:
virtual void get_value(const char * value_str, char & field_value, const FT & field_type = FT::default_type); virtual void get_value(const char * value_str, char & field_value, const FT & field_type = FT::default_type);
virtual void get_value(const char * value_str, unsigned char & field_value, const FT & field_type = FT::default_type); virtual void get_value(const char * value_str, unsigned char & field_value, const FT & field_type = FT::default_type);
virtual void get_value(const char * value_str, wchar_t & field_value, const FT & field_type = FT::default_type); virtual void get_value(const char * value_str, wchar_t & field_value, const FT & field_type = FT::default_type);
virtual void get_value(const char * value_str, char32_t & field_value, const FT & field_type = FT::default_type);
virtual void get_value(const char * value_str, std::wstring & field_value, const FT & field_type = FT::default_type); virtual void get_value(const char * value_str, std::wstring & field_value, const FT & field_type = FT::default_type);
virtual void get_value(const char * value_str, std::string & field_value, const FT & field_type = FT::default_type); virtual void get_value(const char * value_str, std::string & field_value, const FT & field_type = FT::default_type);
virtual void get_value(const char * value_str, std::string_view & field_value, const FT & field_type = FT::default_type); virtual void get_value(const char * value_str, std::string_view & field_value, const FT & field_type = FT::default_type);
@@ -197,10 +198,10 @@ protected:
virtual const char * query_last_sequence(const wchar_t * sequence_table_name); virtual const char * query_last_sequence(const wchar_t * sequence_table_name);
virtual void unescape_hex_char(const char * str, char & c); virtual void unescape_hex_char(const char * str, char & c);
virtual void unescape_hex_char(const char * str, wchar_t & c); virtual void unescape_hex_char(const char * str, char32_t & c);
virtual void unescape_bin_char(const char * str, char & c); virtual void unescape_bin_char(const char * str, char & c);
virtual void unescape_bin_char(const char * str, wchar_t & c); virtual void unescape_bin_char(const char * str, char32_t & c);
virtual void unescape_hex_string(const char * str, std::string & out); virtual void unescape_hex_string(const char * str, std::string & out);
virtual void unescape_hex_string(const char * str, std::wstring & out); virtual void unescape_hex_string(const char * str, std::wstring & out);

View File

@@ -135,7 +135,7 @@ void JSONExpression::after_field_value_list()
} }
bool JSONExpression::esc_char(wchar_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) bool JSONExpression::esc_char(char32_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env)
{ {
return pt::try_esc_to_json(val, stream); return pt::try_esc_to_json(val, stream);
} }

View File

@@ -62,7 +62,7 @@ protected:
void before_field_value_list() override; void before_field_value_list() override;
void after_field_value_list() override; void after_field_value_list() override;
bool esc_char(wchar_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) override; bool esc_char(char32_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) override;
void esc(const pt::Space & space, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) override; void esc(const pt::Space & space, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) override;

View File

@@ -34,16 +34,14 @@
// for sleep() // for sleep()
#include <unistd.h> #include <unistd.h>
#include "postgresqlconnector.h" #include "postgresqlconnector.h"
#include "utf8/utf8.h"
#include "postgresqlexpression.h" #include "postgresqlexpression.h"
#include "convert/strtoint.h"
namespace morm namespace morm
{ {
PostgreSQLConnector::PostgreSQLConnector() PostgreSQLConnector::PostgreSQLConnector()
{ {
pg_conn = nullptr; pg_conn = nullptr;
@@ -66,7 +64,6 @@ void PostgreSQLConnector::close()
} }
void PostgreSQLConnector::allocate_default_expression() void PostgreSQLConnector::allocate_default_expression()
{ {
deallocate_expression(); deallocate_expression();
@@ -75,9 +72,6 @@ void PostgreSQLConnector::allocate_default_expression()
} }
QueryResult * PostgreSQLConnector::create_query_result() QueryResult * PostgreSQLConnector::create_query_result()
{ {
return new PostgreSQLQueryResult(); return new PostgreSQLQueryResult();
@@ -279,97 +273,6 @@ bool PostgreSQLConnector::query_declare_cursor(const pt::Stream & stream, QueryR
} }
//void PostgreSQLConnector::CreateIdList(const std::vector<long> & id_tab, std::wstring & list, bool add_parentheses)
//{
//wchar_t buffer[50];
//size_t buffer_len = sizeof(buffer) / sizeof(wchar_t);
//
// list.clear();
//
// if( add_parentheses )
// list += '(';
//
// for(size_t i=0 ; i<id_tab.size() ; ++i)
// {
// Toa((unsigned long)id_tab[i], buffer, buffer_len);
// list += buffer;
//
// if( i+1 < id_tab.size() )
// list += ',';
// }
//
// if( add_parentheses )
// list += ')';
//}
//Error PostgreSQLConnector::BeginTrans()
//{
// return DoCommand("BEGIN;");
//}
//
//
//
//Error PostgreSQLConnector::RollbackTrans()
//{
// return DoCommand("ROLLBACK;");
//}
//
//
//
//Error PostgreSQLConnector::CommitTrans()
//{
// return DoCommand("COMMIT;");
//}
//
//
//
//bool PostgreSQLConnector::EndTrans(bool everything_ok)
//{
//bool result;
//
// if( everything_ok )
// {
// result = (CommitTrans() == WINIX_ERR_OK);
// }
// else
// {
// RollbackTrans();
// // we return the old err code
// result = false;
// }
//
//return result;
//}
//
//
//Error PostgreSQLConnector::EndTrans(Error err)
//{
// if( err == WINIX_ERR_OK )
// {
// err = CommitTrans();
// }
// else
// {
// // we return the old err code
// RollbackTrans();
// }
//
//return err;
//}
void PostgreSQLConnector::set_conn_param(const std::wstring & database_conn_string) void PostgreSQLConnector::set_conn_param(const std::wstring & database_conn_string)
{ {
db_conn_string = database_conn_string; db_conn_string = database_conn_string;
@@ -410,8 +313,6 @@ void PostgreSQLConnector::set_conn_param(const std::wstring & database_name, con
} }
void PostgreSQLConnector::overwrite(pt::TextStream & stream) void PostgreSQLConnector::overwrite(pt::TextStream & stream)
{ {
pt::TextStream::iterator i = stream.begin(); pt::TextStream::iterator i = stream.begin();
@@ -499,9 +400,6 @@ void PostgreSQLConnector::connect()
// use PQstatus(pg_conn) to check whether the connection works fine // use PQstatus(pg_conn) to check whether the connection works fine
} }
//
//
//
void PostgreSQLConnector::log_no_connection(size_t attempts) void PostgreSQLConnector::log_no_connection(size_t attempts)
{ {
@@ -571,8 +469,6 @@ bool PostgreSQLConnector::wait_for_connection(size_t attempts_max, size_t attemp
} }
// IMPROVE ME what about the exception now? // IMPROVE ME what about the exception now?
bool PostgreSQLConnector::assert_connection_is_working(bool put_log) bool PostgreSQLConnector::assert_connection_is_working(bool put_log)
{ {
@@ -662,7 +558,7 @@ void PostgreSQLConnector::unescape_bin_char(const char * str, char & field_value
} }
void PostgreSQLConnector::unescape_bin_char(const char * str, wchar_t & field_value) void PostgreSQLConnector::unescape_bin_char(const char * str, char32_t & field_value)
{ {
if( str[0]!='\\' || str[1]!='x' ) if( str[0]!='\\' || str[1]!='x' )
{ {
@@ -675,7 +571,6 @@ void PostgreSQLConnector::unescape_bin_char(const char * str, wchar_t & field_va
} }
void PostgreSQLConnector::unescape_bin_string(const char * str, std::string & out) void PostgreSQLConnector::unescape_bin_string(const char * str, std::string & out)
{ {
if( str[0]!='\\' || str[1]!='x' ) if( str[0]!='\\' || str[1]!='x' )

View File

@@ -156,7 +156,7 @@ protected:
void log_unsupported_bin_format(); void log_unsupported_bin_format();
void unescape_bin_char(const char * str, char & field_value) override; void unescape_bin_char(const char * str, char & field_value) override;
void unescape_bin_char(const char * str, wchar_t & field_value) override; void unescape_bin_char(const char * str, char32_t & field_value) override;
void unescape_bin_string(const char * str, std::string & out) override; void unescape_bin_string(const char * str, std::string & out) override;
void unescape_bin_string(const char * str, std::wstring & out) override; void unescape_bin_string(const char * str, std::wstring & out) override;

View File

@@ -74,7 +74,7 @@ void PostgreSQLExpression::after_field_value_string(const FT & field_type, Model
} }
bool PostgreSQLExpression::esc_char(wchar_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) bool PostgreSQLExpression::esc_char(char32_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env)
{ {
if( model_env && model_env->use_escaping_for_like ) if( model_env && model_env->use_escaping_for_like )
{ {

View File

@@ -58,7 +58,7 @@ private:
void before_field_value_string(const FT & field_type, ModelEnv * model_env) override; void before_field_value_string(const FT & field_type, ModelEnv * model_env) override;
void after_field_value_string(const FT & field_type, ModelEnv * model_env) override; void after_field_value_string(const FT & field_type, ModelEnv * model_env) override;
bool esc_char(wchar_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) override; bool esc_char(char32_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) override;
}; };

View File

@@ -93,7 +93,7 @@ void XMLExpression::put_name_value_separator()
} }
bool XMLExpression::esc_char(wchar_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) bool XMLExpression::esc_char(char32_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env)
{ {
return pt::try_esc_to_xml(val, stream); return pt::try_esc_to_xml(val, stream);
} }

View File

@@ -55,7 +55,7 @@ protected:
void put_name_value_separator() override; void put_name_value_separator() override;
using BaseExpression::esc; using BaseExpression::esc;
bool esc_char(wchar_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) override; bool esc_char(char32_t val, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) override;
void esc(const pt::Space & space, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) override; void esc(const pt::Space & space, pt::Stream & stream, const FT & field_type, ModelEnv * model_env) override;