KiCad PCB EDA Suite
Loading...
Searching...
No Matches
IO_BASE Class Referenceabstract

#include <io_base.h>

Inheritance diagram for IO_BASE:
PCB_IO SCH_IO PCB_IO_ALTIUM_CIRCUIT_MAKER PCB_IO_ALTIUM_CIRCUIT_STUDIO PCB_IO_ALTIUM_DESIGNER PCB_IO_CADSTAR_ARCHIVE PCB_IO_EAGLE PCB_IO_EASYEDA PCB_IO_EASYEDAPRO PCB_IO_FABMASTER PCB_IO_GEDA PCB_IO_IPC2581 PCB_IO_KICAD_LEGACY PCB_IO_KICAD_SEXPR PCB_IO_PCAD PCB_IO_SOLIDWORKS SCH_IO_ALTIUM SCH_IO_CADSTAR_ARCHIVE SCH_IO_DATABASE SCH_IO_EAGLE SCH_IO_EASYEDA SCH_IO_EASYEDAPRO SCH_IO_HTTP_LIB SCH_IO_KICAD_LEGACY SCH_IO_KICAD_SEXPR SCH_IO_LTSPICE

Classes

struct  IO_FILE_DESC
 Container that describes file type info. More...
 

Public Member Functions

virtual ~IO_BASE ()=default
 
const wxString & GetName () const
 Return a brief hard coded name for this IO interface.
 
virtual void SetReporter (REPORTER *aReporter)
 Set an optional reporter for warnings/errors.
 
virtual void SetProgressReporter (PROGRESS_REPORTER *aReporter)
 Set an optional progress reporter.
 
virtual const IO_FILE_DESC GetLibraryDesc () const =0
 Get the descriptor for the library container that this IO plugin operates on.
 
virtual const IO_FILE_DESC GetLibraryFileDesc () const
 Get the descriptor for the individual library elements that this IO plugin operates on.
 
virtual bool CanReadLibrary (const wxString &aFileName) const
 Checks if this IO object can read the specified library file/directory.
 
virtual void CreateLibrary (const wxString &aLibraryPath, const STRING_UTF8_MAP *aProperties=nullptr)
 Create a new empty library at aLibraryPath empty.
 
virtual bool DeleteLibrary (const wxString &aLibraryPath, const STRING_UTF8_MAP *aProperties=nullptr)
 Delete an existing library and returns true, or if library does not exist returns false, or throws an exception if library exists but is read only or cannot be deleted for some other reason.
 
virtual bool IsLibraryWritable (const wxString &aLibraryPath)
 Return true if the library at aLibraryPath is writable.
 
virtual void GetLibraryOptions (STRING_UTF8_MAP *aListToAppendTo) const
 Append supported IO options to aListToAppenTo along with internationalized descriptions.
 

Protected Member Functions

 IO_BASE ()=delete
 
 IO_BASE (const wxString &aName)
 

Protected Attributes

wxString m_name
 Name of the IO loader.
 
REPORTERm_reporter
 Reporter to log errors/warnings to, may be nullptr.
 
PROGRESS_REPORTERm_progressReporter
 Progress reporter to track the progress of the operation, may be nullptr.
 

Detailed Description

Definition at line 32 of file io_base.h.

Constructor & Destructor Documentation

◆ ~IO_BASE()

virtual IO_BASE::~IO_BASE ( )
virtualdefault

◆ IO_BASE() [1/2]

IO_BASE::IO_BASE ( )
protecteddelete

◆ IO_BASE() [2/2]

IO_BASE::IO_BASE ( const wxString &  aName)
inlineprotected
Parameters
aNameis the user-visible name for the IO loader

Definition at line 198 of file io_base.h.

Member Function Documentation

◆ CanReadLibrary()

bool IO_BASE::CanReadLibrary ( const wxString &  aFileName) const
virtual

Checks if this IO object can read the specified library file/directory.

If not overriden, extension check is used.

Note
This is not a check that the file system object is readable by the user, but a check that this IO object can parse the given library.

Reimplemented in SCH_IO_ALTIUM, SCH_IO_CADSTAR_ARCHIVE, SCH_IO_EAGLE, SCH_IO_EASYEDA, SCH_IO_KICAD_LEGACY, PCB_IO_ALTIUM_DESIGNER, PCB_IO_CADSTAR_ARCHIVE, PCB_IO_EAGLE, PCB_IO_EASYEDA, and PCB_IO_IPC2581.

Definition at line 67 of file io_base.cpp.

References GetLibraryDesc(), IO_BASE::IO_FILE_DESC::m_ExtensionsInDir, IO_BASE::IO_FILE_DESC::m_FileExtensions, and IO_BASE::IO_FILE_DESC::m_IsFile.

