Commit Graph
100 Commits
Author SHA1 Message Date
tomasz.sowa ad4e8078ae MainSpaceParser class has been renamed to MainOptionsParser 2021-05-18 23:57:58 +02:00
tomasz.sowa 96e60c526f moved files: mainspaceparser/mainspaceparser.(h|cpp) -> mainoptions/mainoptionsparser.(h|cpp) 2021-05-18 23:50:42 +02:00
tomasz.sowa a5c8833452 added tests for MainSpaceParser 2021-05-18 22:57:26 +02:00
tomasz.sowa 91300bb245 make depend 2021-05-17 03:21:00 +02:00
tomasz.sowa fe82f63efb changed the way of building in Makefiles 2021-05-17 03:20:51 +02:00
tomasz.sowa da6a36a205 start creating tests for MainSpaceParser 2021-05-17 03:19:47 +02:00
tomasz.sowa ac691bccb7 updated MainSpaceParser to the new Space format, changed api to snake case
now we can:
- parse short options, those beginning with a hypnen '-'
- parse long options, those beginning with two hyphens '--'
- long options can have arguments in two forms:
  - either with an equal sign, e.g.: --opion-name=argument
  - or with a space, e.g: --option argument
    in the latter case we can have more than one argument, e.g: --option argument1 argument2
- parse non-option arguments, those after two hyphens to the end of a string, e.g: -- arg1 arg2
2021-05-17 03:09:21 +02:00
tomasz.sowa 77d7bb5e64 fixed in Space: set_empty_string(), set_empty_wstring(), set_empty_table() and set_empty_object() didn't clear its object
if the same kind of object already existed
2021-05-17 03:08:32 +02:00
tomasz.sowa 3d6c4e27c0 added .editorconfig file with tab style and tab size information
https://editorconfig.org/
2021-05-15 18:34:10 +02:00
tomasz.sowa 1260b303bc added ./m to .gitignore 2021-05-10 21:24:37 +02:00
tomasz.sowa d3dd74b3d4 added tests/tests to .gitignore 2021-05-10 20:16:54 +02:00
tomasz.sowa 7bdc4d2fc7 added global Makefile 2021-05-10 20:10:10 +02:00
tomasz.sowa ce81670bb6 added 'tests' directory with tests for the pikotools library
currently only tests for convert/text functions
2021-05-10 20:08:50 +02:00
tomasz.sowa cd9e501f48 make depend 2021-05-10 20:08:19 +02:00
tomasz.sowa b3cd4d5f7f removed definition of CXX and CXXFLAGS from Makefile 2021-05-10 20:07:08 +02:00
tomasz.sowa adee7d134f added macro PT_HAS_MORM in Log class where operator<<(morm::Model & model) is used 2021-05-10 20:05:55 +02:00
tomasz.sowa 7abe4b340a changes in convert/text functions
- changed function names: PascalCase to snake_case
- templates functions moved to a seperate file (text_private.h)
- as a public api only available functions with char/wchar_t/std::string/std::wstring
- ToLower(...) changed to to_lower_emplace(...), similar ToUpper(...) to to_upper_emplace(...)
- added functions:
  std::string to_lower(const std::string & str);
  std::string to_upper(const std::string & str);
  and with std::wstring too
- functions with postfix 'NoCase' changed to 'nc'
2021-05-10 20:04:12 +02:00
tomasz.sowa 3984c29fbf moved all directories to src subdirectory 2021-05-09 20:11:37 +02:00
tomasz.sowa 127f26884e make depend 2021-05-08 22:40:06 +02:00
tomasz.sowa b055c46ae8 fixed #3: CompareNoCase incorrectly returned that string1 is greater than string2 for some characters
when converting from 'char' to 'int' we should first convert to 'unsigned char' and then to 'int'
2021-05-08 22:37:31 +02:00
tomasz.sowa 463cec3283 fixed #2: Procedures for reading an utf8 string incorrectly read some utf-8 characters.
Those characters were treated as invalid characters.

