KiCad PCB EDA Suite
LINE_READER Class Referenceabstract

Class LINE_READER is an abstract class from which implementation specific LINE_READERs may be derived to read single lines of text and manage a line number counter. More...

#include <richio.h>

Inheritance diagram for LINE_READER:
FILE_LINE_READER FILTER_READER INPUTSTREAM_LINE_READER STRING_LINE_READER WHITESPACE_FILTER_READER

Public Member Functions

 LINE_READER (unsigned aMaxLineLength=LINE_READER_LINE_DEFAULT_MAX)
 Constructor LINE_READER builds a line reader and fixes the length of the maximum supported line length to aMaxLineLength. More...
 
virtual ~LINE_READER ()
 
virtual char * ReadLine ()=0
 Function ReadLine reads a line of text into the buffer and increments the line number counter. More...
 
virtual const wxString & GetSource () const
 Function GetSource returns the name of the source of the lines in an abstract sense. More...
 
char * Line () const
 Function Line returns a pointer to the last line that was read in. More...
 
 operator char * () const
 Operator char* is a casting operator that returns a char* pointer to the start of the line buffer. More...
 
virtual unsigned LineNumber () const
 Function Line Number returns the line number of the last line read from this LINE_READER. More...
 
unsigned Length () const
 Function Length returns the number of bytes in the last line read from this LINE_READER. More...
 

Protected Member Functions

void expandCapacity (unsigned newsize)
 Function expandCapacity will expand the capacity of line up to maxLineLength but not greater, so be careful about making assumptions of capacity after calling this. More...
 

Protected Attributes

unsigned length
 no. bytes in line before trailing nul. More...
 
unsigned lineNum
 
char * line
 the read line of UTF8 text More...
 
unsigned capacity
 no. bytes allocated for line. More...
 
unsigned maxLineLength
 maximum allowed capacity using resizing. More...
 
wxString source
 origin of text lines, e.g. filename or "clipboard" More...
 

Detailed Description

Class LINE_READER is an abstract class from which implementation specific LINE_READERs may be derived to read single lines of text and manage a line number counter.

Definition at line 81 of file richio.h.

Constructor & Destructor Documentation

LINE_READER::LINE_READER ( unsigned  aMaxLineLength = LINE_READER_LINE_DEFAULT_MAX)

Constructor LINE_READER builds a line reader and fixes the length of the maximum supported line length to aMaxLineLength.

Definition at line 103 of file richio.cpp.

References capacity, line, and LINE_READER_LINE_INITIAL_SIZE.

103  :
104  length( 0 ),
105  lineNum( 0 ),
106  line( NULL ),
107  capacity( 0 ),
108  maxLineLength( aMaxLineLength )
109 {
110  if( aMaxLineLength != 0 )
111  {
112  // start at the INITIAL size, expand as needed up to the MAX size in maxLineLength
114 
115  // but never go above user's aMaxLineLength, and leave space for trailing nul
116  if( capacity > aMaxLineLength+1 )
117  capacity = aMaxLineLength+1;
118 
119  line = new char[capacity];
120 
121  line[0] = '\0';
122  }
123 }
#define LINE_READER_LINE_INITIAL_SIZE
Definition: richio.h:74
unsigned maxLineLength
maximum allowed capacity using resizing.
Definition: richio.h:90
unsigned lineNum
Definition: richio.h:85
char * line
the read line of UTF8 text
Definition: richio.h:87
unsigned length
no. bytes in line before trailing nul.
Definition: richio.h:84
unsigned capacity
no. bytes allocated for line.
Definition: richio.h:88
LINE_READER::~LINE_READER ( )
virtual

Definition at line 126 of file richio.cpp.

References line.

127 {
128  delete[] line;
129 }
char * line
the read line of UTF8 text
Definition: richio.h:87

Member Function Documentation

void LINE_READER::expandCapacity ( unsigned  newsize)
protected

Function expandCapacity will expand the capacity of line up to maxLineLength but not greater, so be careful about making assumptions of capacity after calling this.

Definition at line 132 of file richio.cpp.

References capacity, length, line, and maxLineLength.

Referenced by FILE_LINE_READER::ReadLine(), STRING_LINE_READER::ReadLine(), and INPUTSTREAM_LINE_READER::ReadLine().

133 {
134  // length can equal maxLineLength and nothing breaks, there's room for
135  // the terminating nul. cannot go over this.
136  if( newsize > maxLineLength+1 )
137  newsize = maxLineLength+1;
138 
139  if( newsize > capacity )
140  {
141  capacity = newsize;
142 
143  // resize the buffer, and copy the original data
144  char* bigger = new char[capacity];
145 
146  wxASSERT( capacity >= length+1 );
147 
148  memcpy( bigger, line, length );
149  bigger[length] = 0;
150 
151  delete[] line;
152  line = bigger;
153  }
154 }
unsigned maxLineLength
maximum allowed capacity using resizing.
Definition: richio.h:90
char * line
the read line of UTF8 text
Definition: richio.h:87
unsigned length
no. bytes in line before trailing nul.
Definition: richio.h:84
unsigned capacity
no. bytes allocated for line.
Definition: richio.h:88
virtual const wxString& LINE_READER::GetSource ( ) const
inlinevirtual

Function GetSource returns the name of the source of the lines in an abstract sense.

This may be a file or it may be the clipboard or any other source of lines of text. The returned string is useful for reporting error messages.

Reimplemented in WHITESPACE_FILTER_READER, and FILTER_READER.

Definition at line 130 of file richio.h.

References source.