Referenced by SCH_IO_ALTIUM::CanReadLibrary(), SCH_IO_CADSTAR_ARCHIVE::CanReadLibrary(), SCH_IO_EAGLE::CanReadLibrary(), SCH_IO_KICAD_LEGACY::CanReadLibrary(), PCB_IO_ALTIUM_DESIGNER::CanReadLibrary(), PCB_IO_CADSTAR_ARCHIVE::CanReadLibrary(), and PCB_IO_EAGLE::CanReadLibrary().

◆ CreateLibrary()

void IO_BASE::CreateLibrary ( const wxString &  aLibraryPath,
const STRING_UTF8_MAP aProperties = nullptr 
)
virtual

Create a new empty library at aLibraryPath empty.

It is an error to attempt to create an existing library or to attempt to create on a "read only" location.

Parameters
aLibraryPathis a locator for the "library", usually a directory, file, or URL containing several elements.
aPropertiesis an associative array that can be used to tell the library create function anything special, because it can take any number of additional named tuning arguments that the IO is known to support. The caller continues to own this object (IO may not delete it), and IOs should expect it to be optionally NULL.
Exceptions
IO_ERRORif there is a problem finding the library, or creating it.

Reimplemented in SCH_IO_KICAD_LEGACY, SCH_IO_KICAD_SEXPR, and PCB_IO_KICAD_SEXPR.

Definition at line 44 of file io_base.cpp.

References NOT_IMPLEMENTED.

◆ DeleteLibrary()

bool IO_BASE::DeleteLibrary ( const wxString &  aLibraryPath,
const STRING_UTF8_MAP aProperties = nullptr 
)
virtual

Delete an existing library and returns true, or if library does not exist returns false, or throws an exception if library exists but is read only or cannot be deleted for some other reason.

Parameters
aLibraryPathis a locator for the "library", usually a directory or file which will contain several elements.
aPropertiesis an associative array that can be used to tell the library delete implementation function anything special, because it can take any number of additional named tuning arguments that the plugin is known to support. The caller continues to own this object (plugin may not delete it), and plugins should expect it to be optionally NULL.
Returns
true if library deleted, false if library did not exist.
Exceptions
IO_ERRORif there is a problem deleting an existing library.

Reimplemented in SCH_IO_KICAD_LEGACY, SCH_IO_KICAD_SEXPR, PCB_IO_GEDA, PCB_IO_KICAD_LEGACY, and PCB_IO_KICAD_SEXPR.

Definition at line 50 of file io_base.cpp.

References NOT_IMPLEMENTED.

◆ GetLibraryDesc()

◆ GetLibraryFileDesc()

virtual const IO_FILE_DESC IO_BASE::GetLibraryFileDesc ( ) const
inlinevirtual

Get the descriptor for the individual library elements that this IO plugin operates on.

For libraries where all the elements are in a single container (e.g. all elements in a single file), then this will return the descriptor from IO_BASE::GetLibraryDesc().

Returns
File descriptor for the library elements

Reimplemented in PCB_IO_EASYEDA, PCB_IO_EASYEDAPRO, PCB_IO_GEDA, and PCB_IO_KICAD_SEXPR.

Definition at line 102 of file io_base.h.

References GetLibraryDesc().

Referenced by PCB_IO::CanReadFootprint().

◆ GetLibraryOptions()

void IO_BASE::GetLibraryOptions ( STRING_UTF8_MAP aListToAppendTo) const
virtual

Append supported IO options to aListToAppenTo along with internationalized descriptions.

Options are typically appended so that a derived IO_BASE can call its base class function by the same name first, thus inheriting options declared there. (Some base class options could pertain to all functions in all derived IOs.) Note that since aListToAppendTo is a PROPERTIES object, all options will be unique and last guy wins.

Parameters
aListToAppendToholds a tuple of
option
This eventually is what shows up into the "options" field, possibly combined with others.
internationalized description
The internationalized description is displayed in DIALOG_PLUGIN_OPTIONS. It may be multi-line and be quite explanatory of the option.

In the future perhaps aListToAppendTo evolves to something capable of also holding a wxValidator for the cells in said dialog: http://forums.wxwidgets.org/viewtopic.php?t=23277&p=104180. This would require a 3 column list, and introducing wx GUI knowledge to SCH_IO, which has been avoided to date.

Reimplemented in SCH_IO_CADSTAR_ARCHIVE, SCH_IO, and PCB_IO.

Definition at line 61 of file io_base.cpp.

Referenced by SCH_IO::GetLibraryOptions(), and PCB_IO::GetLibraryOptions().

◆ GetName()

const wxString & IO_BASE::GetName ( ) const
inline

Return a brief hard coded name for this IO interface.

Definition at line 71 of file io_base.h.

References m_name.

Referenced by SCH_IO_ALTIUM::ParseLibFile().

◆ IsLibraryWritable()

bool IO_BASE::IsLibraryWritable ( const wxString &  aLibraryPath)
virtual

