summaryrefslogtreecommitdiff
path: root/modules/codec/c++/schema.h
diff options
context:
space:
mode:
Diffstat (limited to 'modules/codec/c++/schema.h')
-rw-r--r--modules/codec/c++/schema.h172
1 files changed, 0 insertions, 172 deletions
diff --git a/modules/codec/c++/schema.h b/modules/codec/c++/schema.h
deleted file mode 100644
index 4549916..0000000
--- a/modules/codec/c++/schema.h
+++ /dev/null
@@ -1,172 +0,0 @@
-#pragma once
-
-#include <forstio/common.h>
-#include <forstio/string_literal.h>
-
-namespace saw {
-namespace schema {
-// NOLINTBEGIN
-template <typename T, string_literal Literal> struct Member {
- static constexpr string_literal name = "Member";
-};
-
-template <typename... T> struct Struct {
- static_assert(
- always_false<T...>,
- "This schema template doesn't support this type of template argument");
-};
-
-template <typename... V, string_literal... K>
-struct Struct<Member<V, K>...> {
- static constexpr string_literal name = "Struct";
-};
-
-template <typename... T> struct Union {
- static_assert(
- always_false<T...>,
- "This schema template doesn't support this type of template argument");
-};
-
-template <typename... V, string_literal... K>
-struct Union<Member<V, K>...> {
- static constexpr string_literal name = "Union";
-};
-
-template <typename T, size_t Dim = 1> struct Array {
- static constexpr string_literal name = "Array";
-};
-
-template<typename T, size_t... S> struct FixedArray {
- static constexpr string_literal name = "FixedArray";
-};
-
-template <typename... T> struct Tuple {
- static constexpr string_literal name = "Tuple";
-};
-
-/**
- * This acts as a separator of different encodings being mashed together
- * For example we can transport any base64 encodings in JSON
- *
- * using WrappedExample = schema::Tuple<
- * schema::Wrapper<schema::String, encode::Base64>
- * >;
- *
- * data<WrappedExample, encode::Json> ex_data;
- */
-template <typename T, typename Enc>
-class Wrapper {
- static constexpr string_literal name = "Wrapper";
-};
-
-struct String {
- static constexpr string_literal name = "String";
-};
-
-
-struct SignedInteger {
- static constexpr string_literal name = "SignedInteger";
-};
-struct UnsignedInteger {
- static constexpr string_literal name = "UnsignedInteger";
-};
-struct FloatingPoint {
- static constexpr string_literal name = "FloatingPoint";
-};
-
-template <class T, size_t N> struct Primitive {
- static_assert(((std::is_same_v<T, SignedInteger> ||
- std::is_same_v<T, UnsignedInteger>)&&(N == 1 || N == 2 ||
- N == 4 || N == 8)) ||
- (std::is_same_v<T, FloatingPoint> && (N == 4 || N == 8)),
- "Primitive Type is not supported");
- static constexpr string_literal name = "Primitive";
-};
-
-using Int8 = Primitive<SignedInteger, 1>;
-using Int16 = Primitive<SignedInteger, 2>;
-using Int32 = Primitive<SignedInteger, 4>;
-using Int64 = Primitive<SignedInteger, 8>;
-
-using UInt8 = Primitive<UnsignedInteger, 1>;
-using UInt16 = Primitive<UnsignedInteger, 2>;
-using UInt32 = Primitive<UnsignedInteger, 4>;
-using UInt64 = Primitive<UnsignedInteger, 8>;
-
-using Float32 = Primitive<FloatingPoint, 4>;
-using Float64 = Primitive<FloatingPoint, 8>;
-
-/**
- * Classes allowing to distinguish Ints from VarInts
- */
-template<typename T, std::size_t MaxLen>
-struct VariableLengthPrimitive {
- static constexpr string_literal name = "VariableLengthPrimitive";
-};
-
-using VarInt = VariableLengthPrimitive<SignedInteger, 5>;
-using VarLong = VariableLengthPrimitive<SignedInteger, 10>;
-
-/**
- * Classes enabling Rpc calls
- */
-template <class Request, class Response>
-struct Function {
- static constexpr string_literal name = "Function";
-};
-
-template <class... T> struct Interface {
- static_assert(
- always_false<T...>,
- "This schema template doesn't support this type of template argument");
-
- static constexpr string_literal name = "Interface";
-};
-
-template <class... Requests, class... Responses, string_literal... Names>
-struct Interface<Member<Function<Requests, Responses>,Names>...> {
- static constexpr string_literal name = "Interface";
-};
-
-// NOLINTEND
-} // namespace schema
-template <class T> struct is_struct {
- constexpr static bool value = false;
-};
-
-template <class... V, string_literal... K> struct is_struct<schema::Struct<schema::Member<V,K>...>> {
- constexpr static bool value = true;
-};
-
-template <class T> struct is_string {
- constexpr static bool value = false;
-};
-
-template <> struct is_string<schema::String> {
- constexpr static bool value = true;
-};
-
-template <class T> struct is_tuple {
- constexpr static bool value = false;
-};
-
-template <class... T> struct is_tuple<schema::Tuple<T...>> {
- constexpr static bool value = true;
-};
-
-template <class T> struct is_array {
- constexpr static bool value = false;
-};
-
-template <class T, size_t Dim> struct is_array<schema::Array<T,Dim>> {
- constexpr static bool value = true;
-};
-
-template <class T> struct is_primitive {
- constexpr static bool value = false;
-};
-
-template <typename T, size_t N> struct is_primitive<schema::Primitive<T,N>> {
- constexpr static bool value = true;
-};
-} // namespace saw