UTF8ToInt_FirstOctet incorrectly checked if the first octed is zero (after removing first bits).
This is a case only if the utf-8 character consists of two bytes. For 3 or 4 bytes
the first part can have all bits equal zero.
2021-05-07 15:53:19 +02:00
tomasz.sowa 96eedd9be9 added support for morm::Model to Log:
Log & operator<<(morm::Model & model);
but we need some kind of a macro to allow this
2021-04-30 01:17:47 +02:00
tomasz.sowa f572250572 make depend 2021-04-30 01:17:29 +02:00
tomasz.sowa 16f6bdb358 fixed: Space::has_value(...) incorrectly compared strings 2021-04-14 17:42:57 +02:00
tomasz.sowa 297940ff7c fix in SpaceParser when parsing json format: floating point values such as 1.123e+01 where not correctly parsed ('+' character was not correctly parsed)
added to Space: some methods for searching a field with ignoring case:
Space * get_object_field_nc(const wchar_t * field)
Space * get_object_field_nc(const std::wstring & field);
const Space * get_object_field_nc(const wchar_t * field) const;
const Space * get_object_field_nc(const std::wstring & field) const;
2021-04-12 18:49:34 +02:00
tomasz.sowa 5d34db5fcf added to Space:
- methods for testing a string value if a Space is a string or a table:
  bool has_value(const char * val) const;
  bool has_value(const std::string & val) const;
  bool has_value(const wchar_t * val) const;
  bool has_value(const std::wstring & val) const;
- methods for testing a string value in an object (testing a string or a table):
  bool has_value(const wchar_t * field, const char * val) const;
  bool has_value(const wchar_t * field, const std::string & val) const;
  bool has_value(const wchar_t * field, const wchar_t * val) const;
  bool has_value(const wchar_t * field, const std::wstring & val) const;
- methods for removing a child space:
  void remove_child_space(const wchar_t * name);
  void remove_child_space(const std::wstring & name);
  void remove_child_space(size_t index);
2021-04-09 17:49:44 +02:00
tomasz.sowa a1e8f13f46 fixed: calculating buffer length in Space: sizeof(char) -> sizeof(wchar_t) 2021-04-08 17:40:30 +02:00
tomasz.sowa a2339eed34 fixed: in Space: pointers 'name' and 'child_spaces' were not correctly initialized in cctors
added in Space:
- some methods for adding values to an object, such as:
  Space & Space::add(const std::wstring & field, bool val) (bool, short, int, long, long long etc.)
- methods for creating lists:
  void Space::to_list(std::list<std::string> & output_list, bool clear_list) const
  bool Space::to_list(const wchar_t * field, std::list<std::string> & output_list, bool clear_list) const
- methods for converting a value from an object field:
  bool Space::to_bool(const wchar_t * field, bool default_value) const
- methods for testing strings:
  bool Space::is_equal(const char * val) const
  bool Space::is_equal(const std::string & val) const
  bool Space::is_equal(const wchar_t * val) const
  bool Space::is_equal(const std::wstring & val) const
- methods to get the raw pointer to a value from an object, such as:
  bool * Space::get_bool(const wchar_t * field)
  float * Space::get_float(const wchar_t * field)
- methods for finding a child space (used in Space format only)
  Space * Space::find_child_space(const wchar_t * name)
  Space & Space::find_add_child_space(const wchar_t * name)
