本文整理汇总了C++中MatchPair::length方法的典型用法代码示例。如果您正苦于以下问题:C++ MatchPair::length方法的具体用法?C++ MatchPair::length怎么用?C++ MatchPair::length使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MatchPair
的用法示例。
在下文中一共展示了MatchPair::length方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: input
static bool
CreateRegExpMatchResult(JSContext *cx, JSString *input_, const jschar *chars, size_t length,
MatchPairs *matchPairs, Value *rval)
{
RootedString input(cx, input_);
/*
* Create the (slow) result array for a match.
*
* Array contents:
* 0: matched string
* 1..pairCount-1: paren matches
* input: input string
* index: start index for the match
*/
RootedObject array(cx, NewSlowEmptyArray(cx));
if (!array)
return false;
if (!input) {
input = js_NewStringCopyN(cx, chars, length);
if (!input)
return false;
}
RegExpMatchBuilder builder(cx, array);
RootedValue undefinedValue(cx, UndefinedValue());
for (size_t i = 0; i < matchPairs->pairCount(); ++i) {
MatchPair pair = matchPairs->pair(i);
JSString *captured;
if (pair.isUndefined()) {
JS_ASSERT(i != 0); /* Since we had a match, first pair must be present. */
if (!builder.append(i, undefinedValue))
return false;
} else {
captured = js_NewDependentString(cx, input, pair.start, pair.length());
RootedValue value(cx, StringValue(captured));
if (!captured || !builder.append(i, value))
return false;
}
}
if (!builder.setIndex(matchPairs->pair(0).start) || !builder.setInput(input))
return false;
*rval = ObjectValue(*array);
return true;
}