|
|
| parsed_line (std::istream *in, std::ostream *out) |
| | Construct given pointers to input and output streams.
|
| |
|
std::istream * | file () |
| | Get a pointer to the input stream from which this parsed_line reads.
|
| |
|
unsigned | num () const |
| | Get the greatest source line number spanned by this line.
|
| |
|
unsigned | extensions () const |
| | Get the number of linefeeds embedded in this line.
|
| |
|
void | mark_keyword (size_t off, size_t len) |
| | Record the offset and length of a directive keyword in the line.
|
| |
| bool | get () |
| | Try to read a line of input. More...
|
| |
|
void | replace (std::string const &replacement) |
| | Replace the line with another string.
|
| |
| template<directive_type DirectiveType> |
| void | keyword_edit () |
| | Replace the directive in the line. More...
|
| |
|
void | set_simplified (bool value=true) |
| | Classifiy the line as simplified or not.
|
| |
|
bool | is_simplified () const |
| | Say whether the line has been simplified.
|
| |
|
bool | reportable () |
| | Is the line reportable for the operative command.
|
| |
|
void | set_directive_type (directive_type dtype) |
| | Set the directive type of the line.
|
| |
|
directive_type | get_directive_type () const |
| | Get Set the directive type of the line.
|
| |
|
void | set_dropping () |
| | Record whether we are dropping the line.
|
| |
|
bool | dropping () const |
| | Are we dropping the line?
|
| |
|
void | output () |
| | Output the line.
|
| |
|
void | drop () |
| | Drop the line.
|
| |
|
unsigned & | indent () |
| | Get a reference to the line's indentation amount.
|
| |
|
| parse_buffer ()=default |
| | Default constuctor.
|
| |
|
virtual | ~parse_buffer () |
| | Destructor.
|
| |
|
| parse_buffer (std::string const &str) |
| | Explicitly construct from an std::string
|
| |
|
parse_buffer & | operator= (parse_buffer const &)=default |
| | Assign another parse_buffer
|
| |
|
parse_buffer & | operator= (std::string const &str) |
| | Assign an std::string
|
| |
|
bool | operator== (parse_buffer const &other) const |
| | Equality.
|
| |
|
bool | operator!= (parse_buffer const &other) const |
| | Inequality operator.
|
| |
|
size_t | size () const |
| | Get the length of the parse_buffer
|
| |
|
| operator std::string const & () const |
| | Explicitly cast to std::string
|
| |
|
std::string | substr (size_t start, size_t len=std::string::npos) const |
| | Get a substring of the parse_buffer.
|
| |
|
bool | overshoot (size_t off=0) const |
| | Say whether an offset is out of tange.
|
| |
|
char | at (size_t off) const |
| | Get the character indexed by an offset. Not range-checked.
|
| |
|
char & | at (size_t off) |
| | Get a reference to the character an offset. Not range-checked.
|
| |
|
char | operator[] (size_t off) const |
| | Get the character at an offset. Not range checked.
|
| |
|
char & | operator[] (size_t offset) |
| | Get a reference to the character at an offset. Not range checked.
|
| |
|
void | clear () |
| | Empty the parse_buffer.
|
| |
| unsigned | eol (size_t offset) const |
| | Say whether there is a newline sequence at an offset. More...
|
| |
|
std::string & | str () |
| | Get a [const] reference to the underlying std::string.
|
| |
|
std::string const & | str () const |
| |
|
char const * | data () const |
| | Get a [const] pointer to the data.
|
| |
|
char * | data () |
| |
|
|
size_t | extension_pending (size_t off) const override |
| | Say whether a line extension is pending at an offset in the line.
|
| |
| size_t | extend (size_t skip) override |
| | Try to extend the line past a new-line sequence. More...
|
| |
|
size_t | extend () override |
| | Try to read another line of input, returning the number of bytes read.
|
| |
| void | keyword_lop (std::string const &keyword) |
| | Convert the directive in the line into a another one that has no argument. More...
|
| |
| void | keyword_swap (std::string const &directive) |
| | Replace the directive keyword in the line with another one. More...
|
| |
|
void | write () |
| | Output the line.
|
| |
|
void | write_commented_out () |
| | Output the line commented out.
|
| |
|
void | write_fast () |
| | Output the line fast, when possible.
|
| |
|
void | write_slow () |
| | Output the line slowely, when necessary.
|
| |
| void | write (bool keep) |
| | Output the line or else discard it according to options. More...
|
| |
|
void | set_reportable () |
| | Record whether the line is reportable for the operative command.
|
| |
|
|
unsigned | _extensions = 0 |
| | The number of linefeeds embedded in the line.
|
| |
|
unsigned | _lineno = 0 |
| | The greatest source line number spanned by this line.
|
| |
|
std::istream * | _in |
| | The input stream from which this line is read.
|
| |
|
std::ostream * | _out |
| | The output stream to which this line is written.
|
| |
|
size_t | _keyword_posn = 0 |
| | Offset to directive keyword, if any.
|
| |
|
size_t | _keyword_len = 0 |
| | Length of directive keyword, if any.
|
| |
|
directive_type | _dtype = HASH_UNKNOWN |
| | The directive type of this line.
|
| |
|
bool | _reportable = false |
| | Is this line reportable?
|
| |
|
bool | _dropping = false |
| | Are we dropping this line.
|
| |
|
bool | _simplified = false |
| | Has the line been simplified?
|
| |
|
unsigned | _drop_run_length = 0 |
| | Count of contiguous lines that are dropped together.
|
| |
|
unsigned | _indent = 0 |
| | Amount by which the line is indented.
|
| |
|
std::string | _text |
| | The data.
|
| |
struct parsed_line is the coan parser's representation of a parsed line of input read from a file.
Definition at line 50 of file parsed_line.h.
template<directive_type DirectiveType>
| void parsed_line::keyword_edit |
( |
| ) |
|
Replace the directive in the line.
- Template Parameters
-
| DirectiveType | The type of directive that is to replace the existing one. |
The member function edits the line to subsitute a directive of type DirectiveType for the existing directive in the line to rectify the #if-logic of the file in the light of lines that have been dropped.
If DirectiveType denotes a type of directive that has no argument then the existing directive keyword is replaced the keyword corresponding to DirectiveType and the line is then terminated with a linefeed.
Otherwise the existing directive keyord is simply replaced the keyword corresponding to DirectiveType.