331{
333 {
334 return;
335 }
337 struct yyguts_t *yyg = (
struct yyguts_t*)
g_yyscanner;
338
339#ifdef FLEX_DEBUG
341#endif
342
344 yyextra->inputString = decl.
data();
345
346 yyextra->inputPosition = 0;
347 yyextra->classTempListFound = false;
348 yyextra->funcTempListFound = false;
349 yyextra->insideObjC = lang==SrcLangExt::ObjC;
350 yyextra->insidePHP = lang==SrcLangExt::PHP;
351 yyextra->insidePython = lang==SrcLangExt::Python;
352 yyextra->scope.clear();
353 yyextra->className.clear();
354 yyextra->classTempList.clear();
355 yyextra->funcTempList.clear();
356 yyextra->name.clear();
357 yyextra->type.clear();
358 yyextra->args.clear();
359 yyextra->exceptionString.clear();
360
362 BEGIN( Start );
364
365
366
367
368 if (
size_t nb = yyextra->name.rfind(
'[') ; nb!=
DString::npos && yyextra->args.empty())
369 {
370 yyextra->args.prepend(yyextra->name.mid(nb));
371 yyextra->name=yyextra->name.left(nb);
372 }
373
374 cl=yyextra->scope;
376 size_t il=n.find('<'), ir=n.rfind('>');
378
379
380 {
382 n=n.left(il);
383 }
384
385
386
390
391 size_t len = t.length();
392 if (!t.empty() && t.at(len-1)==')')
393 {
394
395 size_t pos = t.find("decltype(");
397 {
398 size_t cnt = 1;
399 for (size_t i = pos + 9; i < len; i++)
400 {
401 if (t.at(i) == '(') cnt++;
402 else if (t.at(i) == ')')
403 {
404 cnt--;
405 if (cnt == 0)
406 {
407 if (i != len-1)
408 {
409 a.prepend(")");
410 t=t.left(len-1);
411 }
412 }
413 }
414 }
415 }
416 else
417 {
418 a.prepend(")");
419 t=t.left(len-1);
420 }
421 }
422
423
424
426 return;
427}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
static constexpr size_t npos
value used to indicate 'not found' or 'to the end of the string', matching std::string::npos
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
static bool isFlagSet(const DebugMask mask)
static yyscan_t g_yyscanner
static struct declinfoYY_state g_declinfo_extra
DString removeRedundantWhiteSpace(const DString &s)