26 Params::const_iterator pos =
find(name);
27 return (pos ==
params.end() ?
nullptr : pos->second);
34 for (Params::const_iterator iter = params.begin(); iter != params.end(); ++iter) {
35 Must(iter->first.size() != 0);
37 Must(iter->second !=
nullptr);
38 iter->second->pack(msg);
48 for ( ; count > 0; --count) {
55 value->unpackValue(msg);
56 params.push_back(
Param(name, value));
60Mgr::QueryParams::Params::const_iterator
64 Params::const_iterator iter = params.begin();
65 for ( ; iter != params.end(); ++iter) {
66 if (name.
caseCmp(iter->first) == 0)
86 std::vector<int> array;
88 while (
tok.int64(intVal, 10,
false)) {
89 Must(intVal >= std::numeric_limits<int>::min());
90 Must(intVal <= std::numeric_limits<int>::max());
91 array.emplace_back(intVal);
94 if (
tok.remaining().length() > 1)
95 (void)
tok.skipOne(comma);
116 static const CharacterSet delimChars(
"param-delim",
"&");
118 while (!
tok.atEnd()) {
122 if (
tok.remaining()[0] ==
'#')
125 if (
tok.skipAll(delimChars))
129 if (!
tok.prefix(nameStr, nameChars))
135 if (!
tok.prefix(valueStr, valueChars))
140 aParams.
params.emplace_back(name, value);
155 throw TexcHere(
"unknown parameter type");
#define Here()
source code location of the caller
static Mgr::QueryParam::Pointer ParseParamValue(const SBuf &rawValue)
String SBufToString(const SBuf &s)
#define TexcHere(msg)
legacy convenience macro; it is not difficult to type Here() now
optimized set of C chars, with quick membership test and merge support
CharacterSet complement(const char *complementLabel=nullptr) const
static const CharacterSet DIGIT
static const CharacterSet ALPHA
struct msghdr with a known type, fixed-size I/O and control buffers
void putString(const String &s)
store variable-length string
void putInt(int n)
store an integer
void getPod(Pod &pod) const
load POD
void getString(String &s) const
load variable-length string
int getInt() const
load an integer
void pack(Ipc::TypedMsgHdr &msg) const
store params into msg
QueryParam::Pointer get(const String &name) const
returns query parameter by name
static QueryParam::Pointer CreateParam(QueryParam::Type aType)
creates a parameter of the specified type
std::pair< String, QueryParam::Pointer > Param
Params::const_iterator find(const String &name) const
find query parameter by name
static void Parse(Parser::Tokenizer &, QueryParams &)
parses the query string parameters
void unpack(const Ipc::TypedMsgHdr &msg)
int caseCmp(char const *) const
an std::runtime_error with thrower location info