File: nextfield.cc

package info (click to toggle)
bobcat 1.11.0-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 3,344 kB
  • ctags: 473
  • sloc: makefile: 12,078; cpp: 5,121; ansic: 63; sh: 14
file content (34 lines) | stat: -rw-r--r-- 1,356 bytes parent folder | download
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
30
31
32
33
34
#include "string.ih"

String::Type String::nextField(const_iterator *until, const_iterator from,
                                string const &separators) const
{
    if (separators.find(*from) != string::npos) // saw a separator
    {
        *until = separator(from, separators);   // get it, `*until' points 
                                                // beyond it.
        return SEPARATOR;
    }

    switch (*from)                              // handle all other cases
    {
        case '"':                               // d-quoted string
            *until = quoted(from, '"');
                                                // if pointing at the matching
                                                // " then it's ok, otherwise
                                                // an error was encountered
        return *until != end() ? DQUOTE : DQUOTE_UNTERMINATED;

        case '\'':    
            *until = quoted(from, '\'');
                                                // if pointing at the matching
                                                // ' then it's ok, otherwise
                                                // an error was encountered

        return *until != end() ? SQUOTE : SQUOTE_UNTERMINATED;

        default:
        return word(until, from, separators);   // otherwise get the next word
    }
}