Working on generating string literals for inclusion in generated code.
This commit is contained in:
parent
0c3bb27e58
commit
092ed67d5e
8 changed files with 218 additions and 3 deletions
47
pglablib/codebuilder/StringEscapeRule.h
Normal file
47
pglablib/codebuilder/StringEscapeRule.h
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
#ifndef STRINGESCAPERULE_H
|
||||
#define STRINGESCAPERULE_H
|
||||
|
||||
#include <QString>
|
||||
#include <boost/optional.hpp>
|
||||
|
||||
enum class ConvertToNumericEscape {
|
||||
Utf8, ///< Generates upto four escapes for 4 utf8 chars
|
||||
Utf16, ///< Generates upto four escapes for 2 utf16 chars
|
||||
Utf32, ///< Generates a single escape for the unicode codepoint
|
||||
};
|
||||
|
||||
|
||||
enum class NumericEscapeFormat {
|
||||
Decimal,
|
||||
HexUpper,
|
||||
HexLower
|
||||
};
|
||||
|
||||
class CharToNumericConversion {
|
||||
public:
|
||||
ConvertToNumericEscape m_toNumericEscape;
|
||||
NumericEscapeFormat m_numericEscapeFormat;
|
||||
int m_minNumericDigits, m_maxNumericDigits;
|
||||
};
|
||||
|
||||
/** The basic method of applying a StringEscapeRule is to find all matches
|
||||
* in the string for the m_matchRegex.
|
||||
*
|
||||
* if m_numericConversion is set then the match is taken out of the string and replaced
|
||||
* with one or more numerical escapes.
|
||||
* if no conversion is needed the match is simple prefixed with m_prefixWidth
|
||||
*/
|
||||
class StringEscapeRule {
|
||||
public:
|
||||
/** Regular expression that finds characters in the string that need replacing.
|
||||
* Each character to replace should always generate one match.
|
||||
*/
|
||||
QString m_matchRegex;
|
||||
/** As often a simple escape character like \ or a doubling scheme is used this
|
||||
* field often provides enough flexibility.
|
||||
*/
|
||||
QString m_prefixWith;
|
||||
// boost::optional<CharToNumericConversion> m_numericConversion;
|
||||
};
|
||||
|
||||
#endif // STRINGESCAPERULE_H
|
||||
Loading…
Add table
Add a link
Reference in a new issue