vul_awk Class Reference
#include <vul_awk.h>
List of all members.
Detailed Description
The core of awk.
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:
for (vul_awk awk=cin; awk; ++awk)
vcl_cout << awk[2] << vcl_endl;
The constructor takes an integer mode-flag variable. Right now, only the strip_comments flag has any effect, though the ModeFlags enumeration contains other potential flags.
When the strip_comments flag is set then everything from the first '#' character to the end of the line is replaced with a single space. As a special feature, lines that contain an # as the first character are skipped entirely by the next() routine, no attempt will be made to extract fields from them. They will be counted in the line numbering so that error messages can easily refer to the correct line in the file. To extend the above example to handle comments in the file, write:
Definition at line 56 of file vul_awk.h.
|
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 |
Member Enumeration Documentation
- Enumerator:
-
| none |
|
| verbose |
|
| strip_comments |
|
| backslash_continuations |
|
Definition at line 61 of file vul_awk.h.
Constructor & Destructor Documentation
| vul_awk::vul_awk |
( |
vcl_istream & |
s, |
|
|
ModeFlags |
mode = none | |
|
) |
| | |
Construct from input stream.
Definition at line 24 of file vul_awk.cxx.
| vul_awk::vul_awk |
( |
const vul_awk & |
that |
) |
[protected] |
Member Function Documentation
| char const* vul_awk::operator[] |
( |
unsigned |
i |
) |
const [inline] |
Return field i. Counting starts at 0.
Definition at line 74 of file vul_awk.h.
| int vul_awk::NR |
( |
|
) |
const [inline] |
Return the current "record number", i.e. line number.
Definition at line 82 of file vul_awk.h.
| int vul_awk::NF |
( |
|
) |
const [inline] |
Return the number of fields on this line.
Definition at line 85 of file vul_awk.h.
| char const* vul_awk::line |
( |
|
) |
const [inline] |
Return the entire line.
Definition at line 88 of file vul_awk.h.
| char const * vul_awk::line_from |
( |
int |
field_number |
) |
const |
Return the remainder of the line, starting from field_number.
(0 is from the first non-whitespace character)
Definition at line 123 of file vul_awk.cxx.
| vul_awk::operator safe_bool |
( |
|
) |
const [inline] |
Return true if this line is not the last.
Definition at line 95 of file vul_awk.h.
| bool vul_awk::operator! |
( |
|
) |
const [inline] |
Return false if this line is not the last.
Definition at line 99 of file vul_awk.h.
| vul_awk& vul_awk::operator++ |
( |
|
) |
[inline] |
Advance to the next line.
Definition at line 103 of file vul_awk.h.
| void vul_awk::error |
( |
vcl_ostream & |
, |
|
|
char const * |
message, |
|
|
int |
field = -1, |
|
|
int |
char_within_field = 0 | |
|
) |
| | |
Display error message, line number.
Also display optional field number and char within field.
| void vul_awk::next |
( |
|
) |
[protected] |
Member Data Documentation
The documentation for this class was generated from the following files:
Generated on Mon Mar 8 05:09:58 2010 for core/vul by
1.5.1