KiCad PCB EDA Suite
Loading...
Searching...
No Matches
FILE_LINE_READER Class Reference

A LINE_READER that reads from an open file. More...

#include <richio.h>

Inheritance diagram for FILE_LINE_READER:
LINE_READER

Public Member Functions

 FILE_LINE_READER (const wxString &aFileName, unsigned aStartingLineNumber=0, unsigned aMaxLineLength=LINE_READER_LINE_DEFAULT_MAX)
 Take aFileName and the size of the desired line buffer and opens the file and assumes the obligation to close it.
 
 FILE_LINE_READER (FILE *aFile, const wxString &aFileName, bool doOwn=true, unsigned aStartingLineNumber=0, unsigned aMaxLineLength=LINE_READER_LINE_DEFAULT_MAX)
 Take an open FILE and the size of the desired line buffer and takes ownership of the open file, i.e.
 
 ~FILE_LINE_READER ()
 May or may not close the open file, depending on doOwn in constructor.
 
char * ReadLine () override
 Read a line of text into the buffer and increments the line number counter.
 
void Rewind ()
 Rewind the file and resets the line number back to zero.
 
long int FileLength ()
 
long int CurPos ()
 
virtual const wxString & GetSource () const
 Returns the name of the source of the lines in an abstract sense.
 
char * Line () const
 Return a pointer to the last line that was read in.
 
 operator char * () const
 A casting operator that returns a char* pointer to the start of the line buffer.
 
virtual unsigned LineNumber () const
 Return the line number of the last line read from this LINE_READER.
 
unsigned Length () const
 Return the number of bytes in the last line read from this LINE_READER.
 

Protected Member Functions

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

Protected Attributes

bool m_iOwn
 if I own the file, I'll promise to close it, else not.
 
FILE * m_fp
 I may own this file, but might not.
 
unsigned m_length
 no. bytes in line before trailing nul.
 
unsigned m_lineNum
 
char * m_line
 the read line of UTF8 text
 
unsigned m_capacity
 no. bytes allocated for line.
 
unsigned m_maxLineLength
 maximum allowed capacity using resizing.
 
wxString m_source
 origin of text lines, e.g. filename or "clipboard"
 

Detailed Description

A LINE_READER that reads from an open file.

File must be already open so that this class can exist without any UI policy.

Definition at line 184 of file richio.h.

Constructor & Destructor Documentation

◆ FILE_LINE_READER() [1/2]

FILE_LINE_READER::FILE_LINE_READER ( const wxString & aFileName,
unsigned aStartingLineNumber = 0,
unsigned aMaxLineLength = LINE_READER_LINE_DEFAULT_MAX )

Take aFileName and the size of the desired line buffer and opens the file and assumes the obligation to close it.

Parameters
aFileNameis the name of the file to open and to use for error reporting purposes.
aStartingLineNumberis the initial line number to report on error, and is accessible here for the case where multiple DSNLEXERs are reading from the same file in sequence, all from the same open file (with doOwn = false). Internally it is incremented by one after each ReadLine(), so the first reported line number will always be one greater than what is provided here.
aMaxLineLengthis the number of bytes to use in the line buffer.
Exceptions
IO_ERRORif aFileName cannot be opened.

Definition at line 197 of file richio.cpp.

References _, LINE_READER::LINE_READER(), m_fp, m_iOwn, LINE_READER::m_lineNum, LINE_READER::m_source, KIPLATFORM::IO::SeqFOpen(), and THROW_IO_ERROR.

◆ FILE_LINE_READER() [2/2]

FILE_LINE_READER::FILE_LINE_READER ( FILE * aFile,
const wxString & aFileName,
bool doOwn = true,
unsigned aStartingLineNumber = 0,
unsigned aMaxLineLength = LINE_READER_LINE_DEFAULT_MAX )

Take an open FILE and the size of the desired line buffer and takes ownership of the open file, i.e.

assumes the obligation to close it.

Parameters
aFileis an open file.
aFileNameis the name of the file for error reporting purposes.
doOwnif true, means I should close the open file, else not.
aStartingLineNumberis the initial line number to report on error, and is accessible here for the case where multiple DSNLEXERs are reading from the same file in sequence, all from the same open file (with doOwn = false). Internally it is incremented by one after each ReadLine(), so the first reported line number will always be one greater than what is provided here.
aMaxLineLengthis the number of bytes to use in the line buffer.

Definition at line 215 of file richio.cpp.

References LINE_READER::LINE_READER(), m_fp, m_iOwn, LINE_READER::m_lineNum, and LINE_READER::m_source.

◆ ~FILE_LINE_READER()

FILE_LINE_READER::~FILE_LINE_READER ( )

May or may not close the open file, depending on doOwn in constructor.

Definition at line 226 of file richio.cpp.

References m_fp, and m_iOwn.

Member Function Documentation

◆ CurPos()

long int FILE_LINE_READER::CurPos ( )

Definition at line 243 of file richio.cpp.

References m_fp.

◆ expandCapacity()

void LINE_READER::expandCapacity ( unsigned aNewsize)
protectedinherited

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 170 of file richio.cpp.

References m_capacity, m_length, m_line, and m_maxLineLength.

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

◆ FileLength()

long int FILE_LINE_READER::FileLength ( )

Definition at line 233 of file richio.cpp.

References m_fp.

◆ GetSource()