2021-04-08 17:16:37 +02:00
tomasz.sowa 0aeac12fa0 make depend 2021-04-08 17:02:27 +02:00
tomasz.sowa 1c643a08b0 added a test whether we have reach the end of the input string
without this such an input json (incorrect json string as there is no {} characters):
"key": "value"
would be parsed correctly: "key" would be parsed and the rest would be skipped
2021-03-18 17:55:30 +01:00
tomasz.sowa 539faa4976 changed the indentation algorithm when pretty printing the space format (no visual changes) 2021-03-18 17:28:11 +01:00
tomasz.sowa 679b9e6173 added some indentation when printing 'pretty Space format' 2021-03-18 17:19:36 +01:00
tomasz.sowa 4119461f8e fixed: when reading a non-escaped space token we should check whether a delimiter was escaped or not
also a '#' was not tested
2021-03-18 16:26:56 +01:00
tomasz.sowa db5e516564 added to Space: serialization do Space format 2021-03-18 15:33:43 +01:00
tomasz.sowa 1baf5042fe removed: SpaceToJson 2021-03-17 18:35:48 +01:00
tomasz.sowa ba82ac7cbe renamed: JSONToSpaceParser -> SpaceParser 2021-03-17 18:33:41 +01:00
tomasz.sowa 961a02ab39 removed: old SpaceParser 2021-03-17 18:26:13 +01:00
tomasz.sowa 6e169f7650 added to JSONToSpaceParser: possibility to parse the Space format
renamed: ParseFile() -> ParseJSONFile()
added: ParseSpaceFile(), ParseJSON(), ParseSpace()
2021-03-17 18:24:50 +01:00
tomasz.sowa 31f7bdb857 added to Space: child_spaces and a name of a Space 2021-03-17 18:09:47 +01:00
tomasz.sowa 5b5a1dfbb6 changed the way how the library is built
- now there is only one Makefile in the root directory and we have only one pikotools.a lib file
- removed: mainparser
2021-03-17 13:16:01 +01:00
tomasz.sowa 61291cf7ad make depend 2021-03-16 18:43:34 +01:00
tomasz.sowa 0c0f15ab8a changed: JSONToSpaceParser can parse json string/file to the new Space format now
(some minor chars escaping not ready yet)
2021-03-16 18:40:14 +01:00
tomasz.sowa ba7fa1c195 fixed: in serialize_json_double(): the buffer length was calculated incorrectly: sizeof(char) changed to sizeof(wchar_t)
added to Space struct:
 void set_null();
 void set_empty_string();
 void set_empty_wstring();
 void set_empty_table();
 void set_empty_object();
 void clear();
2021-03-16 18:36:59 +01:00
tomasz.sowa bc9e4a3844 use PT::WideStreamToUTF8() instead of PT::WideToUTF8() for a moment 2021-03-16 18:35:08 +01:00
tomasz.sowa 4ef8f5a884 template<size_t stack_size, size_t heap_block_size> changed to template<typename StreamType> 2021-03-15 20:09:23 +01:00
tomasz.sowa f65d934e8c start working on a new version of Space struct - better support for JSON format
now we have a correct model, some methods for setting/getting values and serialization to json
(no serialization to Space yet)
2021-03-15 19:36:49 +01:00
tomasz.sowa 7ccd435e2c make depend 2021-03-15 19:36:04 +01:00
tomasz.sowa fac3a7eb71 reorganization in utf8
- utf8 auxiliary functions moved to utf8_private.h file
- in utf8.h are shown only functions available for consumers
- template functions has been moved to utf8_template.h (in utf8.h are only declarations)
  utf8_template.h is included at the end of utf8.h
