AWS SDK for C++

AWS SDK for C++ Version 1.11.852

Loading...
Searching...
No Matches
Schema.h
1#pragma once
2
3#include <aws/core/utils/memory/stl/AWSString.h>
4#include <smithy/client/schema/TraitMap.h>
5
6#include <cstdint>
7#include <memory>
8
9namespace smithy {
10namespace schema {
11
12enum class ShapeType : uint8_t {
13 Boolean,
14 Byte,
15 Short,
16 Integer,
17 Long,
18 Float,
19 Double,
22 String,
23 Enum,
24 IntEnum,
25 Blob,
28 List,
29 Map,
31 Union,
35};
36
37class Schema {
38 public:
39 Schema() = default;
40 Schema(const Aws::String& memberName, ShapeType type) : m_type(type), m_memberName(memberName) {}
41
42 ShapeType GetType() const { return m_type; }
43 const char* GetId() const { return m_id; }
44 Aws::String GetMemberName() const { return m_memberName; }
45 int GetMemberIndex() const { return m_memberIndex; }
46 bool IsMember() const { return !m_memberName.empty(); }
47
48 const Schema* GetMember(const char* name) const;
49 const Schema* GetMember(int index) const;
50
51 uint16_t GetMemberCount() const { return m_memberCount; }
52
53 template <typename T>
54 std::shared_ptr<const T> GetTrait(const TraitKey<T>& key) const {
55 return m_traits.Get(key);
56 }
57
58 bool HasTrait(const TraitKeyBase& key) const { return m_traits.Has(key); }
59
60 Schema& SetTrait(const TraitKeyBase& key, std::shared_ptr<const Trait> trait) {
61 m_traits.Set(key, std::move(trait));
62 return *this;
63 }
64
65 private:
66 const char* m_id = nullptr;
68 Aws::String m_memberName;
69 int m_memberIndex = 0;
70 const Schema* m_members = nullptr;
71 uint16_t m_memberCount = 0;
72 TraitMap m_traits;
73};
74
75} // namespace schema
76} // namespace smithy
Aws::String GetMemberName() const
Definition Schema.h:44
const Schema * GetMember(const char *name) const
uint16_t GetMemberCount() const
Definition Schema.h:51
const char * GetId() const
Definition Schema.h:43
Schema(const Aws::String &memberName, ShapeType type)
Definition Schema.h:40
bool IsMember() const
Definition Schema.h:46
std::shared_ptr< const T > GetTrait(const TraitKey< T > &key) const
Definition Schema.h:54
Schema & SetTrait(const TraitKeyBase &key, std::shared_ptr< const Trait > trait)
Definition Schema.h:60
const Schema * GetMember(int index) const
ShapeType GetType() const
Definition Schema.h:42
int GetMemberIndex() const
Definition Schema.h:45
bool HasTrait(const TraitKeyBase &key) const
Definition Schema.h:58
std::shared_ptr< const T > Get(const TraitKey< T > &key) const
Definition TraitMap.h:17
bool Has(const TraitKeyBase &key) const
Definition TraitMap.h:23
void Set(const TraitKeyBase &key, std::shared_ptr< const Trait > trait)
Definition TraitMap.h:29
std::basic_string< char, std::char_traits< char >, Aws::Allocator< char > > String
Definition AWSString.h:97