\hypertarget{util_8hpp_source}{}\doxysection{util.\+hpp}
\label{util_8hpp_source}\index{include/proj/util.hpp@{include/proj/util.hpp}}

\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/******************************************************************************}}
\DoxyCodeLine{2 \textcolor{comment}{ *}}
\DoxyCodeLine{3 \textcolor{comment}{ * Project:  PROJ}}
\DoxyCodeLine{4 \textcolor{comment}{ * Purpose:  ISO19111:2019 implementation}}
\DoxyCodeLine{5 \textcolor{comment}{ * Author:   Even Rouault <even dot rouault at spatialys dot com>}}
\DoxyCodeLine{6 \textcolor{comment}{ *}}
\DoxyCodeLine{7 \textcolor{comment}{ ******************************************************************************}}
\DoxyCodeLine{8 \textcolor{comment}{ * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot com>}}
\DoxyCodeLine{9 \textcolor{comment}{ *}}
\DoxyCodeLine{10 \textcolor{comment}{ * Permission is hereby granted, free of charge, to any person obtaining a}}
\DoxyCodeLine{11 \textcolor{comment}{ * copy of this software and associated documentation files (the "{}Software"{}),}}
\DoxyCodeLine{12 \textcolor{comment}{ * to deal in the Software without restriction, including without limitation}}
\DoxyCodeLine{13 \textcolor{comment}{ * the rights to use, copy, modify, merge, publish, distribute, sublicense,}}
\DoxyCodeLine{14 \textcolor{comment}{ * and/or sell copies of the Software, and to permit persons to whom the}}
\DoxyCodeLine{15 \textcolor{comment}{ * Software is furnished to do so, subject to the following conditions:}}
\DoxyCodeLine{16 \textcolor{comment}{ *}}
\DoxyCodeLine{17 \textcolor{comment}{ * The above copyright notice and this permission notice shall be included}}
\DoxyCodeLine{18 \textcolor{comment}{ * in all copies or substantial portions of the Software.}}
\DoxyCodeLine{19 \textcolor{comment}{ *}}
\DoxyCodeLine{20 \textcolor{comment}{ * THE SOFTWARE IS PROVIDED "{}AS IS"{}, WITHOUT WARRANTY OF ANY KIND, EXPRESS}}
\DoxyCodeLine{21 \textcolor{comment}{ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,}}
\DoxyCodeLine{22 \textcolor{comment}{ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL}}
\DoxyCodeLine{23 \textcolor{comment}{ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER}}
\DoxyCodeLine{24 \textcolor{comment}{ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING}}
\DoxyCodeLine{25 \textcolor{comment}{ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER}}
\DoxyCodeLine{26 \textcolor{comment}{ * DEALINGS IN THE SOFTWARE.}}
\DoxyCodeLine{27 \textcolor{comment}{ ****************************************************************************/}}
\DoxyCodeLine{28 }
\DoxyCodeLine{29 \textcolor{preprocessor}{\#ifndef UTIL\_HH\_INCLUDED}}
\DoxyCodeLine{30 \textcolor{preprocessor}{\#define UTIL\_HH\_INCLUDED}}
\DoxyCodeLine{31 }
\DoxyCodeLine{32 \textcolor{preprocessor}{\#if !(\_\_cplusplus >= 201103L || (defined(\_MSC\_VER) \&\& \_MSC\_VER >= 1900))}}
\DoxyCodeLine{33 \textcolor{preprocessor}{\#error Must have C++11 or newer.}}
\DoxyCodeLine{34 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{35 }
\DoxyCodeLine{36 \textcolor{comment}{// windows.h can confict with Criterion::STRICT}}
\DoxyCodeLine{37 \textcolor{preprocessor}{\#ifdef STRICT}}
\DoxyCodeLine{38 \textcolor{preprocessor}{\#undef STRICT}}
\DoxyCodeLine{39 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{40 }
\DoxyCodeLine{41 \textcolor{preprocessor}{\#include <exception>}}
\DoxyCodeLine{42 \textcolor{preprocessor}{\#include <map>}}
\DoxyCodeLine{43 \textcolor{preprocessor}{\#include <memory>}}
\DoxyCodeLine{44 \textcolor{preprocessor}{\#include <string>}}
\DoxyCodeLine{45 \textcolor{preprocessor}{\#include <vector>}}
\DoxyCodeLine{46 }
\DoxyCodeLine{47 \textcolor{preprocessor}{\#ifndef NS\_PROJ}}
\DoxyCodeLine{49 \textcolor{keyword}{namespace }\mbox{\hyperlink{namespaceosgeo}{osgeo}} \{}
\DoxyCodeLine{51 \textcolor{keyword}{namespace }proj \{\}}
\DoxyCodeLine{52 \} \textcolor{comment}{// namespace osgeo}}
\DoxyCodeLine{53 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{54 }
\DoxyCodeLine{56 }
\DoxyCodeLine{57 \textcolor{preprocessor}{\#ifndef PROJ\_DLL}}
\DoxyCodeLine{58 \textcolor{preprocessor}{\#if defined(\_MSC\_VER)}}
\DoxyCodeLine{59 \textcolor{preprocessor}{\#ifdef PROJ\_MSVC\_DLL\_EXPORT}}
\DoxyCodeLine{60 \textcolor{preprocessor}{\#define PROJ\_DLL \_\_declspec(dllexport)}}
\DoxyCodeLine{61 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{62 \textcolor{preprocessor}{\#define PROJ\_DLL \_\_declspec(dllimport)}}
\DoxyCodeLine{63 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{64 \textcolor{preprocessor}{\#elif defined(\_\_GNUC\_\_)}}
\DoxyCodeLine{65 \textcolor{preprocessor}{\#define PROJ\_DLL \_\_attribute\_\_((visibility("{}default"{}})))}
\DoxyCodeLine{66 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{67 \textcolor{preprocessor}{\#define PROJ\_DLL}}
\DoxyCodeLine{68 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{69 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{70 }
\DoxyCodeLine{71 \textcolor{preprocessor}{\#ifndef PROJ\_MSVC\_DLL}}
\DoxyCodeLine{72 \textcolor{preprocessor}{\#if defined(\_MSC\_VER)}}
\DoxyCodeLine{73 \textcolor{preprocessor}{\#define PROJ\_MSVC\_DLL PROJ\_DLL}}
\DoxyCodeLine{74 \textcolor{preprocessor}{\#define PROJ\_GCC\_DLL}}
\DoxyCodeLine{75 \textcolor{preprocessor}{\#define PROJ\_INTERNAL}}
\DoxyCodeLine{76 \textcolor{preprocessor}{\#elif defined(\_\_GNUC\_\_)}}
\DoxyCodeLine{77 \textcolor{preprocessor}{\#define PROJ\_MSVC\_DLL}}
\DoxyCodeLine{78 \textcolor{preprocessor}{\#define PROJ\_GCC\_DLL PROJ\_DLL}}
\DoxyCodeLine{79 \textcolor{preprocessor}{\#if !defined(\_\_MINGW32\_\_)}}
\DoxyCodeLine{80 \textcolor{preprocessor}{\#define PROJ\_INTERNAL \_\_attribute\_\_((visibility("{}hidden"{}})))}
\DoxyCodeLine{81 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{82 \textcolor{preprocessor}{\#define PROJ\_INTERNAL}}
\DoxyCodeLine{83 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{84 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{85 \textcolor{preprocessor}{\#define PROJ\_MSVC\_DLL}}
\DoxyCodeLine{86 \textcolor{preprocessor}{\#define PROJ\_GCC\_DLL}}
\DoxyCodeLine{87 \textcolor{preprocessor}{\#define PROJ\_INTERNAL}}
\DoxyCodeLine{88 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{89 \textcolor{preprocessor}{\#define PROJ\_FOR\_TEST PROJ\_DLL}}
\DoxyCodeLine{90 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{91 }
\DoxyCodeLine{92 \textcolor{preprocessor}{\#include "{}nn.hpp"{}}}
\DoxyCodeLine{93 }
\DoxyCodeLine{94 \textcolor{comment}{/* To allow customizing the base namespace of PROJ */}}
\DoxyCodeLine{95 \textcolor{preprocessor}{\#ifdef PROJ\_INTERNAL\_CPP\_NAMESPACE}}
\DoxyCodeLine{96 \textcolor{preprocessor}{\#define NS\_PROJ osgeo::internalproj}}
\DoxyCodeLine{97 \textcolor{preprocessor}{\#define NS\_PROJ\_START                                                          \(\backslash\)}}
\DoxyCodeLine{98 \textcolor{preprocessor}{    namespace osgeo \{                                                          \(\backslash\)}}
\DoxyCodeLine{99 \textcolor{preprocessor}{    namespace internalproj \{}}
\DoxyCodeLine{100 \textcolor{preprocessor}{\#define NS\_PROJ\_END                                                            \(\backslash\)}}
\DoxyCodeLine{101 \textcolor{preprocessor}{    \}                                                                          \(\backslash\)}}
\DoxyCodeLine{102 \textcolor{preprocessor}{    \}}}
\DoxyCodeLine{103 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{104 \textcolor{preprocessor}{\#ifndef NS\_PROJ}}
\DoxyCodeLine{105 \textcolor{preprocessor}{\#define NS\_PROJ osgeo::proj}}
\DoxyCodeLine{106 \textcolor{preprocessor}{\#define NS\_PROJ\_START                                                          \(\backslash\)}}
\DoxyCodeLine{107 \textcolor{preprocessor}{    namespace osgeo \{                                                          \(\backslash\)}}
\DoxyCodeLine{108 \textcolor{preprocessor}{    namespace proj \{}}
\DoxyCodeLine{109 \textcolor{preprocessor}{\#define NS\_PROJ\_END                                                            \(\backslash\)}}
\DoxyCodeLine{110 \textcolor{preprocessor}{    \}                                                                          \(\backslash\)}}
\DoxyCodeLine{111 \textcolor{preprocessor}{    \}}}
\DoxyCodeLine{112 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{113 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{114 }
\DoxyCodeLine{115 \textcolor{comment}{// Private-\/implementation (Pimpl) pattern}}
\DoxyCodeLine{116 \textcolor{preprocessor}{\#define PROJ\_OPAQUE\_PRIVATE\_DATA                                               \(\backslash\)}}
\DoxyCodeLine{117 \textcolor{preprocessor}{  private:                                                                     \(\backslash\)}}
\DoxyCodeLine{118 \textcolor{preprocessor}{    struct PROJ\_INTERNAL Private;                                              \(\backslash\)}}
\DoxyCodeLine{119 \textcolor{preprocessor}{    std::unique\_ptr<Private> d;                                                \(\backslash\)}}
\DoxyCodeLine{120 \textcolor{preprocessor}{                                                                               \(\backslash\)}}
\DoxyCodeLine{121 \textcolor{preprocessor}{  protected:                                                                   \(\backslash\)}}
\DoxyCodeLine{122 \textcolor{preprocessor}{    PROJ\_INTERNAL Private *getPrivate() noexcept \{ return d.get(); \}           \(\backslash\)}}
\DoxyCodeLine{123 \textcolor{preprocessor}{    PROJ\_INTERNAL const Private *getPrivate() const noexcept \{                 \(\backslash\)}}
\DoxyCodeLine{124 \textcolor{preprocessor}{        return d.get();                                                        \(\backslash\)}}
\DoxyCodeLine{125 \textcolor{preprocessor}{    \}                                                                          \(\backslash\)}}
\DoxyCodeLine{126 \textcolor{preprocessor}{                                                                               \(\backslash\)}}
\DoxyCodeLine{127 \textcolor{preprocessor}{  private:}}
\DoxyCodeLine{128 }
\DoxyCodeLine{129 \textcolor{comment}{// To include in the protected/private section of a class definition,}}
\DoxyCodeLine{130 \textcolor{comment}{// to be able to call make\_shared on a protected/private constructor}}
\DoxyCodeLine{131 \textcolor{preprocessor}{\#define INLINED\_MAKE\_SHARED                                                    \(\backslash\)}}
\DoxyCodeLine{132 \textcolor{preprocessor}{    template <typename T, typename... Args>                                    \(\backslash\)}}
\DoxyCodeLine{133 \textcolor{preprocessor}{    static std::shared\_ptr<T> make\_shared(Args \&\&... args) \{                   \(\backslash\)}}
\DoxyCodeLine{134 \textcolor{preprocessor}{        return std::shared\_ptr<T>(new T(std::forward<Args>(args)...));         \(\backslash\)}}
\DoxyCodeLine{135 \textcolor{preprocessor}{    \}                                                                          \(\backslash\)}}
\DoxyCodeLine{136 \textcolor{preprocessor}{    template <typename T, typename... Args>                                    \(\backslash\)}}
\DoxyCodeLine{137 \textcolor{preprocessor}{    static util::nn\_shared\_ptr<T> nn\_make\_shared(Args \&\&... args) \{            \(\backslash\)}}
\DoxyCodeLine{138 \textcolor{preprocessor}{        return util::nn\_shared\_ptr<T>(                                         \(\backslash\)}}
\DoxyCodeLine{139 \textcolor{preprocessor}{            util::i\_promise\_i\_checked\_for\_null,                                \(\backslash\)}}
\DoxyCodeLine{140 \textcolor{preprocessor}{            std::shared\_ptr<T>(new T(std::forward<Args>(args)...)));           \(\backslash\)}}
\DoxyCodeLine{141 \textcolor{preprocessor}{    \}}}
\DoxyCodeLine{142 }
\DoxyCodeLine{143 \textcolor{comment}{// To include in the protected/private section of a class definition,}}
\DoxyCodeLine{144 \textcolor{comment}{// to be able to call make\_unique on a protected/private constructor}}
\DoxyCodeLine{145 \textcolor{preprocessor}{\#define INLINED\_MAKE\_UNIQUE                                                    \(\backslash\)}}
\DoxyCodeLine{146 \textcolor{preprocessor}{    template <typename T, typename... Args>                                    \(\backslash\)}}
\DoxyCodeLine{147 \textcolor{preprocessor}{    static std::unique\_ptr<T> make\_unique(Args \&\&... args) \{                   \(\backslash\)}}
\DoxyCodeLine{148 \textcolor{preprocessor}{        return std::unique\_ptr<T>(new T(std::forward<Args>(args)...));         \(\backslash\)}}
\DoxyCodeLine{149 \textcolor{preprocessor}{    \}}}
\DoxyCodeLine{150 }
\DoxyCodeLine{151 \textcolor{preprocessor}{\#ifdef DOXYGEN\_ENABLED}}
\DoxyCodeLine{152 \textcolor{preprocessor}{\#define PROJ\_FRIEND(mytype)}}
\DoxyCodeLine{153 \textcolor{preprocessor}{\#define PROJ\_FRIEND\_OPTIONAL(mytype)}}
\DoxyCodeLine{154 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{155 \textcolor{preprocessor}{\#define PROJ\_FRIEND(mytype) friend class mytype}}
\DoxyCodeLine{156 \textcolor{preprocessor}{\#define PROJ\_FRIEND\_OPTIONAL(mytype) friend class util::optional<mytype>}}
\DoxyCodeLine{157 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{158 }
\DoxyCodeLine{159 \textcolor{preprocessor}{\#ifndef PROJ\_PRIVATE}}
\DoxyCodeLine{160 \textcolor{preprocessor}{\#define PROJ\_PRIVATE public}}
\DoxyCodeLine{161 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{162 }
\DoxyCodeLine{163 \textcolor{preprocessor}{\#if defined(\_\_GNUC\_\_)}}
\DoxyCodeLine{164 \textcolor{preprocessor}{\#define PROJ\_NO\_INLINE \_\_attribute\_\_((noinline))}}
\DoxyCodeLine{165 \textcolor{preprocessor}{\#define PROJ\_NO\_RETURN \_\_attribute\_\_((noreturn))}}
\DoxyCodeLine{166 \textcolor{comment}{// Applies to a function that has no side effect.}}
\DoxyCodeLine{167 \textcolor{preprocessor}{\#define PROJ\_PURE\_DECL const noexcept \_\_attribute\_\_((pure))}}
\DoxyCodeLine{168 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{169 \textcolor{preprocessor}{\#define PROJ\_NO\_RETURN}}
\DoxyCodeLine{170 \textcolor{preprocessor}{\#define PROJ\_NO\_INLINE}}
\DoxyCodeLine{171 \textcolor{preprocessor}{\#define PROJ\_PURE\_DECL const noexcept}}
\DoxyCodeLine{172 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{173 \textcolor{preprocessor}{\#define PROJ\_PURE\_DEFN const noexcept}}
\DoxyCodeLine{174 }
\DoxyCodeLine{176 }
\DoxyCodeLine{177 NS\_PROJ\_START}
\DoxyCodeLine{178 }
\DoxyCodeLine{180 \textcolor{keyword}{namespace }io \{}
\DoxyCodeLine{181 \textcolor{keyword}{class }DatabaseContext;}
\DoxyCodeLine{182 \textcolor{keyword}{using} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1io_ac071e92c14195058e37bcd4c7b75b42f}{DatabaseContextPtr}} = std::shared\_ptr<DatabaseContext>;}
\DoxyCodeLine{183 \} \textcolor{comment}{// namespace io}}
\DoxyCodeLine{185 \textcolor{comment}{}}
\DoxyCodeLine{191 \textcolor{keyword}{namespace }util \{}
\DoxyCodeLine{192 }
\DoxyCodeLine{194 \textcolor{comment}{// Import a few classes from nn.hpp to expose them under our ::util namespace}}
\DoxyCodeLine{195 \textcolor{comment}{// for conveniency.}}
\DoxyCodeLine{196 using ::dropbox::oxygen::i\_promise\_i\_checked\_for\_null;}
\DoxyCodeLine{197 using ::dropbox::oxygen::nn;}
\DoxyCodeLine{198 using ::dropbox::oxygen::nn\_dynamic\_pointer\_cast;}
\DoxyCodeLine{199 using ::dropbox::oxygen::nn\_make\_shared;}
\DoxyCodeLine{200 }
\DoxyCodeLine{201 \textcolor{comment}{// For return statements, to convert from derived type to base type}}
\DoxyCodeLine{202 using ::dropbox::oxygen::nn\_static\_pointer\_cast;}
\DoxyCodeLine{203 }
\DoxyCodeLine{204 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T> \textcolor{keyword}{using} nn\_shared\_ptr = nn<std::shared\_ptr<T>>;}
\DoxyCodeLine{205 }
\DoxyCodeLine{206 \textcolor{preprocessor}{\#define NN\_NO\_CHECK(p)                                                         \(\backslash\)}}
\DoxyCodeLine{207 \textcolor{preprocessor}{    ::dropbox::oxygen::nn<typename std::remove\_const<                          \(\backslash\)}}
\DoxyCodeLine{208 \textcolor{preprocessor}{        typename std::remove\_reference<decltype(p)>::type>::type>(             \(\backslash\)}}
\DoxyCodeLine{209 \textcolor{preprocessor}{        dropbox::oxygen::i\_promise\_i\_checked\_for\_null, (p))}}
\DoxyCodeLine{210 }
\DoxyCodeLine{212 }
\DoxyCodeLine{213 \textcolor{comment}{// To avoid formatting differences between clang-\/format 3.8 and 7}}
\DoxyCodeLine{214 \textcolor{preprocessor}{\#define PROJ\_NOEXCEPT noexcept}}
\DoxyCodeLine{215 }
\DoxyCodeLine{217 \textcolor{comment}{// isOfExactType<MyType>(*p) checks that the type of *p is exactly MyType}}
\DoxyCodeLine{218 \textcolor{keyword}{template} <\textcolor{keyword}{typename} TemplateT, \textcolor{keyword}{typename} ObjectT>}
\DoxyCodeLine{219 \textcolor{keyword}{inline} \textcolor{keywordtype}{bool} isOfExactType(\textcolor{keyword}{const} ObjectT \&o) \{}
\DoxyCodeLine{220     \textcolor{keywordflow}{return} \textcolor{keyword}{typeid}(TemplateT).hash\_code() == \textcolor{keyword}{typeid}(o).hash\_code();}
\DoxyCodeLine{221 \}}
\DoxyCodeLine{223 }
\DoxyCodeLine{226 \textcolor{keyword}{template} <\textcolor{keyword}{class} T> \textcolor{keyword}{class }\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional}{optional}} \{}
\DoxyCodeLine{227   \textcolor{keyword}{public}:}
\DoxyCodeLine{229     \textcolor{keyword}{inline} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional}{optional}}() : hasVal\_(\textcolor{keyword}{false}) \{\}}
\DoxyCodeLine{230     \textcolor{keyword}{inline} \textcolor{keyword}{explicit} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional}{optional}}(\textcolor{keyword}{const} T \&val) : hasVal\_(\textcolor{keyword}{true}), val\_(val) \{\}}
\DoxyCodeLine{231     \textcolor{keyword}{inline} \textcolor{keyword}{explicit} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional}{optional}}(T \&\&val)}
\DoxyCodeLine{232         : hasVal\_(\textcolor{keyword}{true}), val\_(std::forward<T>(val)) \{\}}
\DoxyCodeLine{233 }
\DoxyCodeLine{234     \textcolor{keyword}{inline} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional}{optional}}(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional}{optional}} \&) = \textcolor{keywordflow}{default};}
\DoxyCodeLine{235     \textcolor{keyword}{inline} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional}{optional}}(\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional}{optional}} \&\&other) PROJ\_NOEXCEPT}
\DoxyCodeLine{236         : hasVal\_(other.hasVal\_),}
\DoxyCodeLine{237           \textcolor{comment}{// cppcheck-\/suppress functionStatic}}
\DoxyCodeLine{238           val\_(std::forward<T>(other.val\_)) \{}
\DoxyCodeLine{239         other.hasVal\_ = \textcolor{keyword}{false};}
\DoxyCodeLine{240     \}}
\DoxyCodeLine{241 }
\DoxyCodeLine{242     \textcolor{keyword}{inline} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional}{optional}} \&operator=(\textcolor{keyword}{const} T \&val) \{}
\DoxyCodeLine{243         hasVal\_ = \textcolor{keyword}{true};}
\DoxyCodeLine{244         val\_ = val;}
\DoxyCodeLine{245         \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{246     \}}
\DoxyCodeLine{247     \textcolor{keyword}{inline} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional}{optional}} \&operator=(T \&\&val) \textcolor{keyword}{noexcept} \{}
\DoxyCodeLine{248         hasVal\_ = \textcolor{keyword}{true};}
\DoxyCodeLine{249         val\_ = std::forward<T>(val);}
\DoxyCodeLine{250         \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{251     \}}
\DoxyCodeLine{252     \textcolor{keyword}{inline} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional}{optional}} \&operator=(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional}{optional}} \&) = \textcolor{keywordflow}{default};}
\DoxyCodeLine{253     \textcolor{keyword}{inline} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional}{optional}} \&operator=(\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional}{optional}} \&\&other) \textcolor{keyword}{noexcept} \{}
\DoxyCodeLine{254         hasVal\_ = other.hasVal\_;}
\DoxyCodeLine{255         val\_ = std::forward<T>(other.val\_);}
\DoxyCodeLine{256         other.hasVal\_ = \textcolor{keyword}{false};}
\DoxyCodeLine{257         \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{258     \}}
\DoxyCodeLine{259 }
\DoxyCodeLine{260     \textcolor{keyword}{inline} T *operator-\/>() \{ \textcolor{keywordflow}{return} \&val\_; \}}
\DoxyCodeLine{261     \textcolor{keyword}{inline} T \&operator*() \{ \textcolor{keywordflow}{return} val\_; \}}
\DoxyCodeLine{262 }
\DoxyCodeLine{264 }
\DoxyCodeLine{266     \textcolor{keyword}{inline} \textcolor{keyword}{const} T *\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional_a997e2ff81333231256a4ab557758e302}{operator-\/>}}()\textcolor{keyword}{ const }\{ \textcolor{keywordflow}{return} \&val\_; \}}
\DoxyCodeLine{267 }
\DoxyCodeLine{269     \textcolor{keyword}{inline} \textcolor{keyword}{const} T \&\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional_a2a2b6413a520f0b0a2acc38e2e2f3129}{operator*}}()\textcolor{keyword}{ const }\{ \textcolor{keywordflow}{return} val\_; \}}
\DoxyCodeLine{270 }
\DoxyCodeLine{272     \textcolor{keyword}{inline} \textcolor{keyword}{explicit} \textcolor{keyword}{operator} bool() const noexcept \{ \textcolor{keywordflow}{return} hasVal\_; \}}
\DoxyCodeLine{273 }
\DoxyCodeLine{275     \textcolor{keyword}{inline} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional_ac3efdc7fdbcb8265d0e22502208d5707}{has\_value}}() const noexcept \{ \textcolor{keywordflow}{return} hasVal\_; \}}
\DoxyCodeLine{276 }
\DoxyCodeLine{277   \textcolor{keyword}{private}:}
\DoxyCodeLine{278     \textcolor{keywordtype}{bool} hasVal\_;}
\DoxyCodeLine{279     T val\_\{\};}
\DoxyCodeLine{280 \};}
\DoxyCodeLine{281 }
\DoxyCodeLine{282 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{283 }
\DoxyCodeLine{284 \textcolor{keyword}{class }BaseObject;}
\DoxyCodeLine{286 \textcolor{keyword}{using} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a4ec69d7c5d1f74e15c67b41fa295bd81}{BaseObjectPtr}} = std::shared\_ptr<BaseObject>;}
\DoxyCodeLine{287 \textcolor{preprocessor}{\#if 1}}
\DoxyCodeLine{289 \textcolor{keyword}{struct }\mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{BaseObjectNNPtr}} : \textcolor{keyword}{public} util::nn<BaseObjectPtr> \{}
\DoxyCodeLine{290     \textcolor{comment}{// This trick enables to avoid inlining of the destructor.}}
\DoxyCodeLine{291     \textcolor{comment}{// This is mostly an alias of the base class.}}
\DoxyCodeLine{293 \textcolor{comment}{}    \textcolor{keyword}{template} <\textcolor{keyword}{class} T>}
\DoxyCodeLine{294     \textcolor{comment}{// cppcheck-\/suppress noExplicitConstructor}}
\DoxyCodeLine{295     \mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{BaseObjectNNPtr}}(\textcolor{keyword}{const} util::nn<std::shared\_ptr<T>> \&x)}
\DoxyCodeLine{296         : util::nn<BaseObjectPtr>(x) \{\}}
\DoxyCodeLine{297 }
\DoxyCodeLine{298     \textcolor{keyword}{template} <\textcolor{keyword}{class} T>}
\DoxyCodeLine{299     \textcolor{comment}{// cppcheck-\/suppress noExplicitConstructor}}
\DoxyCodeLine{300     \mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{BaseObjectNNPtr}}(util::nn<std::shared\_ptr<T>> \&\&x) noexcept}
\DoxyCodeLine{301         : util::nn<BaseObjectPtr>(NN\_NO\_CHECK(std::move(x.as\_nullable()))) \{\}}
\DoxyCodeLine{302 }
\DoxyCodeLine{303     \textcolor{keyword}{explicit} \mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{BaseObjectNNPtr}}(::dropbox::oxygen::i\_promise\_i\_checked\_for\_null\_t,}
\DoxyCodeLine{304                              \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a4ec69d7c5d1f74e15c67b41fa295bd81}{BaseObjectPtr}} \&\&arg) noexcept}
\DoxyCodeLine{305         : util::nn<BaseObjectPtr>(i\_promise\_i\_checked\_for\_null,}
\DoxyCodeLine{306                                   std::move(arg)) \{\}}
\DoxyCodeLine{307     \mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{BaseObjectNNPtr}}(\textcolor{keyword}{const} \mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{BaseObjectNNPtr}} \&) = \textcolor{keywordflow}{default};}
\DoxyCodeLine{308     \mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{BaseObjectNNPtr}} \&operator=(\textcolor{keyword}{const} \mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{BaseObjectNNPtr}} \&) = \textcolor{keywordflow}{default};}
\DoxyCodeLine{309 }
\DoxyCodeLine{310     PROJ\_DLL \mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{\string~BaseObjectNNPtr}}();}
\DoxyCodeLine{312 \};}
\DoxyCodeLine{313 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{314 \textcolor{keyword}{using} \mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{BaseObjectNNPtr}} = util::nn<BaseObjectPtr>;}
\DoxyCodeLine{315 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{316 }
\DoxyCodeLine{319 \textcolor{keyword}{class }PROJ\_GCC\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BaseObject}{BaseObject}} \{}
\DoxyCodeLine{320   \textcolor{keyword}{public}:}
\DoxyCodeLine{322     \textcolor{keyword}{virtual} PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BaseObject}{\string~BaseObject}}();}
\DoxyCodeLine{324 }
\DoxyCodeLine{325     PROJ\_PRIVATE :}
\DoxyCodeLine{327         PROJ\_INTERNAL \mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{BaseObjectNNPtr}}}
\DoxyCodeLine{328         shared\_from\_this() \textcolor{keyword}{const};}
\DoxyCodeLine{330 }
\DoxyCodeLine{331   \textcolor{keyword}{protected}:}
\DoxyCodeLine{332     PROJ\_INTERNAL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BaseObject}{BaseObject}}();}
\DoxyCodeLine{333     PROJ\_INTERNAL \textcolor{keywordtype}{void} assignSelf(\textcolor{keyword}{const} \mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{BaseObjectNNPtr}} \&self);}
\DoxyCodeLine{334     PROJ\_INTERNAL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BaseObject}{BaseObject}} \&operator=(\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BaseObject}{BaseObject}} \&\&other);}
\DoxyCodeLine{335 }
\DoxyCodeLine{336   \textcolor{keyword}{private}:}
\DoxyCodeLine{337     PROJ\_OPAQUE\_PRIVATE\_DATA}
\DoxyCodeLine{338 \};}
\DoxyCodeLine{339 }
\DoxyCodeLine{340 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{341 }
\DoxyCodeLine{344 \textcolor{keyword}{class }PROJ\_GCC\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1IComparable}{IComparable}} \{}
\DoxyCodeLine{345   \textcolor{keyword}{public}:}
\DoxyCodeLine{347     PROJ\_DLL \textcolor{keyword}{virtual} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1IComparable}{\string~IComparable}}();}
\DoxyCodeLine{349 }
\DoxyCodeLine{351     \textcolor{keyword}{enum class} PROJ\_MSVC\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1IComparable_af198b4ab092a20e3a5495308d68d7140}{Criterion}} \{}
\DoxyCodeLine{353         STRICT,}
\DoxyCodeLine{354 }
\DoxyCodeLine{362         EQUIVALENT,}
\DoxyCodeLine{363 }
\DoxyCodeLine{368         EQUIVALENT\_EXCEPT\_AXIS\_ORDER\_GEOGCRS,}
\DoxyCodeLine{369     \};}
\DoxyCodeLine{370 }
\DoxyCodeLine{371     PROJ\_DLL \textcolor{keywordtype}{bool}}
\DoxyCodeLine{372     isEquivalentTo(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1IComparable}{IComparable}} *other,}
\DoxyCodeLine{373                    Criterion criterion = Criterion::STRICT,}
\DoxyCodeLine{374                    \textcolor{keyword}{const} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1io_ac071e92c14195058e37bcd4c7b75b42f}{io::DatabaseContextPtr}} \&dbContext = \textcolor{keyword}{nullptr}) \textcolor{keyword}{const};}
\DoxyCodeLine{375 }
\DoxyCodeLine{376     PROJ\_PRIVATE :}
\DoxyCodeLine{377 }
\DoxyCodeLine{379         PROJ\_INTERNAL \textcolor{keyword}{virtual} \textcolor{keywordtype}{bool}}
\DoxyCodeLine{380         \_isEquivalentTo(}
\DoxyCodeLine{381             \textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1IComparable}{IComparable}} *other, Criterion criterion = Criterion::STRICT,}
\DoxyCodeLine{382             \textcolor{keyword}{const} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1io_ac071e92c14195058e37bcd4c7b75b42f}{io::DatabaseContextPtr}} \&dbContext = \textcolor{keyword}{nullptr}) \textcolor{keyword}{const} = 0;}
\DoxyCodeLine{384 \};}
\DoxyCodeLine{385 }
\DoxyCodeLine{386 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{387 }
\DoxyCodeLine{390 \textcolor{keyword}{class }\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BoxedValue}{BoxedValue}} final : \textcolor{keyword}{public} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BaseObject}{BaseObject}} \{}
\DoxyCodeLine{391   \textcolor{keyword}{public}:}
\DoxyCodeLine{393 }
\DoxyCodeLine{394     \textcolor{keyword}{enum class} Type \{}
\DoxyCodeLine{396         STRING,}
\DoxyCodeLine{398         INTEGER,}
\DoxyCodeLine{400         BOOLEAN}
\DoxyCodeLine{401     \};}
\DoxyCodeLine{403 }
\DoxyCodeLine{404     \textcolor{comment}{// cppcheck-\/suppress noExplicitConstructor}}
\DoxyCodeLine{405     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BoxedValue}{BoxedValue}}(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *stringValueIn); \textcolor{comment}{// needed to avoid the bool}}
\DoxyCodeLine{406                                                     \textcolor{comment}{// constructor to be taken !}}
\DoxyCodeLine{407     \textcolor{comment}{// cppcheck-\/suppress noExplicitConstructor}}
\DoxyCodeLine{408     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BoxedValue}{BoxedValue}}(\textcolor{keyword}{const} std::string \&stringValueIn);}
\DoxyCodeLine{409     \textcolor{comment}{// cppcheck-\/suppress noExplicitConstructor}}
\DoxyCodeLine{410     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BoxedValue}{BoxedValue}}(\textcolor{keywordtype}{int} integerValueIn);}
\DoxyCodeLine{411     \textcolor{comment}{// cppcheck-\/suppress noExplicitConstructor}}
\DoxyCodeLine{412     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BoxedValue}{BoxedValue}}(\textcolor{keywordtype}{bool} booleanValueIn);}
\DoxyCodeLine{413 }
\DoxyCodeLine{414     PROJ\_PRIVATE :}
\DoxyCodeLine{416         PROJ\_INTERNAL}
\DoxyCodeLine{417         \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BoxedValue}{BoxedValue}}(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BoxedValue}{BoxedValue}} \&other);}
\DoxyCodeLine{418 }
\DoxyCodeLine{419     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BoxedValue}{\string~BoxedValue}}() \textcolor{keyword}{override};}
\DoxyCodeLine{420 }
\DoxyCodeLine{421     PROJ\_INTERNAL \textcolor{keyword}{const} Type \&type() \textcolor{keyword}{const};}
\DoxyCodeLine{422     PROJ\_INTERNAL \textcolor{keyword}{const} std::string \&stringValue() \textcolor{keyword}{const};}
\DoxyCodeLine{423     PROJ\_INTERNAL \textcolor{keywordtype}{int} integerValue() \textcolor{keyword}{const};}
\DoxyCodeLine{424     PROJ\_INTERNAL \textcolor{keywordtype}{bool} booleanValue() \textcolor{keyword}{const};}
\DoxyCodeLine{426 }
\DoxyCodeLine{427   \textcolor{keyword}{private}:}
\DoxyCodeLine{428     PROJ\_OPAQUE\_PRIVATE\_DATA}
\DoxyCodeLine{429     \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BoxedValue}{BoxedValue}} \&operator=(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BoxedValue}{BoxedValue}} \&) = \textcolor{keyword}{delete};}
\DoxyCodeLine{430 }
\DoxyCodeLine{431     PROJ\_INTERNAL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BoxedValue}{BoxedValue}}();}
\DoxyCodeLine{432 \};}
\DoxyCodeLine{433 }
\DoxyCodeLine{435 \textcolor{keyword}{using} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_ae7c16c9a1acb387eda56240ec8c4d9f9}{BoxedValuePtr}} = std::shared\_ptr<BoxedValue>;}
\DoxyCodeLine{437 \textcolor{keyword}{using} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a17a09a921e2152e38f0740d05dc577d3}{BoxedValueNNPtr}} = util::nn<BoxedValuePtr>;}
\DoxyCodeLine{438 }
\DoxyCodeLine{439 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{440 }
\DoxyCodeLine{441 \textcolor{keyword}{class }\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1ArrayOfBaseObject}{ArrayOfBaseObject}};}
\DoxyCodeLine{443 \textcolor{keyword}{using} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a46059151bb89c607e3177e5b8bb23615}{ArrayOfBaseObjectPtr}} = std::shared\_ptr<ArrayOfBaseObject>;}
\DoxyCodeLine{445 \textcolor{keyword}{using} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a7fc091170790d0923879c9367fc5cc6d}{ArrayOfBaseObjectNNPtr}} = util::nn<ArrayOfBaseObjectPtr>;}
\DoxyCodeLine{446 }
\DoxyCodeLine{449 \textcolor{keyword}{class }\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1ArrayOfBaseObject}{ArrayOfBaseObject}} final : \textcolor{keyword}{public} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BaseObject}{BaseObject}} \{}
\DoxyCodeLine{450   \textcolor{keyword}{public}:}
\DoxyCodeLine{452     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1ArrayOfBaseObject}{\string~ArrayOfBaseObject}}() \textcolor{keyword}{override};}
\DoxyCodeLine{454 }
\DoxyCodeLine{455     PROJ\_DLL \textcolor{keywordtype}{void} add(\textcolor{keyword}{const} \mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{BaseObjectNNPtr}} \&obj);}
\DoxyCodeLine{456 }
\DoxyCodeLine{457     PROJ\_DLL \textcolor{keyword}{static} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a7fc091170790d0923879c9367fc5cc6d}{ArrayOfBaseObjectNNPtr}} create();}
\DoxyCodeLine{458 }
\DoxyCodeLine{459     PROJ\_PRIVATE :}
\DoxyCodeLine{461         std::vector<BaseObjectNNPtr>::const\_iterator}
\DoxyCodeLine{462         begin() \textcolor{keyword}{const};}
\DoxyCodeLine{463     std::vector<BaseObjectNNPtr>::const\_iterator end() \textcolor{keyword}{const};}
\DoxyCodeLine{464     \textcolor{keywordtype}{bool} empty() \textcolor{keyword}{const};}
\DoxyCodeLine{466 }
\DoxyCodeLine{467   \textcolor{keyword}{protected}:}
\DoxyCodeLine{468     \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1ArrayOfBaseObject}{ArrayOfBaseObject}}();}
\DoxyCodeLine{469     INLINED\_MAKE\_SHARED}
\DoxyCodeLine{470 }
\DoxyCodeLine{471   \textcolor{keyword}{private}:}
\DoxyCodeLine{472     \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1ArrayOfBaseObject}{ArrayOfBaseObject}}(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1ArrayOfBaseObject}{ArrayOfBaseObject}} \&other) = \textcolor{keyword}{delete};}
\DoxyCodeLine{473     \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1ArrayOfBaseObject}{ArrayOfBaseObject}} \&operator=(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1ArrayOfBaseObject}{ArrayOfBaseObject}} \&other) = \textcolor{keyword}{delete};}
\DoxyCodeLine{474     PROJ\_OPAQUE\_PRIVATE\_DATA}
\DoxyCodeLine{475 \};}
\DoxyCodeLine{476 }
\DoxyCodeLine{477 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{478 }
\DoxyCodeLine{480 \textcolor{keyword}{class }\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}} \{}
\DoxyCodeLine{481   \textcolor{keyword}{public}:}
\DoxyCodeLine{482     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}}();}
\DoxyCodeLine{484     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}}(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}} \&other);}
\DoxyCodeLine{485     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{\string~PropertyMap}}();}
\DoxyCodeLine{487 }
\DoxyCodeLine{488     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}} \&set(\textcolor{keyword}{const} std::string \&key,}
\DoxyCodeLine{489                               \textcolor{keyword}{const} \mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{BaseObjectNNPtr}} \&val);}
\DoxyCodeLine{490 }
\DoxyCodeLine{492     \textcolor{keyword}{template} <\textcolor{keyword}{class} T>}
\DoxyCodeLine{493     \textcolor{keyword}{inline} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}} \&set(\textcolor{keyword}{const} std::string \&key,}
\DoxyCodeLine{494                             \textcolor{keyword}{const} nn\_shared\_ptr<T> \&val) \{}
\DoxyCodeLine{495         \textcolor{keywordflow}{return} set(}
\DoxyCodeLine{496             key, \mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{BaseObjectNNPtr}}(i\_promise\_i\_checked\_for\_null,}
\DoxyCodeLine{497                                  \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a4ec69d7c5d1f74e15c67b41fa295bd81}{BaseObjectPtr}}(val.as\_nullable(), val.get())));}
\DoxyCodeLine{498     \}}
\DoxyCodeLine{500 }
\DoxyCodeLine{501     \textcolor{comment}{// needed to avoid the bool constructor to be taken !}}
\DoxyCodeLine{502     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}} \&set(\textcolor{keyword}{const} std::string \&key, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *val);}
\DoxyCodeLine{503 }
\DoxyCodeLine{504     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}} \&set(\textcolor{keyword}{const} std::string \&key, \textcolor{keyword}{const} std::string \&val);}
\DoxyCodeLine{505 }
\DoxyCodeLine{506     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}} \&set(\textcolor{keyword}{const} std::string \&key, \textcolor{keywordtype}{int} val);}
\DoxyCodeLine{507 }
\DoxyCodeLine{508     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}} \&set(\textcolor{keyword}{const} std::string \&key, \textcolor{keywordtype}{bool} val);}
\DoxyCodeLine{509 }
\DoxyCodeLine{510     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}} \&set(\textcolor{keyword}{const} std::string \&key,}
\DoxyCodeLine{511                               \textcolor{keyword}{const} std::vector<std::string> \&array);}
\DoxyCodeLine{512 }
\DoxyCodeLine{513     PROJ\_PRIVATE :}
\DoxyCodeLine{515         \textcolor{keyword}{const} \mbox{\hyperlink{structosgeo_1_1proj_1_1util_1_1BaseObjectNNPtr}{BaseObjectNNPtr}} *}
\DoxyCodeLine{516         get(\textcolor{keyword}{const} std::string \&key) \textcolor{keyword}{const};}
\DoxyCodeLine{517 }
\DoxyCodeLine{518     \textcolor{comment}{// throw(InvalidValueTypeException)}}
\DoxyCodeLine{519     \textcolor{keywordtype}{bool} getStringValue(\textcolor{keyword}{const} std::string \&key, std::string \&outVal) \textcolor{keyword}{const};}
\DoxyCodeLine{520     \textcolor{keywordtype}{bool} getStringValue(\textcolor{keyword}{const} std::string \&key,}
\DoxyCodeLine{521                         \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1optional}{optional<std::string>}} \&outVal) \textcolor{keyword}{const};}
\DoxyCodeLine{522     \textcolor{keywordtype}{void} unset(\textcolor{keyword}{const} std::string \&key);}
\DoxyCodeLine{523 }
\DoxyCodeLine{524     \textcolor{keyword}{static} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}} createAndSetName(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *name);}
\DoxyCodeLine{525     \textcolor{keyword}{static} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}} createAndSetName(\textcolor{keyword}{const} std::string \&name);}
\DoxyCodeLine{527 }
\DoxyCodeLine{528   \textcolor{keyword}{private}:}
\DoxyCodeLine{529     \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}} \&operator=(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}} \&) = \textcolor{keyword}{delete};}
\DoxyCodeLine{530 }
\DoxyCodeLine{531     PROJ\_OPAQUE\_PRIVATE\_DATA}
\DoxyCodeLine{532 \};}
\DoxyCodeLine{533 }
\DoxyCodeLine{534 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{535 }
\DoxyCodeLine{536 \textcolor{keyword}{class }\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1LocalName}{LocalName}};}
\DoxyCodeLine{538 \textcolor{keyword}{using} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a692ff069e17298e43f0766b84f1b8298}{LocalNamePtr}} = std::shared\_ptr<LocalName>;}
\DoxyCodeLine{540 \textcolor{keyword}{using} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a81c580f5c3f508de9c1b83340b33dc82}{LocalNameNNPtr}} = util::nn<LocalNamePtr>;}
\DoxyCodeLine{541 }
\DoxyCodeLine{542 \textcolor{keyword}{class }\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1NameSpace}{NameSpace}};}
\DoxyCodeLine{544 \textcolor{keyword}{using} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a4d31fdb4b25f73b6ebf6641a1a513c43}{NameSpacePtr}} = std::shared\_ptr<NameSpace>;}
\DoxyCodeLine{546 \textcolor{keyword}{using} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a6a0a58afce07d6d01a88f580ded5d005}{NameSpaceNNPtr}} = util::nn<NameSpacePtr>;}
\DoxyCodeLine{547 }
\DoxyCodeLine{548 \textcolor{keyword}{class }\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1GenericName}{GenericName}};}
\DoxyCodeLine{550 \textcolor{keyword}{using} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a5f457242619432534168a9c780d448a5}{GenericNamePtr}} = std::shared\_ptr<GenericName>;}
\DoxyCodeLine{552 \textcolor{keyword}{using} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_acb99046eaf266f8cdf30304a5c43f696}{GenericNameNNPtr}} = util::nn<GenericNamePtr>;}
\DoxyCodeLine{553 }
\DoxyCodeLine{554 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{555 }
\DoxyCodeLine{562 \textcolor{keyword}{class }\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1GenericName}{GenericName}} : \textcolor{keyword}{public} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1BaseObject}{BaseObject}} \{}
\DoxyCodeLine{563   \textcolor{keyword}{public}:}
\DoxyCodeLine{565     PROJ\_DLL \textcolor{keyword}{virtual} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1GenericName}{\string~GenericName}}() \textcolor{keyword}{override};}
\DoxyCodeLine{567 }
\DoxyCodeLine{569     PROJ\_DLL \textcolor{keyword}{virtual} \textcolor{keyword}{const} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a4d31fdb4b25f73b6ebf6641a1a513c43}{NameSpacePtr}} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1GenericName_af2c5cb689d2645d55bff3a0a16230059}{scope}}() \textcolor{keyword}{const} = 0;}
\DoxyCodeLine{570 }
\DoxyCodeLine{572     PROJ\_DLL \textcolor{keyword}{virtual} std::string \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1GenericName_a3c1ea09a0ce411d128315f50abf755e9}{toString}}() \textcolor{keyword}{const} = 0;}
\DoxyCodeLine{573 }
\DoxyCodeLine{578     PROJ\_DLL \textcolor{keyword}{virtual} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_acb99046eaf266f8cdf30304a5c43f696}{GenericNameNNPtr}} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1GenericName_ab165da458f35c04096b880aad5467dc8}{toFullyQualifiedName}}() \textcolor{keyword}{const} = 0;}
\DoxyCodeLine{579 }
\DoxyCodeLine{580   \textcolor{keyword}{protected}:}
\DoxyCodeLine{581     \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1GenericName}{GenericName}}();}
\DoxyCodeLine{582     \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1GenericName}{GenericName}}(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1GenericName}{GenericName}} \&other);}
\DoxyCodeLine{583 }
\DoxyCodeLine{584   \textcolor{keyword}{private}:}
\DoxyCodeLine{585     PROJ\_OPAQUE\_PRIVATE\_DATA}
\DoxyCodeLine{586     \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1GenericName}{GenericName}} \&operator=(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1GenericName}{GenericName}} \&other) = \textcolor{keyword}{delete};}
\DoxyCodeLine{587 \};}
\DoxyCodeLine{588 }
\DoxyCodeLine{589 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{590 }
\DoxyCodeLine{597 \textcolor{keyword}{class }\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1NameSpace}{NameSpace}} \{}
\DoxyCodeLine{598   \textcolor{keyword}{public}:}
\DoxyCodeLine{600     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1NameSpace}{\string~NameSpace}}();}
\DoxyCodeLine{602 }
\DoxyCodeLine{603     PROJ\_DLL \textcolor{keywordtype}{bool} isGlobal() \textcolor{keyword}{const};}
\DoxyCodeLine{604     PROJ\_DLL \textcolor{keyword}{const} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a5f457242619432534168a9c780d448a5}{GenericNamePtr}} \&name() \textcolor{keyword}{const};}
\DoxyCodeLine{605 }
\DoxyCodeLine{606   \textcolor{keyword}{protected}:}
\DoxyCodeLine{607     PROJ\_FRIEND(\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1NameFactory}{NameFactory}});}
\DoxyCodeLine{608     PROJ\_FRIEND(\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1LocalName}{LocalName}});}
\DoxyCodeLine{609     \textcolor{keyword}{explicit} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1NameSpace}{NameSpace}}(\textcolor{keyword}{const} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a5f457242619432534168a9c780d448a5}{GenericNamePtr}} \&name);}
\DoxyCodeLine{610     \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1NameSpace}{NameSpace}}(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1NameSpace}{NameSpace}} \&other);}
\DoxyCodeLine{611     \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a6a0a58afce07d6d01a88f580ded5d005}{NameSpaceNNPtr}} getGlobalFromThis() \textcolor{keyword}{const};}
\DoxyCodeLine{612     \textcolor{keyword}{const} std::string \&separator() \textcolor{keyword}{const};}
\DoxyCodeLine{613     \textcolor{keyword}{static} \textcolor{keyword}{const} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a6a0a58afce07d6d01a88f580ded5d005}{NameSpaceNNPtr}} GLOBAL;}
\DoxyCodeLine{614     INLINED\_MAKE\_SHARED}
\DoxyCodeLine{615 }
\DoxyCodeLine{616   \textcolor{keyword}{private}:}
\DoxyCodeLine{617     PROJ\_OPAQUE\_PRIVATE\_DATA}
\DoxyCodeLine{618     \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1NameSpace}{NameSpace}} \&operator=(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1NameSpace}{NameSpace}} \&other) = \textcolor{keyword}{delete};}
\DoxyCodeLine{619 }
\DoxyCodeLine{620     \textcolor{keyword}{static} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a6a0a58afce07d6d01a88f580ded5d005}{NameSpaceNNPtr}} createGLOBAL();}
\DoxyCodeLine{621 \};}
\DoxyCodeLine{622 }
\DoxyCodeLine{623 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{624 }
\DoxyCodeLine{634 \textcolor{keyword}{class }\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1LocalName}{LocalName}} : \textcolor{keyword}{public} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1GenericName}{GenericName}} \{}
\DoxyCodeLine{635   \textcolor{keyword}{public}:}
\DoxyCodeLine{637     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1LocalName}{\string~LocalName}}() \textcolor{keyword}{override};}
\DoxyCodeLine{639 }
\DoxyCodeLine{640     PROJ\_DLL \textcolor{keyword}{const} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a4d31fdb4b25f73b6ebf6641a1a513c43}{NameSpacePtr}} scope() \textcolor{keyword}{const override};}
\DoxyCodeLine{641     PROJ\_DLL std::string toString() \textcolor{keyword}{const override};}
\DoxyCodeLine{642     PROJ\_DLL \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_acb99046eaf266f8cdf30304a5c43f696}{GenericNameNNPtr}} toFullyQualifiedName() \textcolor{keyword}{const override};}
\DoxyCodeLine{643 }
\DoxyCodeLine{644   \textcolor{keyword}{protected}:}
\DoxyCodeLine{645     PROJ\_FRIEND(\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1NameFactory}{NameFactory}});}
\DoxyCodeLine{646     PROJ\_FRIEND(\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1NameSpace}{NameSpace}});}
\DoxyCodeLine{647     \textcolor{keyword}{explicit} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1LocalName}{LocalName}}(\textcolor{keyword}{const} std::string \&nameIn);}
\DoxyCodeLine{648     \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1LocalName}{LocalName}}(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1LocalName}{LocalName}} \&other);}
\DoxyCodeLine{649     \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1LocalName}{LocalName}}(\textcolor{keyword}{const} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a4d31fdb4b25f73b6ebf6641a1a513c43}{NameSpacePtr}} \&ns, \textcolor{keyword}{const} std::string \&name);}
\DoxyCodeLine{650     INLINED\_MAKE\_SHARED}
\DoxyCodeLine{651 }
\DoxyCodeLine{652   \textcolor{keyword}{private}:}
\DoxyCodeLine{653     PROJ\_OPAQUE\_PRIVATE\_DATA}
\DoxyCodeLine{654     \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1LocalName}{LocalName}} \&operator=(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1LocalName}{LocalName}} \&other) = \textcolor{keyword}{delete};}
\DoxyCodeLine{655 \};}
\DoxyCodeLine{656 }
\DoxyCodeLine{657 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{658 }
\DoxyCodeLine{665 \textcolor{keyword}{class }\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1NameFactory}{NameFactory}} \{}
\DoxyCodeLine{666   \textcolor{keyword}{public}:}
\DoxyCodeLine{667     PROJ\_DLL \textcolor{keyword}{static} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a6a0a58afce07d6d01a88f580ded5d005}{NameSpaceNNPtr}}}
\DoxyCodeLine{668     createNameSpace(\textcolor{keyword}{const} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_acb99046eaf266f8cdf30304a5c43f696}{GenericNameNNPtr}} \&name,}
\DoxyCodeLine{669                     \textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1PropertyMap}{PropertyMap}} \&properties);}
\DoxyCodeLine{670     PROJ\_DLL \textcolor{keyword}{static} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a81c580f5c3f508de9c1b83340b33dc82}{LocalNameNNPtr}} createLocalName(\textcolor{keyword}{const} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a4d31fdb4b25f73b6ebf6641a1a513c43}{NameSpacePtr}} \&scope,}
\DoxyCodeLine{671                                                    \textcolor{keyword}{const} std::string \&name);}
\DoxyCodeLine{672     PROJ\_DLL \textcolor{keyword}{static} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_acb99046eaf266f8cdf30304a5c43f696}{GenericNameNNPtr}}}
\DoxyCodeLine{673     createGenericName(\textcolor{keyword}{const} \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a4d31fdb4b25f73b6ebf6641a1a513c43}{NameSpacePtr}} \&scope,}
\DoxyCodeLine{674                       \textcolor{keyword}{const} std::vector<std::string> \&parsedNames);}
\DoxyCodeLine{675 \};}
\DoxyCodeLine{676 }
\DoxyCodeLine{677 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{678 }
\DoxyCodeLine{681 \textcolor{keyword}{class }\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1CodeList}{CodeList}} \{}
\DoxyCodeLine{682   \textcolor{keyword}{public}:}
\DoxyCodeLine{684     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1CodeList}{\string~CodeList}}();}
\DoxyCodeLine{686 }
\DoxyCodeLine{688     \textcolor{comment}{// cppcheck-\/suppress functionStatic}}
\DoxyCodeLine{689     \textcolor{keyword}{inline} \textcolor{keyword}{const} std::string \&\mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1CodeList_ab37c5216bdb7a1d3614f55229cb9f0da}{toString}}() PROJ\_PURE\_DECL \{ \textcolor{keywordflow}{return} name\_; \}}
\DoxyCodeLine{690 }
\DoxyCodeLine{692     \textcolor{keyword}{inline} \textcolor{keyword}{operator} std::string() PROJ\_PURE\_DECL \{ \textcolor{keywordflow}{return} toString(); \}}
\DoxyCodeLine{693 }
\DoxyCodeLine{695     \textcolor{keyword}{inline} \textcolor{keywordtype}{bool} operator==(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1CodeList}{CodeList}} \&other) PROJ\_PURE\_DECL \{}
\DoxyCodeLine{696         \textcolor{keywordflow}{return} name\_ == other.name\_;}
\DoxyCodeLine{697     \}}
\DoxyCodeLine{698     \textcolor{keyword}{inline} \textcolor{keywordtype}{bool} operator!=(\textcolor{keyword}{const} CodeList \&other) PROJ\_PURE\_DECL \{}
\DoxyCodeLine{699         \textcolor{keywordflow}{return} name\_ != other.name\_;}
\DoxyCodeLine{700     \}}
\DoxyCodeLine{702   \textcolor{keyword}{protected}:}
\DoxyCodeLine{703     \textcolor{keyword}{explicit} CodeList(\textcolor{keyword}{const} std::string \&nameIn) : name\_(nameIn) \{\}}
\DoxyCodeLine{704     CodeList(\textcolor{keyword}{const} CodeList \&) = \textcolor{keywordflow}{default};}
\DoxyCodeLine{705     CodeList \&operator=(\textcolor{keyword}{const} CodeList \&other);}
\DoxyCodeLine{706 }
\DoxyCodeLine{707   \textcolor{keyword}{private}:}
\DoxyCodeLine{708     std::string name\_\{\};}
\DoxyCodeLine{709 \};}
\DoxyCodeLine{710 }
\DoxyCodeLine{711 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{712 }
\DoxyCodeLine{715 \textcolor{keyword}{class }PROJ\_GCC\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1Exception}{Exception}} : \textcolor{keyword}{public} std::exception \{}
\DoxyCodeLine{716     std::string msg\_;}
\DoxyCodeLine{717 }
\DoxyCodeLine{718   \textcolor{keyword}{public}:}
\DoxyCodeLine{720     PROJ\_INTERNAL \textcolor{keyword}{explicit} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1Exception}{Exception}}(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *message);}
\DoxyCodeLine{721     PROJ\_INTERNAL \textcolor{keyword}{explicit} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1Exception}{Exception}}(\textcolor{keyword}{const} std::string \&message);}
\DoxyCodeLine{722     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1Exception}{Exception}}(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1Exception}{Exception}} \&other);}
\DoxyCodeLine{723     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1Exception}{\string~Exception}}() \textcolor{keyword}{override};}
\DoxyCodeLine{725     PROJ\_DLL \textcolor{keyword}{virtual} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *what() \textcolor{keyword}{const} \textcolor{keyword}{noexcept} \textcolor{keyword}{override};}
\DoxyCodeLine{726 \};}
\DoxyCodeLine{727 }
\DoxyCodeLine{728 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{729 }
\DoxyCodeLine{733 \textcolor{keyword}{class }PROJ\_GCC\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1InvalidValueTypeException}{InvalidValueTypeException}} : \textcolor{keyword}{public} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1Exception}{Exception}} \{}
\DoxyCodeLine{734   \textcolor{keyword}{public}:}
\DoxyCodeLine{736     PROJ\_INTERNAL \textcolor{keyword}{explicit} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1InvalidValueTypeException}{InvalidValueTypeException}}(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *message);}
\DoxyCodeLine{737     PROJ\_INTERNAL \textcolor{keyword}{explicit} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1InvalidValueTypeException}{InvalidValueTypeException}}(}
\DoxyCodeLine{738         \textcolor{keyword}{const} std::string \&message);}
\DoxyCodeLine{739     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1InvalidValueTypeException}{InvalidValueTypeException}}(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1InvalidValueTypeException}{InvalidValueTypeException}} \&other);}
\DoxyCodeLine{740     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1InvalidValueTypeException}{\string~InvalidValueTypeException}}() \textcolor{keyword}{override};}
\DoxyCodeLine{742 \};}
\DoxyCodeLine{743 }
\DoxyCodeLine{744 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{745 }
\DoxyCodeLine{749 \textcolor{keyword}{class }PROJ\_GCC\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1UnsupportedOperationException}{UnsupportedOperationException}} : \textcolor{keyword}{public} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1Exception}{Exception}} \{}
\DoxyCodeLine{750   \textcolor{keyword}{public}:}
\DoxyCodeLine{752     PROJ\_INTERNAL \textcolor{keyword}{explicit} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1UnsupportedOperationException}{UnsupportedOperationException}}(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *message);}
\DoxyCodeLine{753     PROJ\_INTERNAL \textcolor{keyword}{explicit} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1UnsupportedOperationException}{UnsupportedOperationException}}(}
\DoxyCodeLine{754         \textcolor{keyword}{const} std::string \&message);}
\DoxyCodeLine{755     PROJ\_DLL}
\DoxyCodeLine{756     \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1UnsupportedOperationException}{UnsupportedOperationException}}(\textcolor{keyword}{const} \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1UnsupportedOperationException}{UnsupportedOperationException}} \&other);}
\DoxyCodeLine{757     PROJ\_DLL \mbox{\hyperlink{classosgeo_1_1proj_1_1util_1_1UnsupportedOperationException}{\string~UnsupportedOperationException}}() \textcolor{keyword}{override};}
\DoxyCodeLine{759 \};}
\DoxyCodeLine{760 }
\DoxyCodeLine{761 \} \textcolor{comment}{// namespace util}}
\DoxyCodeLine{762 }
\DoxyCodeLine{763 NS\_PROJ\_END}
\DoxyCodeLine{764 }
\DoxyCodeLine{765 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// UTIL\_HH\_INCLUDED}}

\end{DoxyCode}