- functions which take std::ostream changed to template (the stream is a template argument now)
2021-03-15 19:34:51 +01:00
tomasz.sowa effe9be0a3 added: typedef with char_type to TextStreamBase 2021-03-15 19:27:03 +01:00
tomasz.sowa df88d4c0fc temporarily blocked for compilation: mainspaceparser, jsontospaceparser, spaceparser, spacetojson 2021-03-15 19:25:04 +01:00
tomasz.sowa f771f12027 renamed: std::wstring Toa(...) -> std::wstring to_str(...)
added: std::string to_str(...)
2021-03-15 19:23:49 +01:00
tomasz.sowa 448ad42961 added: Toa() methods for converting to a string (new file convert/inttostr.cpp):
template<class StringType> void Toa(unsigned long long value, StringType & res, bool clear_string = true, int base = 10);
template<class StringType> void Toa(long long value, StringType & res, bool clear_string = true, int base = 10);
template<class StringType> void Toa(unsigned long value, StringType & res, bool clear_string = true, int base = 10);
template<class StringType> void Toa(long value, StringType & res, bool clear_string = true, int base = 10);
template<class StringType> void Toa(unsigned int value, StringType & res, bool clear_string = true, int base = 10);
template<class StringType> void Toa(int value, StringType & res, bool clear_string = true, int base = 10);
template<class StringType> void Toa(unsigned short value, StringType & res, bool clear_string = true, int base = 10);
template<class StringType> void Toa(short value, StringType & res, bool clear_string = true, int base = 10);
std::wstring Toa(unsigned long long value, int base);
std::wstring Toa(long long value, int base);
std::wstring Toa(unsigned long value, int base);
std::wstring Toa(long value, int base);
std::wstring Toa(unsigned int value, int base);
std::wstring Toa(int value, int base);
std::wstring Toa(unsigned short value, int base);
std::wstring Toa(short value, int base);
2021-03-03 02:24:30 +01:00
tomasz.sowa d9a4fa34e2 added .gitignore file 2021-02-17 17:04:05 +01:00
tomasz.sowa 49e49d1246 fixed: operator==() and operator!=() in iterators in MemBuffer<> template
did not have 'const' modifier and there was an error when compiling with clang with -std=c++20 flag

/usr/home/tomek/roboczy/prog/web.ttmath.org/../pikotools/textstream/textstream.h:225:11: fatal error: use of overloaded operator '!=' is ambiguous (with operand types
      'PT::TextStreamBase<char, 256, 4096>::const_iterator' (aka 'PT::MemBuffer<char, 256, 4096>::const_iterator') and 'PT::TextStreamBase<char, 256, 4096>::const_iterator')
        for( ; i != end() ; ++i)
               ~ ^  ~~~~~
/usr/home/tomek/roboczy/prog/web.ttmath.org/../morm/src/finderhelper.h:78:14: note: in instantiation of member function 'PT::TextStreamBase<char, 256, 4096>::to_string' requested here
                table_name.to_string(table_name_str);
                           ^
/usr/home/tomek/roboczy/prog/web.ttmath.org/../pikotools/membuffer/membuffer.h:93:8: note: candidate function
                bool operator!=(const const_iterator & i);
                     ^
/usr/home/tomek/roboczy/prog/web.ttmath.org/../pikotools/membuffer/membuffer.h:92:8: note: candidate function
                bool operator==(const const_iterator & i);
                     ^
/usr/home/tomek/roboczy/prog/web.ttmath.org/../pikotools/membuffer/membuffer.h:92:8: note: candidate function (with reversed parameter order)
2021-02-17 16:53:19 +01:00
tomasz.sowa aff698d155 a comment added in Log::~Log(), we have to consider whether calling save_log_and_clear() in ~Log() should be removed 2021-02-17 16:51:06 +01:00
tomasz.sowa a29cb45f6a added: in FileLog::save_log(): test whether synchro_lock() has returned true
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1216 e52654a7-88a9-db11-a3e9-0013d4bc506e
2019-09-25 16:12:10 +00:00
tomasz.sowa 7309c7817d in spacetojson: if there is only one item then do not put it in the table
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1170 e52654a7-88a9-db11-a3e9-0013d4bc506e
2019-02-19 13:08:07 +00:00
tomasz.sowa c2e63f9290 added: to Date: support for parsing timezone offsets
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1168 e52654a7-88a9-db11-a3e9-0013d4bc506e
2019-01-31 20:56:40 +00:00
tomasz.sowa 5a63a8c0ec added: to Log: IntMinWidth(size_t min_width)
minimal width for integers
added: to Log: operator<<(long long s)
added: to TextStreamBase:
       operator<<(long long);
       operator<<(unsigned long long);
       int_min_width(size_t min_width); // minimal width for integers
                          



git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1167 e52654a7-88a9-db11-a3e9-0013d4bc506e
2019-01-28 18:06:18 +00:00
tomasz.sowa e9df044f9e added to convert: PatternReplacer
for replacing parameters in patterns e.g. Replace("param %0", "first param")