virtual const wxString & LINE_READER::GetSource ( ) const
inlinevirtualinherited

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 FILTER_READER, and WHITESPACE_FILTER_READER.

Definition at line 121 of file richio.h.

References m_source.

Referenced by PCB_IO_KICAD_LEGACY::getVersion(), SCH_IO_KICAD_LEGACY_LIB_CACHE::LoadPart(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadPin(), SCH_IO_KICAD_LEGACY::loadSymbol(), and GPCB_FPL_CACHE::parseFOOTPRINT().

◆ Length()

unsigned LINE_READER::Length ( ) const
inlineinherited

Return the number of bytes in the last line read from this LINE_READER.

Definition at line 155 of file richio.h.

References m_length.

◆ Line()

char * LINE_READER::Line ( ) const
inlineinherited

Return a pointer to the last line that was read in.

Definition at line 129 of file richio.h.

References m_line.

Referenced by bench_string_lr(), bench_string_lr_reuse(), bench_wxbis(), bench_wxbis_reuse(), bench_wxis(), bench_wxis_reuse(), PCB_IO_KICAD_LEGACY::CanReadFootprint(), PCB_IO_KICAD_LEGACY::getVersion(), NETLIST_READER::GuessNetlistFileType(), PCB_IO_GEDA::ImportFootprint(), SCH_IO_KICAD_LEGACY_LIB_CACHE::Load(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadAliases(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadArc(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadBezier(), SCH_IO_KICAD_LEGACY::loadBitmap(), SCH_IO_KICAD_LEGACY::loadBusAlias(), SCH_IO_KICAD_LEGACY::loadBusEntry(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadCircle(), SCH_IO_KICAD_LEGACY::LoadContent(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadDocs(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadDrawEntries(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadField(), EXCELLON_IMAGE::LoadFile(), SCH_IO_KICAD_LEGACY::loadFile(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadFootprintFilters(), SCH_IO_KICAD_LEGACY::loadHeader(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadHeader(), SCH_IO_KICAD_LEGACY::loadJunction(), BITMAP_BASE::LoadLegacyData(), LP_CACHE::LoadModules(), SCH_IO_KICAD_LEGACY::loadNoConnect(), SCH_IO_KICAD_LEGACY::loadPageSettings(), SCH_IO_KICAD_LEGACY_LIB_CACHE::LoadPart(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadPin(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadPolyLine(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadRect(), SCH_IO_KICAD_LEGACY::loadSymbol(), SCH_IO_KICAD_LEGACY::loadText(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadText(), SCH_IO_KICAD_LEGACY::loadWire(), operator char *(), GPCB_FPL_CACHE::parseParameters(), SCH_EDITOR_CONTROL::processCmpToFootprintLinkFile(), MWAVE_POLYGONAL_SHAPE_DLG::ReadDataShapeDescr(), LP_CACHE::SkipIndex(), EXCELLON_IMAGE::TestFileIsExcellon(), and GERBER_FILE_IMAGE::TestFileIsRS274().

◆ LineNumber()

virtual unsigned LINE_READER::LineNumber ( ) const
inlinevirtualinherited

Return the line number of the last line read from this LINE_READER.

Lines start from 1.

Reimplemented in FILTER_READER, and WHITESPACE_FILTER_READER.

Definition at line 147 of file richio.h.

References m_lineNum.

Referenced by SCH_IO_KICAD_LEGACY_LIB_CACHE::loadDocs(), SCH_IO_KICAD_LEGACY_LIB_CACHE::LoadPart(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadPin(), SCH_IO_KICAD_LEGACY::loadSymbol(), and GPCB_FPL_CACHE::parseFOOTPRINT().

◆ operator char *()

LINE_READER::operator char * ( ) const
inlineinherited

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

Definition at line 137 of file richio.h.

References Line().

◆ ReadLine()

char * FILE_LINE_READER::ReadLine ( )
overridevirtual

◆ Rewind()

void FILE_LINE_READER::Rewind ( )
inline

Rewind the file and resets the line number back to zero.

Line number will go to 1 on first ReadLine().

Definition at line 234 of file richio.h.

References m_fp, and LINE_READER::m_lineNum.

Referenced by PCB_IO_KICAD_LEGACY::LoadBoard(), PCB_IO_KICAD_SEXPR::LoadBoard(), SCH_IO_KICAD_LEGACY::loadFile(), and SCH_IO_KICAD_SEXPR::loadFile().

Member Data Documentation

◆ m_capacity

unsigned LINE_READER::m_capacity
protectedinherited

no. bytes allocated for line.

Definition at line 171 of file richio.h.

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

◆ m_fp

FILE* FILE_LINE_READER::m_fp
protected

I may own this file, but might not.

Definition at line 245 of file richio.h.

Referenced by CurPos(), FILE_LINE_READER(), FILE_LINE_READER(), FileLength(), ReadLine(), Rewind(), and ~FILE_LINE_READER().

◆ m_iOwn

bool FILE_LINE_READER::m_iOwn
protected

if I own the file, I'll promise to close it, else not.

Definition at line 244 of file richio.h.

Referenced by FILE_LINE_READER(), FILE_LINE_READER(), and ~FILE_LINE_READER().

◆ m_length

◆ m_line

◆ m_lineNum

◆ m_maxLineLength

unsigned LINE_READER::m_maxLineLength
protectedinherited

maximum allowed capacity using resizing.

Definition at line 173 of file richio.h.

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

◆ m_source


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