File: wordtoken.cc

package info (click to toggle)
bobcat 6.11.00-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,292 kB
  • sloc: cpp: 21,370; fortran: 6,507; makefile: 2,787; sh: 724; perl: 401; ansic: 26
file content (29 lines) | stat: -rw-r--r-- 857 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "cgi.ih"

size_t CGIFSA::wordToken()
{
    d_buffer.clear();

    while (islower(d_in.peek()))        // read all lowercase chars
        d_buffer += d_in.get();

    if (!d_buffer.size())               // if none read, return the next char
        return charToken();

                                        // look for a character class name
    PairCPPFunP const *ret =
            find_if(
                s_charClass, s_charClassEnd,
                [&](PairCPPFunP const &cClass)
                {
                    return d_buffer == cClass.first;
                }
            );

    if (ret == s_charClassEnd)          // no character class found
        return static_cast<unsigned char>(*d_buffer.rbegin());

    d_setIdx = ret - s_charClass;       // charclass found

    return SET;                         // return `set found'
}