summaryrefslogtreecommitdiff
path: root/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsAny.h
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/asymptote/LspCpp/include/LibLsp/lsp/lsAny.h')
-rw-r--r--graphics/asymptote/LspCpp/include/LibLsp/lsp/lsAny.h227
1 files changed, 113 insertions, 114 deletions
diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsAny.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsAny.h
index 49a917e4f6..880bf7cb82 100644
--- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsAny.h
+++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsAny.h
@@ -5,45 +5,44 @@
#include "LibLsp/JsonRpc/message.h"
namespace lsp
{
- struct Any
- {
- //! Type of JSON value
- enum Type {
- kUnKnown=-1,
- kNullType = 0, //!< null
- kFalseType = 1, //!< false
- kTrueType = 2, //!< true
- kObjectType = 3, //!< object
- kArrayType = 4, //!< array
- kStringType = 5, //!< string
- kNumberType = 6 //!< number
- };
-
-
+struct Any
+{
+ //! Type of JSON value
+ enum Type
+ {
+ kUnKnown = -1,
+ kNullType = 0, //!< null
+ kFalseType = 1, //!< false
+ kTrueType = 2, //!< true
+ kObjectType = 3, //!< object
+ kArrayType = 4, //!< array
+ kStringType = 5, //!< string
+ kNumberType = 6 //!< number
+ };
- template <typename T>
- bool Get(T& value);
+ template<typename T>
+ bool Get(T& value);
- template <typename T>
- void Set(T& value);
+ template<typename T>
+ void Set(T& value);
- int GuessType();
- int GetType();
+ int GuessType();
+ int GetType();
- void Set(std::unique_ptr<LspMessage> value);
+ void Set(std::unique_ptr<LspMessage> value);
- void SetJsonString(std::string&& _data, Type _type);
+ void SetJsonString(std::string&& _data, Type _type);
- void SetJsonString(const std::string& _data, Type _type);
+ void SetJsonString(std::string const& _data, Type _type);
- const std::string& Data()const
- {
- return data;
- }
+ std::string const& Data() const
+ {
+ return data;
+ }
- void swap(Any& arg) noexcept;
+ void swap(Any& arg) noexcept;
- /*
+ /*
*Example for GetFromMap
struct A{
std::string visitor;
@@ -57,103 +56,103 @@ namespace lsp
A a_object;
any.GetFromMap(a_object);
*/
- template <typename T>
- bool GetFromMap(T& value);
-
-
- template <typename T>
- bool GetForMapHelper(T& value);
- bool GetForMapHelper(std::string& value);
- bool GetForMapHelper(optional<std::string>& value);
- private:
- std::unique_ptr<Reader> GetReader();
- std::unique_ptr<Writer> GetWriter() const;
- void SetData(std::unique_ptr<Writer>&);
+ template<typename T>
+ bool GetFromMap(T& value);
- std::string data;
- int jsonType = kUnKnown;
+ template<typename T>
+ bool GetForMapHelper(T& value);
+ bool GetForMapHelper(std::string& value);
+ bool GetForMapHelper(optional<std::string>& value);
- };
+private:
+ std::unique_ptr<Reader> GetReader();
+ std::unique_ptr<Writer> GetWriter() const;
+ void SetData(std::unique_ptr<Writer>&);
+ std::string data;
+ int jsonType = kUnKnown;
};
+}; // namespace lsp
extern void Reflect(Reader& visitor, lsp::Any& value);
-extern void Reflect(Writer& visitor, lsp::Any& value);
+extern void Reflect(Writer& visitor, lsp::Any& value);
-template <typename T>
-void ReflectMember(std::map < std::string, lsp::Any>& visitor, const char* name, T& value) {
+template<typename T>
+void ReflectMember(std::map<std::string, lsp::Any>& visitor, char const* name, T& value)
+{
- auto it = visitor.find(name);
- if (it != visitor.end())
- {
- it->second.GetForMapHelper(value);
- }
-}
-template <typename T>
-void ReflectMember(std::map < std::string, std::string>& visitor, const char* name, T& value) {
-
- auto it = visitor.find(name);
- if (it != visitor.end())
- {
- lsp::Any any;
- any.SetJsonString(it->second, static_cast<lsp::Any::Type>(-1));
- any.Get(value);
- }
+ auto it = visitor.find(name);
+ if (it != visitor.end())
+ {
+ it->second.GetForMapHelper(value);
+ }
}
+template<typename T>
+void ReflectMember(std::map<std::string, std::string>& visitor, char const* name, T& value)
+{
-#define REFLECT_MAP_TO_STRUCT(type, ...) \
- template <typename TVisitor> \
- void ReflectMap(TVisitor& visitor, type& value) { \
- MACRO_MAP(_MAPPABLE_REFLECT_MEMBER, __VA_ARGS__) \
- }
+ auto it = visitor.find(name);
+ if (it != visitor.end())
+ {
+ lsp::Any any;
+ any.SetJsonString(it->second, static_cast<lsp::Any::Type>(-1));
+ any.Get(value);
+ }
+}
+#define REFLECT_MAP_TO_STRUCT(type, ...) \
+ template<typename TVisitor> \
+ void ReflectMap(TVisitor& visitor, type& value) \
+ { \
+ MACRO_MAP(_MAPPABLE_REFLECT_MEMBER, __VA_ARGS__) \
+ }
namespace lsp
{
- template <typename T>
- bool Any::Get(T& value)
- {
- const auto visitor = GetReader();
- Reflect(*visitor, value);
- return true;
- }
-
- template <typename T>
- void Any::Set(T& value)
- {
- auto visitor = GetWriter();
- Reflect(*visitor, value);
- SetData(visitor);
- }
-
- template <typename T>
- bool Any::GetFromMap(T& value)
- {
- const auto visitor = GetReader();
- std::map < std::string, lsp::Any> _temp;
- Reflect(*visitor, _temp);
- ReflectMap(_temp, value);
- return true;
- }
-
- template <typename T>
- bool Any::GetForMapHelper(T& value)
- {
- jsonType = GetType();
- if (jsonType == kStringType)
- {
- auto copy = data;
- copy.erase(copy.find_last_not_of('"') + 1);
- copy.erase(0, copy.find_first_not_of('"'));
- lsp::Any any;
- any.SetJsonString(copy, kUnKnown);
- any.Get(value);
- }
- else
- {
- Get(value);
- }
- return true;
- }
+template<typename T>
+bool Any::Get(T& value)
+{
+ auto const visitor = GetReader();
+ Reflect(*visitor, value);
+ return true;
+}
+
+template<typename T>
+void Any::Set(T& value)
+{
+ auto visitor = GetWriter();
+ Reflect(*visitor, value);
+ SetData(visitor);
+}
+
+template<typename T>
+bool Any::GetFromMap(T& value)
+{
+ auto const visitor = GetReader();
+ std::map<std::string, lsp::Any> _temp;
+ Reflect(*visitor, _temp);
+ ReflectMap(_temp, value);
+ return true;
+}
+
+template<typename T>
+bool Any::GetForMapHelper(T& value)
+{
+ jsonType = GetType();
+ if (jsonType == kStringType)
+ {
+ auto copy = data;
+ copy.erase(copy.find_last_not_of('"') + 1);
+ copy.erase(0, copy.find_first_not_of('"'));
+ lsp::Any any;
+ any.SetJsonString(copy, kUnKnown);
+ any.Get(value);
+ }
+ else
+ {
+ Get(value);
+ }
+ return true;
}
+} // namespace lsp