diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-01-23 13:12:11 +0100 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-01-23 13:12:11 +0100 |
commit | 8dad985328e2183b224300aa992951131956fdb3 (patch) | |
tree | ceda3d9805335f36f571fb36585444ebdb421a02 /modules/codec/c++/interface.h | |
parent | a9d2025030d0a7641f4b0701bd4aff7d2db5aeb4 (diff) |
core,codec-json,codec-minecraft,codec-netcdf,codec,io-tls,io,io_codec,window,window-opengl:
Renamed file endings and changed includes
Diffstat (limited to 'modules/codec/c++/interface.h')
-rw-r--r-- | modules/codec/c++/interface.h | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/modules/codec/c++/interface.h b/modules/codec/c++/interface.h deleted file mode 100644 index 89bfc26..0000000 --- a/modules/codec/c++/interface.h +++ /dev/null @@ -1,103 +0,0 @@ -#pragma once - -#include <forstio/error.h> -#include "schema.h" -#include "data.h" - -namespace saw { -template<typename SchemaFunc, typename Encode, typename Func> -class function; - -template<typename Request, typename Response, typename Encode, typename Func> -class function<schema::Function<Request, Response>, Encode, Func> { -private: - Func func_; -public: - function(Func func): - func_{std::move(func)} - {} - - error_or<data<Response, Encode>> call(data<Request, Encode> req){ - return func_(std::move(req)); - } -}; - -template<typename T, typename Encode, typename... Funcs> -class interface; - -template<typename... Requests, typename... Responses, string_literal... Names, typename Encode, typename... Funcs> -class interface<schema::Interface<schema::Member<schema::Function<Requests, Responses>, Names>...>, Encode, Funcs...> { -private: - std::tuple<function<schema::Function<Requests, Responses>, Encode, Funcs>...> funcs_; -public: - interface(function<schema::Function<Requests, Responses>, Encode, Funcs>... funcs): - funcs_{std::move(funcs)...} - {} - - /** - * Get the function based on the string literal matching the position in the tuple - */ - template<string_literal Lit> - function< - schema::Function< - typename parameter_pack_type< - parameter_key_pack_index< - Lit, Names... - >::value - , Requests...>::type - , - typename parameter_pack_type< - parameter_key_pack_index< - Lit, Names... - >::value - , Responses...>::type - > - , - Encode - , - typename parameter_pack_type< - parameter_key_pack_index< - Lit, Names... - >::value - , Funcs...>::type - >& get(){ - return std::get<parameter_key_pack_index<Lit, Names...>::value>(funcs_); - } - - template<string_literal Lit> - error_or<data< - typename parameter_pack_type< - parameter_key_pack_index< - Lit, Names... - >::value - , Responses...>::type - , Encode>> call( - data< - typename parameter_pack_type< - parameter_key_pack_index< - Lit, Names... - >::value - , Requests...>::type - , Encode> req - ){ - return get<Lit>().call(std::move(req)); - } - -}; - -template<typename T, typename Encode> -struct function_factory { - template<typename Func> - static function<T,Encode, Func> create(Func func){ - return function<T,Encode,Func>{std::move(func)}; - } -}; - -template<typename T, typename Encode> -struct interface_factory { - template<typename... Func> - static interface<T,Encode, Func...> create(Func... func){ - return interface<T,Encode, Func...>{std::move(func)...}; - } -}; -} |