vul_awk reads lines from a vcl_istream and breaks them into whitespace-separated fields. Its primary advantage is that its name defines the semantics of its methods---except that this C++ version uses zero-based fields. The usage is exemplified in this example, to print the second field in every line:
|
Public Types |
| enum | ModeFlags { none = 0x00,
verbose = 0x01,
strip_comments = 0x02,
backslash_continuations = 0x04
} |
Public Member Functions |
| | vul_awk (vcl_istream &s, ModeFlags mode=none) |
| | Construct from input stream.
|
| | ~vul_awk () |
| char const * | operator[] (unsigned i) const |
| | Return field i. Counting starts at 0.
|
| int | NR () const |
| | Return the current "record number", i.e. line number.
|
| int | NF () const |
| | Return the number of fields on this line.
|
| char const * | line () const |
| | Return the entire line.
|
| char const * | line_from (int field_number) const |
| | Return the remainder of the line, starting from field_number.
|
| | operator safe_bool () const |
| | Return true if this line is not the last.
|
| bool | operator! () const |
| | Return false if this line is not the last.
|
| vul_awk & | operator++ () |
| | Advance to the next line.
|
| void | error (vcl_ostream &, char const *message, int field=-1, int char_within_field=0) |
| | Display error message, line number.
|
Protected Member Functions |
| void | next () |
| | vul_awk (const vul_awk &that) |
| vul_awk & | operator= (const vul_awk &that) |
Protected Attributes |
| vcl_istream & | fd_ |
| ModeFlags | mode_ |
| vcl_string | line_ |
| char * | split_line_ |
| vcl_vector< char * > | fields_ |
| int | line_number_ |
| bool | done_ |
Private Attributes |
| | VCL_SAFE_BOOL_DEFINE |