#pragma once #include "string_literal.h" namespace saw { namespace schema { template struct NamedMember {}; template struct Struct; template struct Struct...> {}; template struct Union; template struct Union...> {}; template struct Array {}; 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; } // namespace schema } // namespace saw