#pragma once #include #include namespace saw { namespace schema { // NOLINTBEGIN template struct NamedMember {}; template struct Struct { static_assert( always_false, "This schema template doesn't support this type of template argument"); }; template struct Struct...> {}; template struct Union { static_assert( always_false, "This schema template doesn't support this type of template argument"); }; template struct Union...> {}; template struct Array {}; template FixedArray {}; template struct Tuple {}; struct String {}; struct SignedInteger {}; struct UnsignedInteger {}; struct FloatingPoint {}; template struct Primitive { static_assert(((std::is_same_v || std::is_same_v)&&(N == 1 || N == 2 || N == 4 || N == 8)) || (std::is_same_v && (N == 4 || N == 8)), "Primitive Type is not supported"); }; using Int8 = Primitive; using Int16 = Primitive; using Int32 = Primitive; using Int64 = Primitive; using UInt8 = Primitive; using UInt16 = Primitive; using UInt32 = Primitive; using UInt64 = Primitive; using Float32 = Primitive; using Float64 = Primitive; /** * Classes enabling Rpc calls */ template struct Function {}; template struct Interface { static_assert( always_false, "This schema template doesn't support this type of template argument"); }; template struct Interface...> {}; // NOLINTEND } // namespace schema } // namespace saw