@@ -68,19 +68,16 @@ struct [[nodiscard]] IdType
68
68
// Implicit ByteData constructors
69
69
GRAPHQLRESPONSE_EXPORT IdType (size_t count, typename ByteData::value_type value = 0 );
70
70
GRAPHQLRESPONSE_EXPORT IdType (std::initializer_list<typename ByteData::value_type> values);
71
- GRAPHQLRESPONSE_EXPORT IdType (
72
- typename ByteData::const_iterator begin, typename ByteData::const_iterator end);
71
+ template < typename InputIt>
72
+ IdType (InputIt begin, InputIt end);
73
73
74
74
// Assignment
75
75
GRAPHQLRESPONSE_EXPORT IdType& operator =(IdType&& rhs) noexcept ;
76
76
IdType& operator =(const IdType& rhs) = delete ;
77
77
78
78
// Conversion
79
79
GRAPHQLRESPONSE_EXPORT IdType (ByteData&& data) noexcept ;
80
- GRAPHQLRESPONSE_EXPORT IdType& operator =(ByteData&& data) noexcept ;
81
-
82
80
GRAPHQLRESPONSE_EXPORT IdType (OpaqueString&& opaque) noexcept ;
83
- GRAPHQLRESPONSE_EXPORT IdType& operator =(OpaqueString&& opaque) noexcept ;
84
81
85
82
template <typename ValueType>
86
83
[[nodiscard]] const ValueType& get () const ;
@@ -95,16 +92,60 @@ struct [[nodiscard]] IdType
95
92
96
93
GRAPHQLRESPONSE_EXPORT [[nodiscard]] bool operator <(const IdType& rhs) const noexcept ;
97
94
98
- // Check the Type
95
+ // Check the type
99
96
GRAPHQLRESPONSE_EXPORT [[nodiscard]] bool isBase64 () const noexcept ;
100
97
98
+ // Shared accessors
99
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] bool empty () const noexcept ;
100
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] size_t size () const noexcept ;
101
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] size_t max_size () const noexcept ;
102
+ GRAPHQLRESPONSE_EXPORT void reserve (size_t new_cap);
103
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] size_t capacity () const noexcept ;
104
+ GRAPHQLRESPONSE_EXPORT void shrink_to_fit ();
105
+ GRAPHQLRESPONSE_EXPORT void clear () noexcept ;
106
+
107
+ // ByteData accessors
108
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] const std::uint8_t & at (size_t pos) const ;
109
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] std::uint8_t & at (size_t pos);
110
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] const std::uint8_t & operator [](size_t pos) const ;
111
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] std::uint8_t & operator [](size_t pos);
112
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] const std::uint8_t & front () const ;
113
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] std::uint8_t & front ();
114
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] const std::uint8_t & back () const ;
115
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] std::uint8_t & back ();
116
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] const std::uint8_t * data () const ;
117
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] std::uint8_t * data ();
118
+
119
+ // ByteData iterators
120
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] ByteData::const_iterator begin () const ;
121
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] ByteData::iterator begin ();
122
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] ByteData::const_iterator cbegin () const ;
123
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] ByteData::const_iterator end () const ;
124
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] ByteData::iterator end ();
125
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] ByteData::const_iterator cend () const ;
126
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] ByteData::const_reverse_iterator rbegin () const ;
127
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] ByteData::reverse_iterator rbegin ();
128
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] ByteData::const_reverse_iterator crbegin () const ;
129
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] ByteData::const_reverse_iterator rend () const ;
130
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] ByteData::reverse_iterator rend ();
131
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] ByteData::const_reverse_iterator crend () const ;
132
+
133
+ // OpaqueString accessors
134
+ GRAPHQLRESPONSE_EXPORT [[nodiscard]] const char * c_str () const ;
135
+
101
136
private:
102
137
std::variant<ByteData, OpaqueString> _data;
103
138
};
104
139
105
140
#ifdef GRAPHQL_DLLEXPORTS
106
141
// Export all of the specialized template methods
107
142
template <>
143
+ GRAPHQLRESPONSE_EXPORT IdType::IdType (
144
+ typename ByteData::const_iterator begin, typename ByteData::const_iterator end);
145
+ template <>
146
+ GRAPHQLRESPONSE_EXPORT IdType::IdType (
147
+ typename ByteData::const_pointer begin, typename ByteData::const_pointer end);
148
+ template <>
108
149
GRAPHQLRESPONSE_EXPORT const IdType::ByteData& IdType::get<IdType::ByteData>() const ;
109
150
template <>
110
151
GRAPHQLRESPONSE_EXPORT const IdType::OpaqueString& IdType::get<IdType::OpaqueString>() const ;
0 commit comments