2
* Copyright (C) 2011 Olaf van der Spek
4
* This program is free software: you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation, either version 2 of the License, or
7
* (at your option) any later version.
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
14
* You should have received a copy of the GNU General Public License
15
* along with this program. If not, see <http://www.gnu.org/licenses/>.
35
data_ref_basic(const U& c)
37
assign(&*c.begin(), &*c.end());
40
data_ref_basic(const void* b, const void* e)
45
data_ref_basic(const void* b, size_t sz)
50
explicit data_ref_basic(const char* b)
57
begin_ = end_ = reinterpret_cast<T>("");
60
void assign(const void* b, const void* e)
62
begin_ = reinterpret_cast<T>(b);
63
end_ = reinterpret_cast<T>(e);
66
void assign(const void* b, size_t sz)
68
begin_ = reinterpret_cast<T>(b);
89
return end() - begin();
94
return begin() == end();
97
operator std::string() const
99
return to_string(*this);
106
typedef data_ref_basic<const unsigned char*> data_ref;
107
typedef data_ref_basic<const char*> str_ref;
109
inline std::ostream& operator<<(std::ostream& os, str_ref v)
111
return os.write(v.data(), v.size());
114
inline std::string to_string(str_ref v)
116
return std::string(v.data(), v.size());