git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1163 e52654a7-88a9-db11-a3e9-0013d4bc506e
2019-01-07 03:29:34 +00:00
tomasz.sowa 6c4a76baad changed in utf8: functions taking WTextStream now take a template TextStreamBase
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1157 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-11-24 17:09:25 +00:00
tomasz.sowa da4ed9c1f8 added to utf8:
bool UTF8ToWide(const char * utf8, size_t utf8_len, WTextStream & res, bool clear = true, int mode = 1);
bool UTF8ToWide(const char * utf8,                  WTextStream & res, bool clear = true, int mode = 1);
bool UTF8ToWide(const std::string & utf8,           WTextStream & res, bool clear = true, int mode = 1);
bool UTF8ToWide(std::istream & utf8,                WTextStream & res, bool clear = true, int mode = 1);

void WideToUTF8(PT::WTextStream & buffer,                       std::string & utf8,  bool clear = true, int mode = 1);
void WideToUTF8(PT::WTextStream & buffer,                       std::ostream & utf8, int mode = 1);

these functions need some testing yet




git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1156 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-11-24 13:30:45 +00:00
tomasz.sowa 8b3ae14d9a fixed: FileLog didn't save an utf8 sequence
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1155 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-11-24 10:47:13 +00:00
tomasz.sowa e971e1ef9b changed in logger:
renamed Logger -> Log
        this class has an api (<< operators) for taking what should be put to the log file
        as the buffer is used WTextStream which should be allocated elsewhere
added:  FileLog - this class saves to a file log





git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1149 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-11-23 17:07:52 +00:00
tomasz.sowa 6984a34fcd added to convert/text.h:
bool IsSubStringp(const StringType1 * short_str, const StringType2 * long_str);
bool IsSubString(const StringType1 * short_str, const StringType2 * long_str);
bool IsSubString(const StringType1 & short_str, const StringType2 & long_str);
bool IsSubStringNoCasep(const StringType1 * short_str, const StringType2 * long_str);
bool IsSubStringNoCase(const StringType1 * short_str, const StringType2 * long_str);
bool IsSubStringNoCase(const StringType1 & short_str, const StringType2 & long_str);
(moved from winix)





git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1133 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-10-29 23:47:23 +00:00
tomasz.sowa 5fe920d591 added: to convert/text.h:
int CompareNoCase(const StringType1 * str1_begin, const StringType1 * str1_end, const StringType2 * str2)



git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1130 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-10-24 16:25:47 +00:00
tomasz.sowa 605f24420e added to convert/text.h:
bool EqualNoCasep(const StringType1 * str1, const StringType2 * str)
int CompareNoCasep(const StringType1 * str1, const StringType2 * str2)




git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1127 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-10-04 13:41:07 +00:00
tomasz.sowa 8e9f83e377 changed: when parsing date skip 'Z' character if exists (iso format)
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1126 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-09-19 21:24:23 +00:00
tomasz.sowa 239e1e4674 added: CompareNoCase() to convert/text.h
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1125 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-08-11 17:37:35 +00:00
tomasz.sowa 040eb12c8b added: to convert/text
wchar_t ToLower(wchar_t c)
       wchar_t ToUpper(wchar_t c)
       void ToLower(std::wstring & s)
       void ToUpper(std::wstring & s)
       
       template<class StringType1, class StringType2>
       bool EqualNoCase(const StringType1 * str1, const StringType2 * str2)

       template<class StringType1, class StringType2>
       bool EqualNoCase(const StringType1 & str1, const StringType2 & str2)

       template<class StringType1, class StringType2>
       bool EqualNoCase(const StringType1 * str1_begin, const StringType1 * str1_end, const StringType2 * str2)

added: to space:
       Value * GetValueNoCase(const wchar_t * name);
       Value * GetValueNoCase(const std::wstring & name);
       const Value * GetValueNoCase(const wchar_t * name) const;
       const Value * GetValueNoCase(const std::wstring & name) const;

       
       



git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1111 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-05-25 17:12:28 +00:00
tomasz.sowa 72a510ce71 fixed: JSONToSpaceParser incorrectly read the last character from an UTF8 string (a last character before terminating zero char)
it caused a syntax error when parsing



git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1101 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-04-26 16:36:15 +00:00
tomasz.sowa dd325bd4f9 added: Logger
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1095 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-04-23 14:28:22 +00:00
tomasz.sowa bf4fdf6da7 added: Toa() for long long, int, short and unsigned as well
fixed: when serializing Date the year has at least 4 digits
       e.g. 0001 when the year is equal to one




git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1093 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-04-22 21:22:55 +00:00
tomasz.sowa 38355a2830 added: method Date::SerializeISO(Stream & out)
outputs to the given stream: YYYY-MM-DDTHH:MM:SSZ, eg: 1990-02-12T13:05:39Z
added: parsing date in a format: YYYY-MM-DDTHH:MM:SS ('T' letter given)




git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1089 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-04-20 09:33:53 +00:00
tomasz.sowa dc0cd13178 some work in Space
- default value returned from TextRef()



git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1083 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-04-16 22:55:58 +00:00
tomasz.sowa c910e22c00 temporarily commented 'current_nested_level' in JSONtoSpaceParser
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1082 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-04-16 22:51:14 +00:00
tomasz.sowa cb23304885 added: to methods Toull(), Toll(), Toul(), Toui(), Tol(), Toi()
a new parameter: bool allow_skip_whitechars default true
added:   new methods: Toull_b(), Toll_b(), Toul_b(), Toui_b(), Tol_b(), Toi_b()
         automatically detects the base (radix):
           4323 - base 10
           0122 - base 8  (string starts with 0)
           #fff - base 16 (string starts with #)
           &101 - base 2  (string starts with &)
added:   CharType * SkipWhiteFromBack(CharType * str, bool check_additional_chars = true, bool treat_new_line_as_white = true)
         skipping white characters from the end of a string
changed: Toll_b(), Toull_b(), Tol_b() and Toul_b() are used in Space now
         for methods ToInt() etc so we are able to use a different base now
changed: some work in Space (const correctness)
       




git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1070 e52654a7-88a9-db11-a3e9-0013d4bc506e
2018-01-05 20:03:11 +00:00
tomasz.sowa e24112b79b some work in Space API:
added: new GetValue() implementation
       Value * GetValue(const wchar_t * name)
       Value * GetValue(const std::wstring & name)
       const Value * GetValue(const wchar_t * name) const
       const Value * GetValue(const std::wstring & name) const
added: const correctness for Text() and TextA() methods
       std::wstring Text(...) const;
       std::string TextA(...) const;
added: TextA() with a wide second argument
       std::string TextA(const wchar_t * name, const wchar_t * def) const;
       std::string TextA(const std::wstring & name, const wchar_t * def) const;
       std::string TextA(const std::wstring & name, const std::wstring & def) const;
       




git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1067 e52654a7-88a9-db11-a3e9-0013d4bc506e
2017-12-07 11:35:12 +00:00
tomasz.sowa 7d51372844 added: functions for dealing with white characters:
bool IsWhite(wchar_t c, bool check_additional_chars, bool treat_new_line_as_white) (checking unicode white characters too)
       CharType * SkipWhite(CharType * str, bool check_additional_chars = true, bool treat_new_line_as_white = true)
       IsDigit(wchar_t c, int base, int * digit)

added: functions to converting from a string to an integer:
       unsigned long long Toull(const CharType * str, int base = 10, const CharType ** after_str = 0, bool * was_overflow = 0)
       long long Toll(const CharType * str, int base = 10, const CharType ** after_str = 0, bool * was_overflow = 0)
       unsigned long Toul(const CharType * str, int base = 10, const CharType ** after_str = 0, bool * was_overflow = 0)
       unsigned int  Toui(const CharType * str, int base = 10, const CharType ** after_str = 0, bool * was_overflow = 0)
       long          Tol(const CharType * str, int base = 10, const CharType ** after_str = 0, bool * was_overflow = 0)
       int           Toi(const CharType * str, int base = 10, const CharType ** after_str = 0, bool * was_overflow = 0)

