File: extracttype.cc

package info (click to toggle)
bisonc%2B%2B 6.09.02-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,984 kB
  • sloc: cpp: 9,375; ansic: 1,505; fortran: 1,134; makefile: 1,062; sh: 526; yacc: 84; lex: 60
file content (25 lines) | stat: -rw-r--r-- 733 bytes parent folder | download | duplicates (10)
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
#include "parser.ih"

    // expect <typename> or not, if not at a  `<' character

size_t Parser::extractType(string *type, size_t pos, Block &block)
{
    if (pos >= block.length())    // block ends prematurely.
        throw 1;


    if (block[pos] != '<')        // no explicit type
        return 0;

    size_t begin = pos + 1;       // first char of the type

                                    // saw the opening bracket, find the `>'
    size_t end = block.find('>', begin);

    if (end == string::npos)        // no `>' found
        throw 1;                    // caught as incomplete $ specification

    *type = block.substr(begin, end - begin);

    return end + 1 - pos;           // length of <type> specification
}