42 #include <boost/algorithm/string/predicate.hpp>
43 #include <boost/foreach.hpp>
44 #include <boost/functional/hash.hpp>
45 #include <boost/shared_ptr.hpp>
47 #define drizzle_literal_parameter(X) (X), size_t((sizeof(X) - 1))
54 bool operator()(std::string
const& x, std::string
const& y)
const
56 return boost::algorithm::iequals(x, y);
62 std::size_t operator()(std::string
const& x)
const
65 BOOST_FOREACH(std::string::const_reference it, x)
66 boost::hash_combine(seed, std::toupper(it));
73 std::size_t operator()(std::vector<char>
const& x)
const
76 BOOST_FOREACH(std::vector<char>::const_reference it, x)
77 boost::hash_combine(seed, it);
91 const char* data()
const
101 void assign(
const size_t repeat,
const char arg)
103 _bytes.resize(repeat + 1);
104 memset(&_bytes[0], arg, repeat);
108 void assign(
const char *arg,
const size_t arg_size)
110 _bytes.resize(arg_size + 1);
111 memcpy(&_bytes[0], arg, arg_size);
115 void append(
const char *arg,
const size_t arg_size)
117 if (not arg or not arg_size)
120 size_t original_size= size();
123 _bytes.resize(original_size + arg_size + 1);
124 memcpy(&_bytes[original_size], arg, arg_size);
125 _bytes[original_size + arg_size]= 0;
129 assign(arg, arg_size);
133 const char& operator[] (
size_t arg)
const
138 char& operator[] (
size_t arg)
151 return _bytes.size() -1;
155 std::vector<char> _bytes;
TODO: Rename this file - func.h is stupid.