changed: some work in Space (new Api)       
       now Text() methods returns std::wstring by value (before they were returned by reference)
       added std::wstring & TextRef() methods
       added unsigned int UInt(), unsigned long ULong() and LongLong() and ULongLong()
       GetValue() renamed to GetFirstValue()
       AText() renamed to TextA() and they return std::string by value now
       



git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1066 e52654a7-88a9-db11-a3e9-0013d4bc506e
2017-12-05 16:32:21 +00:00
tomasz.sowa cde990ba82 start changing the Space API
removed table_single from Space



git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1065 e52654a7-88a9-db11-a3e9-0013d4bc506e
2017-06-27 16:51:55 +00:00
tomasz.sowa 62f16ecb1b changed: using relative paths calculated with relative_path now
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1034 e52654a7-88a9-db11-a3e9-0013d4bc506e
2016-03-18 09:27:40 +00:00
tomasz.sowa 9deb2ff2f2 some work in MainSpaceParser: added reading long (--longname) parameters
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1025 e52654a7-88a9-db11-a3e9-0013d4bc506e
2016-02-08 18:00:17 +00:00
tomasz.sowa 7b4b576489 added: MainSpaceParser - starting writing a parser for main(argc, argv) arguments
(a Space object is returned)




git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@1019 e52654a7-88a9-db11-a3e9-0013d4bc506e
2016-01-21 18:49:42 +00:00
tomasz.sowa d9b583df76 instead of directly using 'ar' program we are using the AR macro now
(which defaults to 'ar' if you do not define it)



git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@991 e52654a7-88a9-db11-a3e9-0013d4bc506e
2014-11-12 04:11:28 +00:00
tomasz.sowa d655c7c872 removed: svn:executable attribute from files
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@985 e52654a7-88a9-db11-a3e9-0013d4bc506e
2014-11-01 17:11:00 +00:00
tomasz.sowa 39717a4dd2 fixed: in static size_t WideToInt(const wchar_t * wide_string, size_t string_len, int & z, bool & correct)
we didn't test UTF8_CheckRange()

added: functions for converting from a wide string into an utf8 c-string:
       bool WideToUTF8(const wchar_t * wide_string, size_t string_len, char * utf8, size_t utf8_len, size_t & utf8_written, int mode = 1);
       bool WideToUTF8(const wchar_t * wide_string,                    char * utf8, size_t utf8_len, size_t & utf8_written, int mode = 1);
       bool WideToUTF8(const std::wstring & wide_string,               char * utf8, size_t utf8_len, size_t & utf8_written, int mode = 1);

       bool WideToUTF8(const wchar_t * wide_string, size_t string_len, char * utf8, size_t utf8_len, int mode = 1);
       bool WideToUTF8(const wchar_t * wide_string,                    char * utf8, size_t utf8_len, int mode = 1);
       bool WideToUTF8(const std::wstring & wide_string,               char * utf8, size_t utf8_len, int mode = 1);




git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@962 e52654a7-88a9-db11-a3e9-0013d4bc506e
2014-10-04 11:18:33 +00:00
tomasz.sowa 28ea8f3c3e added: to membuffer:
template<typename in_item_type>
         void append(const in_item_type * item_array, size_t len);
         when adding values from item_array are casted to the type of the internal buffer
changed: some minor optimizations in Space (in Add() methods with WTextStream as an argument)
changed: removed following write() methods from TextStreamBase:
         TextStreamBase & write(const char * buf,    size_t len);
         TextStreamBase & write(const wchar_t * buf, size_t len);
         and added a template instead:
         template<typename in_buffer_type>
         TextStreamBase & write(const in_buffer_type * buf, size_t len);
         this allows to write char* buffer to TextStreamBase<wchar_t...> (and vice versa)
added:   two write() methods to TextStreamBase:
         write(const char * format, double val);
         write(const wchar_t * format, double val);
         converting double value to the text (format is the same as in snprintf)