Referenced by LEGACY_PLUGIN::biuParse(), LEGACY_PLUGIN::checkVersion(), DSNLEXER::CurSource(), LEGACY_PLUGIN::degParse(), FILTER_READER::GetSource(), WHITESPACE_FILTER_READER::GetSource(), CMP_READER::Load(), LEGACY_NETLIST_READER::loadComponent(), LEGACY_NETLIST_READER::loadFootprintFilters(), LEGACY_NETLIST_READER::loadNet(), LEGACY_PLUGIN::loadSETUP(), GPCB_FPL_CACHE::parseMODULE(), and KICAD_NETLIST_PARSER::parseNet().

131  {
132  return source;
133  }
wxString source
origin of text lines, e.g. filename or "clipboard"
Definition: richio.h:92
unsigned LINE_READER::Length ( ) const
inline

Function Length returns the number of bytes in the last line read from this LINE_READER.

Definition at line 168 of file richio.h.

References length.

Referenced by LIB_FIELD::Load(), LEGACY_NETLIST_READER::loadComponent(), LEGACY_NETLIST_READER::loadFootprintFilters(), LEGACY_NETLIST_READER::loadNet(), KICAD_NETLIST_PARSER::parseNet(), FILTER_READER::ReadLine(), WHITESPACE_FILTER_READER::ReadLine(), and DSNLEXER::readLine().

169  {
170  return length;
171  }
unsigned length
no. bytes in line before trailing nul.
Definition: richio.h:84
char* LINE_READER::Line ( ) const
inline

Function Line returns a pointer to the last line that was read in.

Definition at line 139 of file richio.h.

References line.

Referenced by LEGACY_PLUGIN::biuParse(), LEGACY_PLUGIN::checkVersion(), LEGACY_PLUGIN::degParse(), NETLIST_READER::GuessNetlistFileType(), CMP_READER::Load(), SCH_BITMAP::Load(), LIB_PIN::Load(), SCH_SHEET_PIN::Load(), SCH_COMPONENT::Load(), LIB_PART::Load(), SCH_LEGACY_PLUGIN_CACHE::loadAliases(), SCH_LEGACY_PLUGIN_CACHE::loadArc(), SCH_LEGACY_PLUGIN_CACHE::loadBezier(), SCH_LEGACY_PLUGIN::loadBitmap(), SCH_LEGACY_PLUGIN::loadBusEntry(), SCH_LEGACY_PLUGIN_CACHE::loadCircle(), SCH_LEGACY_PLUGIN::loadComponent(), BITMAP_BASE::LoadData(), SCH_LEGACY_PLUGIN_CACHE::loadDrawEntries(), SCH_LEGACY_PLUGIN_CACHE::loadField(), EXCELLON_IMAGE::LoadFile(), SCH_LEGACY_PLUGIN::loadFile(), SCH_LEGACY_PLUGIN_CACHE::loadFootprintFilters(), SCH_LEGACY_PLUGIN::loadHeader(), SCH_LEGACY_PLUGIN_CACHE::loadHeader(), SCH_LEGACY_PLUGIN::loadJunction(), LEGACY_PLUGIN::loadMODULE_EDGE(), LEGACY_PLUGIN::loadMODULE_TEXT(), LP_CACHE::LoadModules(), LEGACY_NETLIST_READER::LoadNetlist(), SCH_LEGACY_PLUGIN::loadNoConnect(), SCH_EDIT_FRAME::LoadOneEEFile(), SCH_LEGACY_PLUGIN::loadPageSettings(), SCH_LEGACY_PLUGIN_CACHE::loadPart(), SCH_LEGACY_PLUGIN_CACHE::loadPin(), SCH_LEGACY_PLUGIN_CACHE::loadPolyLine(), SCH_LEGACY_PLUGIN_CACHE::loadRectangle(), SCH_LEGACY_PLUGIN::loadText(), SCH_LEGACY_PLUGIN_CACHE::loadText(), LEGACY_PLUGIN::loadTrackList(), SCH_LEGACY_PLUGIN::loadWire(), operator char *(), KICAD_NETLIST_PARSER::parseNet(), GPCB_FPL_CACHE::parseParameters(), DSNLEXER::PopReader(), SCH_EDIT_FRAME::ProcessCmpToFootprintLinkFile(), MWAVE_POLYGONAL_SHAPE_DLG::ReadDataShapeDescr(), FILTER_READER::ReadLine(), DSNLEXER::readLine(), ReadSchemaDescr(), and LP_CACHE::SkipIndex().

140  {
141  return line;
142  }
char * line
the read line of UTF8 text
Definition: richio.h:87
LINE_READER::operator char * ( ) const
inline

Operator char* is a casting operator that returns a char* pointer to the start of the line buffer.

Definition at line 149 of file richio.h.

References Line().

150  {
151  return Line();
152  }
char * Line() const
Function Line returns a pointer to the last line that was read in.
Definition: richio.h:139

Member Data Documentation

unsigned LINE_READER::capacity
protected

no. bytes allocated for line.

Definition at line 88 of file richio.h.

Referenced by expandCapacity(), LINE_READER(), FILE_LINE_READER::ReadLine(), STRING_LINE_READER::ReadLine(), and INPUTSTREAM_LINE_READER::ReadLine().

unsigned LINE_READER::length
protected
unsigned LINE_READER::maxLineLength
protected

maximum allowed capacity using resizing.

Definition at line 90 of file richio.h.

Referenced by expandCapacity(), FILE_LINE_READER::ReadLine(), STRING_LINE_READER::ReadLine(), and INPUTSTREAM_LINE_READER::ReadLine().

wxString LINE_READER::source
protected

origin of text lines, e.g. filename or "clipboard"

Definition at line 92 of file richio.h.

Referenced by FILE_LINE_READER::FILE_LINE_READER(), GetSource(), INPUTSTREAM_LINE_READER::INPUTSTREAM_LINE_READER(), and STRING_LINE_READER::STRING_LINE_READER().


The documentation for this class was generated from the following files: