commit dd111936fcac3a34a41a1d2fe163132dcca7c3c4 Author: Daniel Swanson Date: Sat Jun 5 19:21:02 2021 -0500 helper functions for use in apertium diff --git a/lttoolbox/input_file.cc b/lttoolbox/input_file.cc index 6818aa3..51c9b11 100644 --- a/lttoolbox/input_file.cc +++ b/lttoolbox/input_file.cc @@ -20,6 +20,7 @@ #include #include #include +#include InputFile::InputFile() : infile(stdin), buffer_size(0) @@ -42,6 +43,15 @@ InputFile::open(const char* fname) return (infile != nullptr); } +void +InputFile::open_or_exit(const char* fname) +{ + if (!open(fname)) { + std::cerr << "Error: Unable to open '" << fname << "' for reading." << std::endl; + exit(EXIT_FAILURE); + } +} + void InputFile::close() { diff --git a/lttoolbox/input_file.h b/lttoolbox/input_file.h index dadb09b..7a8aad7 100644 --- a/lttoolbox/input_file.h +++ b/lttoolbox/input_file.h @@ -33,6 +33,7 @@ public: InputFile(); ~InputFile(); bool open(const char* fname = nullptr); + void open_or_exit(const char* fname = nullptr); void close(); UChar32 get(); UChar32 peek(); diff --git a/lttoolbox/ustring.cc b/lttoolbox/ustring.cc index b537a78..9bdfd24 100644 --- a/lttoolbox/ustring.cc +++ b/lttoolbox/ustring.cc @@ -63,6 +63,16 @@ to_ustring(const char* s) return ret; } +UString +to_ustring(char* s) +{ + auto sz = strlen(s); + UString ret; + ret.reserve(sz); + utf8::utf8to16(s, s+sz, std::back_inserter(ret)); + return ret; +} + void ustring_to_vec32(const UString& str, std::vector& vec) { diff --git a/lttoolbox/ustring.h b/lttoolbox/ustring.h index da4b3f6..c181e98 100644 --- a/lttoolbox/ustring.h +++ b/lttoolbox/ustring.h @@ -37,6 +37,9 @@ double stod(const UString& str); // for command-line arguments UString to_ustring(const char* str); +// for XML +UString to_ustring(char* str); + // append UTF-16 string to UTF-32 vector of symbols void ustring_to_vec32(const UString& str, std::vector& vec);