Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

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;

Definition at line 35 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_awkoperator++ ()
 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_awkoperator= (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

enum vul_awk::ModeFlags
 

Enumerator:
none 
verbose 
strip_comments 
backslash_continuations 

Definition at line 40 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 20 of file vul_awk.cxx.

vul_awk::~vul_awk  ) 
 

Definition at line 31 of file vul_awk.cxx.

vul_awk::vul_awk const vul_awk that  )  [protected]
 


Member Function Documentation

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.

char const* vul_awk::line  )  const [inline]
 

Return the entire line.

Definition at line 67 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 87 of file vul_awk.cxx.

void vul_awk::next  )  [protected]
 

Definition at line 36 of file vul_awk.cxx.

int vul_awk::NF  )  const [inline]
 

Return the number of fields on this line.

Definition at line 64 of file vul_awk.h.

int vul_awk::NR  )  const [inline]
 

Return the current "record number", i.e. line number.

Definition at line 61 of file vul_awk.h.

vul_awk::operator safe_bool  )  const [inline]
 

Return true if this line is not the last.

Definition at line 74 of file vul_awk.h.

bool vul_awk::operator!  )  const [inline]
 

Return false if this line is not the last.

Definition at line 78 of file vul_awk.h.

vul_awk& vul_awk::operator++  )  [inline]
 

Advance to the next line.

Definition at line 82 of file vul_awk.h.

vul_awk& vul_awk::operator= const vul_awk that  )  [protected]
 

char const* vul_awk::operator[] unsigned  i  )  const [inline]
 

Return field i. Counting starts at 0.

Definition at line 53 of file vul_awk.h.


Member Data Documentation

bool vul_awk::done_ [protected]
 

Definition at line 108 of file vul_awk.h.

vcl_istream& vul_awk::fd_ [protected]
 

Definition at line 92 of file vul_awk.h.

vcl_vector<char *> vul_awk::fields_ [protected]
 

Definition at line 102 of file vul_awk.h.

vcl_string vul_awk::line_ [protected]
 

Definition at line 97 of file vul_awk.h.

int vul_awk::line_number_ [protected]
 

Definition at line 105 of file vul_awk.h.

ModeFlags vul_awk::mode_ [protected]
 

Definition at line 94 of file vul_awk.h.

char* vul_awk::split_line_ [protected]
 

Definition at line 100 of file vul_awk.h.

vul_awk::VCL_SAFE_BOOL_DEFINE [private]
 

Definition at line 37 of file vul_awk.h.


The documentation for this class was generated from the following files:
Generated on Thu Jan 10 14:41:01 2008 for core/vul by  doxygen 1.4.4