diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2018-02-15 09:06:13 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2018-02-15 10:23:11 +0100 |
commit | 0a92bc147f91f3ecacdf66d995f01f9577107a86 (patch) | |
tree | d748f1b081cd37eb2b4a6cd6b5254433ba8b8dab /csv | |
parent | d8327db8025e56500ebb0bef2ab45aa8963a36ca (diff) |
clean up "static" and "constexpr" types
- use `static constexpr inline' to avoid requiring
explicit declarations in object code
- use `const Foo* const' to maybe put into readonly
binary segment (at least for ELF DSOs)
- `constexpr' in function scope has storage, avoid
`static'
- don't use `constexpr' where there's no advantage,
like arrays
We'd like to avoid overhead of atomic initialization
for each function call. No idea how `static constexpr'
requiring storage in the standard plays with atomic
initialization requirement. Hearsay points that
`constexpr' without `static' in block scope behaves
more to our liking. It's all hazy though.
I'm not 100% sure if `static inline constexpr' has any
storage. Hopefully none, like a #define, and stuff
bigger than registers gets coalesced within the same
module, with small stuff being immediates.
Diffstat (limited to 'csv')
-rw-r--r-- | csv/csv.cpp | 4 | ||||
-rw-r--r-- | csv/csv.h | 5 |
2 files changed, 4 insertions, 5 deletions
diff --git a/csv/csv.cpp b/csv/csv.cpp index 189d05d9..8a5f5784 100644 --- a/csv/csv.cpp +++ b/csv/csv.cpp @@ -19,7 +19,7 @@ #include <utility> #include <algorithm> -const QTextCodec* CSV::m_codec = QTextCodec::codecForName("System"); +const QTextCodec* const CSV::m_codec = QTextCodec::codecForName("System"); const QRegExp CSV::m_rx = QRegExp(QString("((?:(?:[^;\\n]*;?)|(?:\"[^\"]*\";?))*)?\\n?")); const QRegExp CSV::m_rx2 = QRegExp(QString("(?:\"([^\"]*)\";?)|(?:([^;]*);?)?")); @@ -45,7 +45,7 @@ QString CSV::readLine() } else { - static const QChar lf(QChar::LineFeed); + const QChar lf(QChar::LineFeed); while (m_pos < m_string.length()) if (m_string[m_pos++] == lf) @@ -21,7 +21,6 @@ private: QString m_string; int m_pos; - static const QTextCodec* m_codec; - static const QRegExp m_rx; - static const QRegExp m_rx2; // Silly M$ compiler! It will generate an error if both of these variables are declared on the same line! (M$ Visual Studio Community 2015, Update 3) + static QTextCodec const* const m_codec; + static const QRegExp m_rx, m_rx2; }; |