git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@448 e52654a7-88a9-db11-a3e9-0013d4bc506e
2013-11-28 22:21:10 +00:00
tomasz.sowa 3cc5fd5e12 added: -I.. flag for Makefiles when compiling
changed: in SpaceToJSON::PrintToken():
         slash doesn't have to be escaped when serializing to JSON




git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@444 e52654a7-88a9-db11-a3e9-0013d4bc506e
2013-10-15 23:53:57 +00:00
tomasz.sowa aa394b1e4f dummy commit (testing a new repository)
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@439 e52654a7-88a9-db11-a3e9-0013d4bc506e
2013-05-07 05:13:08 +00:00
tomasz.sowa 6e57002a90 fixed: in MemBuffer::MemBuffer(const MemBuffer<> & arg)
we have to initialize some variables before calling the operator=



git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@434 e52654a7-88a9-db11-a3e9-0013d4bc506e
2012-10-27 07:45:39 +00:00
tomasz.sowa 1e48455942 added: to Space:
bool HasValue(const wchar_t * name, const wchar_t * value);
       bool HasValue(const wchar_t * name, const std::wstring & value);
       bool HasValue(const std::wstring & name, const wchar_t * value);
       bool HasValue(const std::wstring & name, const std::wstring & value);
       useful when testing whether a value is in a list (or in simple table too)



git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@433 e52654a7-88a9-db11-a3e9-0013d4bc506e
2012-10-17 19:55:16 +00:00
tomasz.sowa 02abfe62fa changed: in SpaceParser: now we do not parse special characters when reading commentaries
so we can parse:
         # such a \n string
         beforehand this \n was treated as a new line character
         and the parser was returning syntax error when reading above 'string'



git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@432 e52654a7-88a9-db11-a3e9-0013d4bc506e
2012-09-25 16:50:01 +00:00
tomasz.sowa c6c079f8aa some commentaries
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@431 e52654a7-88a9-db11-a3e9-0013d4bc506e
2012-09-11 21:41:48 +00:00
tomasz.sowa 5ad48470b6 added: to Space:
std::wstring & FindAdd(const WTextStream & name);
       std::wstring & Add(const wchar_t * name,        const WTextStream & value);
       std::wstring & Add(const std::wstring & name,   const WTextStream & value);
       std::wstring & Add(const WTextStream & name,    const WTextStream & value);




git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@430 e52654a7-88a9-db11-a3e9-0013d4bc506e
2012-07-25 10:27:20 +00:00
tomasz.sowa f8d5a962ed changed: rewritten the Serialize method in SpaceToJSON class
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@429 e52654a7-88a9-db11-a3e9-0013d4bc506e
2012-07-15 22:53:24 +00:00
tomasz.sowa 2b88d011f6 updated: SpaceToJSON (not finished yet)
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@428 e52654a7-88a9-db11-a3e9-0013d4bc506e
2012-07-13 12:26:09 +00:00
tomasz.sowa 2af6c28a54 added: JSONToSpaceParser -- a parser for JSON format to Space structure
added: SpaceToJSON -- a serializer from Space structure to JSON (not finished yet)



git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@427 e52654a7-88a9-db11-a3e9-0013d4bc506e
2012-07-12 15:01:15 +00:00
tomasz.sowa 600d0fc34a added: some work in membuffer and textstreambase
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@426 e52654a7-88a9-db11-a3e9-0013d4bc506e
2012-07-10 16:53:26 +00:00
tomasz.sowa d2d30cf640 added: convert (functions for converting) currently only int(long) -> string
added: textstream (an efficient memory stream for creating strings -- it's using MemBuffer)



git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@425 e52654a7-88a9-db11-a3e9-0013d4bc506e
2012-07-03 14:58:18 +00:00
tomasz.sowa 64b05fe8d1 added: some work in MemBuffer (copy cctor and assignment operator)
git-svn-id: svn://ttmath.org/publicrep/pikotools/trunk@424 e52654a7-88a9-db11-a3e9-0013d4bc506e
2012-07-02 20:27:31 +00:00