@@ -68,19 +68,16 @@ struct [[nodiscard]] IdType
6868 // Implicit ByteData constructors
6969 GRAPHQLRESPONSE_EXPORT IdType (size_t count, typename ByteData::value_type value = 0 );
7070 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);
7373
7474 // Assignment
7575 GRAPHQLRESPONSE_EXPORT IdType& operator =(IdType&& rhs) noexcept ;
7676 IdType& operator =(const IdType& rhs) = delete ;
7777
7878 // Conversion
7979 GRAPHQLRESPONSE_EXPORT IdType (ByteData&& data) noexcept ;
80- GRAPHQLRESPONSE_EXPORT IdType& operator =(ByteData&& data) noexcept ;
81-
8280 GRAPHQLRESPONSE_EXPORT IdType (OpaqueString&& opaque) noexcept ;
83- GRAPHQLRESPONSE_EXPORT IdType& operator =(OpaqueString&& opaque) noexcept ;
8481
8582 template <typename ValueType>
8683 [[nodiscard]] const ValueType& get () const ;
@@ -95,16 +92,60 @@ struct [[nodiscard]] IdType
9592
9693 GRAPHQLRESPONSE_EXPORT [[nodiscard]] bool operator <(const IdType& rhs) const noexcept ;
9794
98- // Check the Type
95+ // Check the type
9996 GRAPHQLRESPONSE_EXPORT [[nodiscard]] bool isBase64 () const noexcept ;
10097
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+
101136private:
102137 std::variant<ByteData, OpaqueString> _data;
103138};
104139
105140#ifdef GRAPHQL_DLLEXPORTS
106141// Export all of the specialized template methods
107142template <>
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 <>
108149GRAPHQLRESPONSE_EXPORT const IdType::ByteData& IdType::get<IdType::ByteData>() const ;
109150template <>
110151GRAPHQLRESPONSE_EXPORT const IdType::OpaqueString& IdType::get<IdType::OpaqueString>() const ;
0 commit comments