From 9a307978b570bb44abf7b33ee11ea0e3fef26c89 Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Thu, 15 Sep 2022 12:01:11 +0200 Subject: [PATCH] libZRCola: Include stdex/idrec.h only after << and >> are overloaded gcc precompiles templates. When << and >> operators of our datatypes are not overloaded at the time is #included yet, gcc will seek/look for currently available << and >> operators when reaching std::ostream and std::istream templates. Signed-off-by: Simon Rozman --- ZRCola/pch.h | 2 +- ZRColaCompile/pch.h | 2 +- lib/libZRCola/include/zrcola/character.h | 7 ------ lib/libZRCola/include/zrcola/highlight.h | 5 ----- lib/libZRCola/include/zrcola/idrec.h | 27 ++++++++++++++++++++++++ lib/libZRCola/include/zrcola/language.h | 7 ------ lib/libZRCola/include/zrcola/tag.h | 7 ------ lib/libZRCola/include/zrcola/translate.h | 24 ++++++++++++--------- 8 files changed, 43 insertions(+), 38 deletions(-) create mode 100644 lib/libZRCola/include/zrcola/idrec.h diff --git a/ZRCola/pch.h b/ZRCola/pch.h index 13be1d2..e40beb9 100644 --- a/ZRCola/pch.h +++ b/ZRCola/pch.h @@ -46,7 +46,7 @@ #include #include -#include +#include #if defined(__WXMSW__) #include diff --git a/ZRColaCompile/pch.h b/ZRColaCompile/pch.h index 6cb35ce..a5fccb9 100644 --- a/ZRColaCompile/pch.h +++ b/ZRColaCompile/pch.h @@ -20,7 +20,7 @@ #include #pragma warning(pop) -#include +#include #include diff --git a/lib/libZRCola/include/zrcola/character.h b/lib/libZRCola/include/zrcola/character.h index 504a81d..53d755d 100644 --- a/lib/libZRCola/include/zrcola/character.h +++ b/lib/libZRCola/include/zrcola/character.h @@ -7,7 +7,6 @@ #include "common.h" -#include #include #include #include @@ -327,9 +326,6 @@ namespace ZRCola { }; - typedef stdex::idrec::record character_rec; - - /// /// Character category database /// @@ -486,9 +482,6 @@ namespace ZRCola { data .clear(); } }; - - - typedef stdex::idrec::record chrcat_rec; }; diff --git a/lib/libZRCola/include/zrcola/highlight.h b/lib/libZRCola/include/zrcola/highlight.h index 94606d6..f3668a3 100644 --- a/lib/libZRCola/include/zrcola/highlight.h +++ b/lib/libZRCola/include/zrcola/highlight.h @@ -7,8 +7,6 @@ #include "common.h" -#include - #include #pragma warning(push) @@ -164,9 +162,6 @@ namespace ZRCola { /// void Highlight(_In_z_count_(inputMax) const wchar_t* input, _In_ size_t inputMax, _In_ std::function callback) const; }; - - - typedef stdex::idrec::record highlight_rec; }; diff --git a/lib/libZRCola/include/zrcola/idrec.h b/lib/libZRCola/include/zrcola/idrec.h new file mode 100644 index 0000000..8a65cb8 --- /dev/null +++ b/lib/libZRCola/include/zrcola/idrec.h @@ -0,0 +1,27 @@ +/* + SPDX-License-Identifier: GPL-3.0-or-later + Copyright © 2015-2022 Amebis +*/ + +#pragma once + +#include "character.h" +#include "highlight.h" +#include "language.h" +#include "tag.h" +#include "translate.h" + +#include + +namespace ZRCola { + typedef stdex::idrec::record character_rec; + typedef stdex::idrec::record chrcat_rec; + typedef stdex::idrec::record highlight_rec; + typedef stdex::idrec::record langchar_rec; + typedef stdex::idrec::record language_rec; + typedef stdex::idrec::record chrtag_rec; + typedef stdex::idrec::record tagname_rec; + typedef stdex::idrec::record translation_rec; + typedef stdex::idrec::record transet_rec; + typedef stdex::idrec::record transeq_rec; +} diff --git a/lib/libZRCola/include/zrcola/language.h b/lib/libZRCola/include/zrcola/language.h index 42cca7d..d86d1a1 100644 --- a/lib/libZRCola/include/zrcola/language.h +++ b/lib/libZRCola/include/zrcola/language.h @@ -7,7 +7,6 @@ #include "common.h" -#include #include #include #include @@ -181,9 +180,6 @@ namespace ZRCola { }; - typedef stdex::idrec::record langchar_rec; - - /// /// Language database /// @@ -282,9 +278,6 @@ namespace ZRCola { data .clear(); } }; - - - typedef stdex::idrec::record language_rec; }; diff --git a/lib/libZRCola/include/zrcola/tag.h b/lib/libZRCola/include/zrcola/tag.h index f50ff05..63bb970 100644 --- a/lib/libZRCola/include/zrcola/tag.h +++ b/lib/libZRCola/include/zrcola/tag.h @@ -7,7 +7,6 @@ #include "common.h" -#include #include #include #include @@ -214,9 +213,6 @@ namespace ZRCola { }; - typedef stdex::idrec::record chrtag_rec; - - /// /// Tag name database /// @@ -437,9 +433,6 @@ namespace ZRCola { /// bool Search(_In_z_ const wchar_t *str, _In_ uint32_t locale, _Inout_ std::map &hits, _In_opt_ bool (__cdecl *fn_abort)(void *cookie) = NULL, _In_opt_ void *cookie = NULL) const; }; - - - typedef stdex::idrec::record tagname_rec; }; diff --git a/lib/libZRCola/include/zrcola/translate.h b/lib/libZRCola/include/zrcola/translate.h index c667bdd..7e9ba3b 100644 --- a/lib/libZRCola/include/zrcola/translate.h +++ b/lib/libZRCola/include/zrcola/translate.h @@ -8,7 +8,20 @@ #include "common.h" #include "language.h" -#include +namespace ZRCola { + class translation_db; +} + +/// +/// Reads translation database from a stream +/// +/// \param[in ] stream Input stream +/// \param[out] db Translation database +/// +/// \returns The stream \p stream +/// +inline std::istream& operator >>(_In_ std::istream& stream, _Out_ ZRCola::translation_db &db); + #include #include #include @@ -320,9 +333,6 @@ namespace ZRCola { }; - typedef stdex::idrec::record translation_rec; - - /// /// Translation set database /// @@ -436,9 +446,6 @@ namespace ZRCola { }; - typedef stdex::idrec::record transet_rec; - - /// /// Translation sequence database /// @@ -608,9 +615,6 @@ namespace ZRCola { data .clear(); } }; - - - typedef stdex::idrec::record transeq_rec; };