Return true if the library at aLibraryPath is writable.

The system libraries are typically read only because of where they are installed..

Parameters
aLibraryPathis a locator for the "library", usually a directory, file, or URL containing several footprints.
Exceptions
IO_ERRORif no library at aLibraryPath exists.

Reimplemented in SCH_IO_ALTIUM, SCH_IO_CADSTAR_ARCHIVE, SCH_IO_DATABASE, SCH_IO_EAGLE, SCH_IO_EASYEDA, SCH_IO_EASYEDAPRO, SCH_IO_HTTP_LIB, SCH_IO_KICAD_LEGACY, SCH_IO_KICAD_SEXPR, PCB_IO_ALTIUM_DESIGNER, PCB_IO_CADSTAR_ARCHIVE, PCB_IO_EAGLE, PCB_IO_EASYEDA, PCB_IO_EASYEDAPRO, PCB_IO_GEDA, PCB_IO_KICAD_LEGACY, and PCB_IO_KICAD_SEXPR.

Definition at line 56 of file io_base.cpp.

References NOT_IMPLEMENTED.

◆ SetProgressReporter()

virtual void IO_BASE::SetProgressReporter ( PROGRESS_REPORTER aReporter)
inlinevirtual

Set an optional progress reporter.

Reimplemented in SCH_IO_CADSTAR_ARCHIVE.

Definition at line 81 of file io_base.h.

References m_progressReporter.

Referenced by PCB_CONTROL::AppendBoard().

◆ SetReporter()

virtual void IO_BASE::SetReporter ( REPORTER aReporter)
inlinevirtual

Set an optional reporter for warnings/errors.

Reimplemented in SCH_IO_CADSTAR_ARCHIVE.

Definition at line 76 of file io_base.h.

References m_reporter.

Member Data Documentation

◆ m_name

wxString IO_BASE::m_name
protected

Name of the IO loader.

Definition at line 207 of file io_base.h.

Referenced by GetName().

◆ m_progressReporter

◆ m_reporter

REPORTER* IO_BASE::m_reporter
protected

Reporter to log errors/warnings to, may be nullptr.

Definition at line 210 of file io_base.h.

Referenced by SCH_IO_ALTIUM::AddLibTextBox(), SCH_IO_CADSTAR_ARCHIVE::ensureLoadedLibrary(), SCH_IO_EAGLE::loadInstance(), SCH_IO_CADSTAR_ARCHIVE::LoadSchematicFile(), SCH_IO_LTSPICE::LoadSchematicFile(), SCH_IO_ALTIUM::ParseAltiumSch(), SCH_IO_ALTIUM::ParseArc(), SCH_IO_ALTIUM::ParseBezier(), SCH_IO_ALTIUM::ParseCircle(), SCH_IO_ALTIUM::ParseComponent(), SCH_IO_ALTIUM::ParseDesignator(), SCH_IO_ALTIUM::ParseEllipse(), SCH_IO_ALTIUM::ParseEllipticalArc(), SCH_IO_ALTIUM::ParseFileName(), SCH_IO_ALTIUM::ParseHarnessConnector(), SCH_IO_ALTIUM::ParseHarnessEntry(), SCH_IO_ALTIUM::ParseHarnessPort(), SCH_IO_ALTIUM::ParseHarnessType(), SCH_IO_ALTIUM::ParseImage(), SCH_IO_ALTIUM::ParseImplementation(), SCH_IO_ALTIUM::ParseLabel(), SCH_IO_ALTIUM::ParseLibFile(), SCH_IO_ALTIUM::ParseLine(), SCH_IO_ALTIUM::ParsePin(), SCH_IO_ALTIUM::ParsePolygon(), SCH_IO_ALTIUM::ParsePolyline(), SCH_IO_ALTIUM::ParsePort(), SCH_IO_ALTIUM::ParsePowerPort(), SCH_IO_ALTIUM::ParseRecord(), SCH_IO_ALTIUM::ParseRectangle(), SCH_IO_ALTIUM::ParseRoundRectangle(), SCH_IO_ALTIUM::ParseSheetEntry(), SCH_IO_ALTIUM::ParseSheetName(), SCH_IO_ALTIUM::ParseSignalHarness(), SCH_IO_ALTIUM::ParseStorage(), SCH_IO_ALTIUM::SCH_IO_ALTIUM(), SCH_IO_CADSTAR_ARCHIVE::SCH_IO_CADSTAR_ARCHIVE(), SCH_IO_EAGLE::SCH_IO_EAGLE(), SCH_IO_EASYEDA::SCH_IO_EASYEDA(), SCH_IO_EASYEDAPRO::SCH_IO_EASYEDAPRO(), SCH_IO_LTSPICE::SCH_IO_LTSPICE(), SetReporter(), and SCH_IO_CADSTAR_ARCHIVE::SetReporter().


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