begin working on Distributed Library for EESCHEMA
This commit is contained in:
parent
5694818d2d
commit
2e45c1a180
10
new/Doxyfile
10
new/Doxyfile
|
@ -297,7 +297,7 @@ SYMBOL_CACHE_SIZE = 0
|
|||
# Private class members and static file members will be hidden unless
|
||||
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
|
||||
|
||||
EXTRACT_ALL = YES
|
||||
EXTRACT_ALL = NO
|
||||
|
||||
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
|
||||
# will be included in the documentation.
|
||||
|
@ -336,7 +336,7 @@ EXTRACT_ANON_NSPACES = NO
|
|||
# various overviews, but no documentation section is generated.
|
||||
# This option has no effect if EXTRACT_ALL is enabled.
|
||||
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
HIDE_UNDOC_MEMBERS = YES
|
||||
|
||||
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
|
||||
# undocumented classes that are normally visible in the class hierarchy.
|
||||
|
@ -357,7 +357,7 @@ HIDE_FRIEND_COMPOUNDS = NO
|
|||
# If set to NO (the default) these blocks will be appended to the
|
||||
# function's detailed documentation block.
|
||||
|
||||
HIDE_IN_BODY_DOCS = NO
|
||||
HIDE_IN_BODY_DOCS = YES
|
||||
|
||||
# The INTERNAL_DOCS tag determines if documentation
|
||||
# that is typed after a \internal command is included. If the tag is set
|
||||
|
@ -402,7 +402,7 @@ INLINE_INFO = YES
|
|||
# alphabetically by member name. If set to NO the members will appear in
|
||||
# declaration order.
|
||||
|
||||
SORT_MEMBER_DOCS = YES
|
||||
SORT_MEMBER_DOCS = NO
|
||||
|
||||
# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
|
||||
# brief documentation of file, namespace and class members alphabetically
|
||||
|
@ -1390,7 +1390,7 @@ HIDE_UNDOC_RELATIONS = YES
|
|||
# toolkit from AT&T and Lucent Bell Labs. The other options in this section
|
||||
# have no effect if this option is set to NO (the default)
|
||||
|
||||
HAVE_DOT = NO
|
||||
HAVE_DOT = YES
|
||||
|
||||
# By default doxygen will write a font called FreeSans.ttf to the output
|
||||
# directory and reference it in all dot files that doxygen generates. This
|
||||
|
|
368
new/design.h
368
new/design.h
|
@ -1,4 +1,5 @@
|
|||
|
||||
namespace SCH {
|
||||
|
||||
/** @mainpage
|
||||
|
||||
|
@ -45,7 +46,7 @@ can be library specializations or niches.
|
|||
|
||||
<p> Often a found part is close to what is needed but not exactly what is
|
||||
needed. This Distributed Library System design incorporates the concept of part
|
||||
inheritance using a part description language called <b>(Sweet)</b>. Sweet is
|
||||
inheritance using a part description language called <b>Sweet</b>. Sweet is
|
||||
based on s-expression syntax. Inheritance is the ability to incrementally change
|
||||
an existing part without completely re-designing it. It is sometimes easier to
|
||||
modify an existing part than it is to create the new part entirely from scratch.
|
||||
|
@ -75,16 +76,21 @@ nest within grammars. So once you are inside a grammatical element, it will have
|
|||
its own set of rules as to which nested elements it may hold, and once you enter
|
||||
one of those nested elements, then that nested element's grammar pertains,
|
||||
etc.<p> In the case of the grammar for a part, the grammar itself is being given
|
||||
the name "Sweet". The name does not extend to the grammar for the schematic,
|
||||
the name Sweet. The name does not extend to the grammar for the schematic,
|
||||
only the part grammar.</dd>
|
||||
|
||||
<dt>Schematic</dt><dd>This consists of one or more sheets and will be different
|
||||
in three ways from existing schematics. <ul> <li>All sheets will be in one file,
|
||||
thus the entire schematic is in one file. <li>The schematic file will have its
|
||||
own s-expression grammar. <li> There will be a (parts_list) within the
|
||||
schematic, and within the parts_list will be all the parts for the schematic,
|
||||
yes <b>all</b> of them, every last one of them.</ul> Within the sheets of the
|
||||
schematic will be components.</dd>
|
||||
in three ways from existing schematics. <ul>
|
||||
|
||||
<li>All sheets will be in one file, thus the entire schematic is in one file.
|
||||
|
||||
<li>The schematic file will have its own s-expression grammar.
|
||||
|
||||
<li> There will be a <b>parts list</b> within the schematic, and within the
|
||||
parts list will be <b>all</b> the parts for the schematic. yes <b>all</b> of
|
||||
them. See class PARTS_LIST.</ul>
|
||||
|
||||
Within the sheets of the schematic will be components.</dd>
|
||||
|
||||
<dt>Component</dt><dd>A component is an instantiated part. The keyword for
|
||||
component is (comp). A component does not have any of its own properties other
|
||||
|
@ -98,7 +104,7 @@ BOM can be made simply from the parts_list.</dd>
|
|||
<dt>Component, again for good measure.</dt><dd>A component is an instantiation
|
||||
of a part. A component exists within a schematic which has a parts list
|
||||
containing the part from which the component is instantiated. A component has a
|
||||
unique reference designator, component ref, its own location, orientation,
|
||||
unique reference designator, part ref, its own location, orientation,
|
||||
stuff/DNS, and text attributes but <b>not</b> its own text fields/strings (other
|
||||
than reference designator). The part which is instantiated must exist in the
|
||||
parts list of the same schematic.</dd>
|
||||
|
@ -137,6 +143,42 @@ a library source and a library sink is that a source is a readable entity.</dd>
|
|||
written to for future reading. The difference between a library source and a
|
||||
library sink is that a library sink is a writable entity.</dd>
|
||||
|
||||
<dt>Symbol</dt><dd>The term "symbol" is not used in a specific way in this
|
||||
document. There is no symbol in any of the grammars, so use of it on the
|
||||
developers list will not be understood without explanation. Of course it is
|
||||
possible to have multiple parts all extend a common base part, and you can think
|
||||
of the base part as having most if not all the graphical lines for any
|
||||
derivatives. But we do not need to use the term symbol to describe that
|
||||
relationship, the term "part" is sufficient.</dd>
|
||||
|
||||
<dt>LPID</dt><dd>This stand for "Logical Part ID", and is a reference to any
|
||||
part within any known library. The term "logical" is used because the contained
|
||||
library name is logical, not a full library name. The LPID consists of 3 main
|
||||
portions: logical library name, part name, and revision number.</dd>
|
||||
|
||||
<dt>Library Table</dt><dd>This is a lookup table that maps a logical library
|
||||
name (i.e. a short name) into a fully specified library name and library type.
|
||||
An applicable library table consists of rows from (at least) two sources:<ol>
|
||||
<li>A schematic resident library table.
|
||||
<li>A personal library table.
|
||||
</ol>
|
||||
|
||||
These rows from the two sources are conceptually concatonated (although they may
|
||||
not be physically concatonated in the implementation, TBD). The schematic
|
||||
resident rows take presedence over the personal library table if there are
|
||||
logical library names duplicately defined. (Or we will simply ask that any remote
|
||||
(i.e. public) libraries use uppercase first letters in logical names, TBD.)
|
||||
|
||||
<p> Eventually there will be an external publicly available internet based
|
||||
logical library table also, but this will need to be glued down at a hard coded
|
||||
URL that we have control over. The internet based library table allows us to
|
||||
advertise remote libraries without having to issue an update to Kicad.</dd>
|
||||
|
||||
<dt>Query Language</dt><dd>This is a means of searching for something that is
|
||||
contained within a container. Since some library sources are remote, it is
|
||||
important to be able to ask the library source for a part that matches some
|
||||
criteria, for performance reasons.</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
@ -154,14 +196,14 @@ Here are some of the changes required: <ul>
|
|||
file. The multiple sheet support will still exist, but all the sheets for a
|
||||
single schematic are all in a single file.
|
||||
|
||||
<li> A "library" is a collection of "parts". The term "symbol" is not used. The
|
||||
unit of retrieval from a library is a part as a textual string in the Sweet
|
||||
language. Sweet is a particular "grammar" expressed in s-expression form, and
|
||||
can be used to fully describe parts. Because EESCHEMA does not actually see a
|
||||
"library file", (remember, EESCHEMA can only ask for a part), the actual file
|
||||
format for a library is no longer pertinent nor visible to the core of EESCHEMA.
|
||||
The unit of retrieval from the API is the part, so EESCHEMA gets an entire part
|
||||
s-expression and must then parse it as a RAM resident Sweet string.
|
||||
<li> A "library" is a collection of "parts". The unit of retrieval from a
|
||||
library is a part as a textual string in the Sweet language. Sweet is a
|
||||
particular "grammar" expressed in s-expression form, and can be used to fully
|
||||
describe parts. Because EESCHEMA does not actually see a "library file",
|
||||
(remember, EESCHEMA can only ask for a part), the actual file format for a
|
||||
library is no longer pertinent nor visible to the core of EESCHEMA. The unit of
|
||||
retrieval from the API is the part, so EESCHEMA gets an entire part s-expression
|
||||
and must then parse it as a RAM resident Sweet string.
|
||||
|
||||
<li>EESCHEMA knows of no library files, instead there is a library API which
|
||||
abstracts the actual part storage strategy used within any library
|
||||
|
@ -233,12 +275,15 @@ will also omit the logical library name from the LPID, and it must omit it. Why?
|
|||
Well because it makes renaming the library easier, for one. Two, the logical
|
||||
library name is only a lookup key into a "library table". The library table maps
|
||||
the logical library name into an actual library source [and sink, iff writable].
|
||||
See LIB_SOURCE and LIB_SINK.
|
||||
|
||||
<p> In the case of the component referencing the part that it "is", there is no
|
||||
revision number allowed in the LPID. This is because that reference is to the
|
||||
part in the parts list, and the parts list only holds a single revision of any
|
||||
part (where "revision" is what you understand from version control systems).
|
||||
|
||||
<li> There needs to be a new query language designed and each library source
|
||||
needs to support it. See LIB_SOURCE::FindParts() for a brief description of one.
|
||||
|
||||
</ul>
|
||||
|
||||
|
@ -276,7 +321,7 @@ resolvable.
|
|||
http://msdn.microsoft.com/en-us/library/ms364057%28VS.80%29.aspx
|
||||
|
||||
Even with NRVO provided by most C++ compilers, I don't see it being as lean as
|
||||
having class LIB keep expanded members STRING fetch and STRINGS vfetched for the
|
||||
having class LIB keep expanded members STRING fetch and STRINGS vfetch for the
|
||||
aResults values. But at the topmost API, client convenience is worth a minor
|
||||
sacrifice in speed, so the topmost API does return these complex string objects
|
||||
for convenience. So there is a different strategy underneath the hood than what
|
||||
|
@ -294,14 +339,14 @@ library in the new design is LIB.
|
|||
<p>
|
||||
Show architecture here.
|
||||
|
||||
<a href="../drawing.svg" > Click here to see an architectural drawing.</a>
|
||||
<a href="../drawing.png" > Click here to see an architectural drawing.</a>
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \defgroup STRING Types
|
||||
* \defgroup string_types STRING Types
|
||||
* Provide some string types for use within the API.
|
||||
* @{
|
||||
*/
|
||||
|
@ -324,10 +369,29 @@ typedef std::dequeue<STRING> STRING_TOKS;
|
|||
|
||||
typedef std::dequeue<STRING> STRINGS;
|
||||
|
||||
//typedef std::vector<wxString> WSTRINGS;
|
||||
|
||||
|
||||
const STRING StrEmpty = "";
|
||||
|
||||
/** @} STRING Types */
|
||||
/** @} string_types STRING Types */
|
||||
|
||||
/**
|
||||
* \defgroup exception_types Exception Types
|
||||
* Provide some exception types for use within the API.
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* Class PARSE_ERROR
|
||||
* contains a filename or source description, a line number, a character offset,
|
||||
* and an error message.
|
||||
*/
|
||||
struct PARSE_ERROR : public IO_ERROR
|
||||
{
|
||||
};
|
||||
|
||||
/** @} exception_types Exception Types */
|
||||
|
||||
|
||||
/**
|
||||
|
@ -348,11 +412,13 @@ class PART
|
|||
friend class LIB;
|
||||
|
||||
|
||||
/// a private constructor, only a LIB can instantiate one.
|
||||
/// a private constructor, only a LIB can instantiate a PART.
|
||||
PART() {}
|
||||
|
||||
|
||||
protected: // not likely to have descendants, but protected none-the-less.
|
||||
protected: // not likely to have C++ descendants, but protected none-the-less.
|
||||
|
||||
bool parsed; ///< true if the body as been parsed already.
|
||||
|
||||
LIB* owner; ///< which LIB am I a part of (pun if you want)
|
||||
STRING extends; ///< LPID of base part
|
||||
|
@ -363,7 +429,21 @@ protected: // not likely to have descendants, but protected none-the-less.
|
|||
/// actually becomes cached in RAM.
|
||||
STRING body;
|
||||
|
||||
// lots of other stuff.
|
||||
// 3 separate lists for speed:
|
||||
|
||||
/// A property list.
|
||||
PROPERTIES properties;
|
||||
|
||||
/// A drawing list for graphics
|
||||
DRAWINGS drawings;
|
||||
|
||||
/// A pin list
|
||||
PINS pins;
|
||||
|
||||
/// Alternate body forms.
|
||||
ALTERNATES alternates;
|
||||
|
||||
// lots of other stuff, like the mandatory properties.
|
||||
|
||||
|
||||
public:
|
||||
|
@ -371,16 +451,25 @@ public:
|
|||
/**
|
||||
* Function Inherit
|
||||
* is a specialized assignment function that copies a specific subset, enough
|
||||
* to fulfill the requirements of the sweet s-expression language.
|
||||
* to fulfill the requirements of the Sweet s-expression language.
|
||||
*/
|
||||
void Inherit( const PART& aBasePart );
|
||||
|
||||
|
||||
/**
|
||||
* Function Owner
|
||||
* returns the LIB* owner of this part.
|
||||
*/
|
||||
LIB Owner() { return owner; }
|
||||
|
||||
/**
|
||||
* Function Parse
|
||||
* translates the \a body string into a binary form that is represented
|
||||
* by the normal fields of this class. Parse is expected to call Inherit()
|
||||
* if this part extends any other.
|
||||
*/
|
||||
void Parse( DSN_LEXER* aLexer ) throw( PARSE_EXCEPTION );
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -388,7 +477,7 @@ public:
|
|||
* Class LPID (aka GUID)
|
||||
* is a Logical Part ID and consists of various portions much like a URI. It
|
||||
* relies heavily on a logical library name to hide where actual physical library
|
||||
* sources reside. Its static functions serve as managers of the library table to
|
||||
* sources reside. Its static functions serve as managers of the "library table" to
|
||||
* map logical library names to actual library sources.
|
||||
* <p>
|
||||
* Example LPID string:
|
||||
|
@ -403,12 +492,12 @@ public:
|
|||
* </ul>
|
||||
* <p>
|
||||
* This class owns the <b>library table</b>, which is like fstab in concept and maps logical
|
||||
* library name to library URI, type, and password. It has the following columns:
|
||||
* library name to library URI, type, and options. It has the following columns:
|
||||
* <ul>
|
||||
* <li> Logical Library Name
|
||||
* <li> Library Type
|
||||
* <li> Library URI
|
||||
* <li> Password
|
||||
* <li> Library URI. The full URI to the library source, form dependent on Type.
|
||||
* <li> Options, used for access, such as password
|
||||
* </ul>
|
||||
* <p>
|
||||
* For now, the Library Type can be one of:
|
||||
|
@ -429,19 +518,26 @@ public:
|
|||
* <li> "http://kicad.org/partlib"
|
||||
* </ul>
|
||||
* <p>
|
||||
* The library table is built up from several sources, and is a concatenation
|
||||
* of those sources.
|
||||
* The applicable library table is built up from several additive rows (table fragments),
|
||||
* and the final table is a merging of the table fragments. Two anticipated sources of
|
||||
* the rows are a personal table, and a schematic resident table. The schematic
|
||||
* resident table rows are considered a higher priority in the final dynamically
|
||||
* assembled library table. A row in the schematic contribution to the library table
|
||||
* will take precedence over the personal table if there is a collision on logical
|
||||
* library name, otherwise the rows simply combine without issue to make up the
|
||||
* applicable library table.
|
||||
*/
|
||||
class LPID // aka GUID
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Constructor LPID
|
||||
* takes aLPID string and parses it. A typical LPID string uses a logical
|
||||
* library name followed by a part name.
|
||||
* e.g.: "kicad:passives/R/rev2", or
|
||||
* e.g.: "me:R33"
|
||||
* e.g.: "mylib:R33"
|
||||
*/
|
||||
LPID( const STRING& aLPID = StrEmpty ) throw( PARSE_ERROR );
|
||||
LPID( const STRING& aLPID ) throw( PARSE_ERROR );
|
||||
|
||||
/**
|
||||
* Function GetLogLib
|
||||
|
@ -491,26 +587,40 @@ class LPID // aka GUID
|
|||
* Function GetLogicalLibraries
|
||||
* returns the logical library names, all of them that are in the
|
||||
* library table.
|
||||
* @param aSchematic provides access to the full library table inclusive
|
||||
* of the schematic contribution, or may be NULL to exclude the schematic rows.
|
||||
*/
|
||||
static STRINGS GetLogicalLibraries();
|
||||
static STRINGS GetLogicalLibraries( SCHEMATIC* aSchematic=NULL );
|
||||
|
||||
/**
|
||||
* Function GetLibraryURI
|
||||
* returns the full library path from a logical library name.
|
||||
* @param aLogicalLibraryName is the short name for the library of interest.
|
||||
* @param aSchematic provides access to the full library table inclusive
|
||||
* of the schematic contribution, or may be NULL to exclude the schematic rows.
|
||||
*/
|
||||
static STRING GetLibraryURI( const STRING& aLogicalLibraryName ) const;
|
||||
static STRING GetLibraryURI( const STRING& aLogicalLibraryName,
|
||||
SCHEMATIC* aSchematic=NULL ) const;
|
||||
|
||||
/**
|
||||
* Function GetLibraryType
|
||||
* returns the type of a logical library.
|
||||
* @param aLogicalLibraryName is the short name for the library of interest.
|
||||
* @param aSchematic provides access to the full library table inclusive
|
||||
* of the schematic contribution, or may be NULL to exclude the schematic rows.
|
||||
*/
|
||||
static STRING GetLibraryType( const STRING& aLogicalLibraryName ) const;
|
||||
static STRING GetLibraryType( const STRING& aLogicalLibraryName,
|
||||
SCHEMATIC* aSchematic=NULL ) const;
|
||||
|
||||
/**
|
||||
* Function GetPassword
|
||||
* returns the password for this type of a logical library.
|
||||
* Function GetOptions
|
||||
* returns the options string for \a aLogicalLibraryName.
|
||||
* @param aLogicalLibraryName is the short name for the library of interest.
|
||||
* @param aSchematic provides access to the full library table inclusive
|
||||
* of the schematic contribution, or may be NULL to exclude the schematic rows.
|
||||
*/
|
||||
static STRING GetPassword( const STRING& aLogicalLibraryName ) const;
|
||||
static STRING GetPassword( const STRING& aLogicalLibraryName,
|
||||
SCHEMATIC* aSchematic=NULL ) const;
|
||||
};
|
||||
|
||||
|
||||
|
@ -584,9 +694,10 @@ protected: ///< derived classes must implement
|
|||
* the actual library data is remotely located, otherwise it will be too slow
|
||||
* to honor this portion of the API contract.
|
||||
*
|
||||
* @param aQuery is a string holding a domain specific language expression. One candidate
|
||||
* here is an s-expression that uses (and ..) and (or ..) operators. For example
|
||||
* "(and (footprint 0805)(value 33ohm)(category passives))"
|
||||
* @param aQuery is a string holding a domain specific query language expression. One candidate
|
||||
* here is an s-expression that uses (and ..) and (or ..) operators and uses them as RPN. For example
|
||||
* "(and (footprint 0805)(value 33ohm)(category passives))".
|
||||
* The UI can shield the user from this if it wants.
|
||||
*
|
||||
* @param aResults is a place to put the fetched part names, one part per STRING.
|
||||
*/
|
||||
|
@ -599,28 +710,6 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
* Class DIR_LIB_SOURCE
|
||||
* implements a LIB_SOURCE in a file system directory.
|
||||
*/
|
||||
class DIR_LIB_SOURCE : public LIB_SOURCE
|
||||
{
|
||||
friend class LIBS; ///< LIBS::GetLib() can construct one.
|
||||
|
||||
protected:
|
||||
|
||||
/**
|
||||
* Constructor DIR_LIB_SOURCE( const STRING& aDirectoryPath )
|
||||
* sets up a LIB_SOURCE using aDirectoryPath in a file system.
|
||||
* @see LIBS::GetLibrary().
|
||||
*
|
||||
* @param aDirectoryPath is a full pathname of a directory which contains
|
||||
* the library source of part files. Examples might be "C:\kicad_data\mylib" or
|
||||
* "/home/designer/mylibdir".
|
||||
*/
|
||||
DIR_LIB_SOURCE( const STRING& aDirectoryPath ) throws( IO_ERROR );
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Class SVN_LIB_SOURCE
|
||||
|
@ -646,17 +735,18 @@ protected:
|
|||
|
||||
|
||||
/**
|
||||
* Class PARTS_LIST_LIB_SOURCE
|
||||
* implements a LIB_SOURCE in a schematic file.
|
||||
* Class SCHEMATIC_LIB_SOURCE
|
||||
* implements a LIB_SOURCE in by reading a parts list from schematic file
|
||||
* unrelated to the schematic currently being edited.
|
||||
*/
|
||||
class PARTS_LIST_LIB_SOURCE : public LIB_SOURCE
|
||||
class SCHEMATIC_LIB_SOURCE : public LIB_SOURCE
|
||||
{
|
||||
friend class LIBS; ///< constructor the LIB uses these functions.
|
||||
|
||||
protected:
|
||||
|
||||
/**
|
||||
* Constructor PARTS_LIST_LIB_SOURCE( const STRING& aSchematicFile )
|
||||
* Constructor SCHEMATIC_LIB_SOURCE( const STRING& aSchematicFile )
|
||||
* sets up a LIB_SOURCE using aSchematicFile which is a full path and filename
|
||||
* for a schematic not related to the schematic being editing in
|
||||
* this EESCHEMA session.
|
||||
|
@ -665,7 +755,7 @@ protected:
|
|||
* @param aSchematicFile is a full path and filename. Example:
|
||||
* "/home/user/kicadproject/design.sch"
|
||||
*/
|
||||
PARTS_LIST_LIB_SOURCE( const STRING& aSchematicFile ) throws( IO_ERROR );
|
||||
SCHEMATIC_LIB_SOURCE( const STRING& aSchematicFile ) throws( IO_ERROR );
|
||||
};
|
||||
|
||||
|
||||
|
@ -688,8 +778,10 @@ protected: ///< derived classes must implement
|
|||
* portion present. If it is not present, and a overwrite of an existhing
|
||||
* part is done, then LIB::ReloadPart() must be called on this same part
|
||||
* and all parts that inherit it must be reparsed.
|
||||
* @return STRING - if the LIB_SINK support revision numbering, then return a
|
||||
* evision name that was next in the sequence, e.g. "rev22", else StrEmpty.
|
||||
*/
|
||||
virtual void WritePart( const STRING& aPartName,
|
||||
virtual STRING WritePart( const STRING& aPartName,
|
||||
const STRING& aSExpression ) throw( IO_ERROR ) = 0;
|
||||
|
||||
|
||||
|
@ -795,7 +887,7 @@ public:
|
|||
* returns true if this library has write/save capability. Most LIBs
|
||||
* are read only.
|
||||
*/
|
||||
bool HasSave() { return sink != NULL; }
|
||||
bool HasSink() { return sink != NULL; }
|
||||
|
||||
/**
|
||||
* Function LogicalName
|
||||
|
@ -841,17 +933,10 @@ public:
|
|||
|
||||
/**
|
||||
* Function WritePart
|
||||
* saves the part to non-volatile storage. @a aPartName may have the revision
|
||||
* portion present. If it is not present, and a overwrite of an existing
|
||||
* part is done, then all parts that inherit it must be re-parsed.
|
||||
* This is why most library sources are read only. An exception is the PARTS_LIST,
|
||||
* not to be confused with a LIB based on a parts list in another schematic.
|
||||
* The PARTS_LIST is in the the schematic being edited and is by definition the
|
||||
* last to inherit, so editing in the current schematic's PARTS_LIST should be harmless.
|
||||
* There can be some self referential issues that mean all the parts in the PARTS_LIST
|
||||
* have to re-parsed.
|
||||
* saves the part to non-volatile storage and returns the next new revision
|
||||
* name in the sequence established by the LIB_SINK.
|
||||
*/
|
||||
virtual void WritePart( PART* aPart ) throw( IO_ERROR );
|
||||
virtual STRING WritePart( PART* aPart ) throw( IO_ERROR );
|
||||
|
||||
virtual void SetPartBody( PART* aPart, const STRING& aSExpression ) throw( IO_ERROR );
|
||||
|
||||
|
@ -884,8 +969,8 @@ public:
|
|||
|
||||
private:
|
||||
|
||||
STRING fetch; ///< scratch, used to fetch things, grows to worst case size.
|
||||
STRINGS vfetch; ///< scratch, used to fetch things.
|
||||
STRING fetch; // scratch, used to fetch things, grows to worst case size.
|
||||
STRINGS vfetch; // scratch, used to fetch things.
|
||||
|
||||
LIB_SOURCE* source;
|
||||
LIB_SINK* sink;
|
||||
|
@ -896,11 +981,120 @@ private:
|
|||
|
||||
STRINGS categories;
|
||||
|
||||
typedef boost::ptr_vector<PART> PARTS;
|
||||
|
||||
PARTS parts;
|
||||
|
||||
std::vector<PART*> orderByName;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Class PARTS_LIST
|
||||
* is a LIB which resides in a SCHEMATIC, and it is a table model for a
|
||||
* spread sheet both. When columns are added or removed to/from the spreadsheet,
|
||||
* this is adding or removing fields/properties to/from ALL the contained PARTS.
|
||||
*/
|
||||
class PARTS_LIST : public LIB
|
||||
{
|
||||
public:
|
||||
|
||||
/**
|
||||
* Function GetModel
|
||||
* returns a spreadsheet table model that allows both reading and writing to
|
||||
* rows in a spreadsheet. The UI holds the actual screen widgets, but
|
||||
* this is the table model, i.e. the PARTS_LIST is.
|
||||
*/
|
||||
SPREADSHEET_TABLE_MODEL* GetModel();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Class LIB_TABLE_ROW
|
||||
* holds a record identifying a LIB in the LIB_TABLE.
|
||||
*/
|
||||
class LIB_TABLE_ROW
|
||||
{
|
||||
|
||||
protected:
|
||||
|
||||
/**
|
||||
* Function SetLogicalName
|
||||
* changes the logical name of this library, useful for an editor.
|
||||
*/
|
||||
void SetLogicalName( const STRING& aLogicalName );
|
||||
|
||||
/**
|
||||
* Function SetType
|
||||
* changes the type represented by this record.
|
||||
*/
|
||||
void SetType( const STRING& aType );
|
||||
|
||||
/**
|
||||
* Function SetFullURI
|
||||
* changes the full URI for the library, useful from a library table editor.
|
||||
*/
|
||||
void SetFullURI( const STRING& aFullURI );
|
||||
|
||||
/**
|
||||
* Function SetOptions
|
||||
* changes the options string for this record, and is useful from
|
||||
* the library table editor.
|
||||
*/
|
||||
void SetOptions( const STRING& aOptions );
|
||||
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Function GetLogicalName
|
||||
* returns the logical name of this library table entry.
|
||||
*/
|
||||
const STRING& GetLogicalName();
|
||||
|
||||
|
||||
/**
|
||||
* Function GetType
|
||||
* returns the type of LIB represented by this record.
|
||||
*/
|
||||
const STRING& GetType();
|
||||
|
||||
/**
|
||||
* Function GetFullURI
|
||||
* returns the full location specifying URI for the LIB.
|
||||
*/
|
||||
const STRING& GetFullURI();
|
||||
|
||||
/**
|
||||
* Function GetOptions
|
||||
* returns the options string, which may hold a password or anything else needed to
|
||||
* instantiate the underlying LIB_SOURCE.
|
||||
*/
|
||||
const STRING& GetOptions();
|
||||
};
|
||||
|
||||
/**
|
||||
* Class LIB_TABLE
|
||||
* holds LIB_TABLE_ROW records, and can be searched in a very high speed way based on
|
||||
* logical library name.
|
||||
*/
|
||||
class LIB_TABLE
|
||||
{
|
||||
public:
|
||||
|
||||
/**
|
||||
* Constructor LIB_TABLE
|
||||
* builds a library table from an s-expression form of the library table.
|
||||
* @param aLibraryTable is an s-expression form of all the rows in a library
|
||||
* table fragment. These rows take presedence over rows in @a aFallBackTable.
|
||||
* @param aFallBackTable is another LIB_TABLE which is searched only when
|
||||
* a record is not found in this table.
|
||||
*/
|
||||
LIB_TABLE( const STRING& aLibraryTable, LIB_TABLE* aFallBackTable = NULL )
|
||||
{
|
||||
// s-expression is chosen so we can read a table fragment from either
|
||||
// a schematic or a disk file, for schematic resident or
|
||||
// personal table, respectively.
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace SCH
|
||||
|
||||
|
||||
// EOF
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 62 KiB |
|
@ -0,0 +1,964 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="1012.09"
|
||||
height="754.09998"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="drawing.svg"
|
||||
inkscape:export-filename="/svn/kicad/new_design/new/drawing.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90">
|
||||
<defs
|
||||
id="defs4">
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Lend"
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="Arrow2Lend"
|
||||
style="overflow:visible;">
|
||||
<path
|
||||
id="path3674"
|
||||
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
transform="scale(1.1) rotate(180) translate(1,0)" />
|
||||
</marker>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 526.18109 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||
id="perspective10" />
|
||||
<inkscape:perspective
|
||||
id="perspective2852"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective2885"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective2932"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective2965"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective4115"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Lend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow2Lend-9"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path3674-3"
|
||||
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
|
||||
</marker>
|
||||
<inkscape:perspective
|
||||
id="perspective4352"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective4990"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4"
|
||||
inkscape:cx="575.26689"
|
||||
inkscape:cy="1269.5904"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="svg2"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1119"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
units="in"
|
||||
inkscape:snap-global="false"
|
||||
objecttolerance="10000"
|
||||
inkscape:snap-midpoints="true"
|
||||
inkscape:snap-bbox="false">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid2955"
|
||||
empspacing="10"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true"
|
||||
spacingx="10px"
|
||||
spacingy="10px"
|
||||
dotted="true" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<rect
|
||||
style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:1.10099995;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect3942"
|
||||
width="168.57143"
|
||||
height="41.42857"
|
||||
x="556.42859"
|
||||
y="688.38568" />
|
||||
<rect
|
||||
style="fill:#00bad5;fill-opacity:0.9605735;stroke:#000000;stroke-width:0.95887607;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect4976"
|
||||
width="234.49751"
|
||||
height="98.013084"
|
||||
x="755.58539"
|
||||
y="508.26596" />
|
||||
<rect
|
||||
style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:1.29770339;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect5805"
|
||||
width="188.37473"
|
||||
height="93.374725"
|
||||
x="793.24127"
|
||||
y="650.91266" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-298.25658)" />
|
||||
<rect
|
||||
style="fill:#cccccc;fill-rule:evenodd;stroke:#000000;stroke-width:1.6983366px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="rect2816"
|
||||
width="872.59253"
|
||||
height="273.89703"
|
||||
x="95.277359"
|
||||
y="22.688547"
|
||||
sodipodi:insensitive="true" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:44.65415192px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
|
||||
x="329.44296"
|
||||
y="69.284828"
|
||||
id="text2818"
|
||||
transform="scale(1.086331,0.92052975)"
|
||||
sodipodi:insensitive="true"><tspan
|
||||
sodipodi:role="line"
|
||||
x="329.44296"
|
||||
y="69.284828"
|
||||
id="tspan2828">schematic</tspan></text>
|
||||
<rect
|
||||
style="fill:#00bad5;fill-rule:evenodd;stroke:#000000;stroke-width:1.41801190000000021px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:0.96057349"
|
||||
id="rect2826"
|
||||
width="452.43915"
|
||||
height="129.58199"
|
||||
x="90.923286"
|
||||
y="508.6037" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="175.85715"
|
||||
y="657.25031"
|
||||
id="text2828"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2830"
|
||||
x="175.85715"
|
||||
y="657.25031">HTTP_LIB_SOURCE</tspan></text>
|
||||
<g
|
||||
id="g3856">
|
||||
<g
|
||||
transform="translate(18,0)"
|
||||
id="g3851">
|
||||
<rect
|
||||
style="fill:#ff8080;stroke:#000000;stroke-width:0.76680511;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect2833"
|
||||
width="67.913422"
|
||||
height="40.639297"
|
||||
x="130.19307"
|
||||
y="73.140556" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="138.37057"
|
||||
y="97.500824"
|
||||
id="text2835"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="138.37057"
|
||||
y="97.500824"
|
||||
id="tspan2839">comp</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="big blocks" />
|
||||
<g
|
||||
id="g3790"
|
||||
transform="translate(60,-0.71428569)"
|
||||
sodipodi:insensitive="true">
|
||||
<rect
|
||||
y="204.09998"
|
||||
x="77.85714"
|
||||
height="75"
|
||||
width="801.42859"
|
||||
id="rect2988"
|
||||
style="fill:#f4d7d7;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text3786"
|
||||
y="221.24283"
|
||||
x="440"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="221.24283"
|
||||
x="440"
|
||||
id="tspan3788"
|
||||
sodipodi:role="line">parts_list</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g3822">
|
||||
<g
|
||||
transform="translate(-12.857147,6.4285736)"
|
||||
id="g3801">
|
||||
<rect
|
||||
style="fill:#999999;stroke:#000000;stroke-width:0.78319448;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect3795"
|
||||
width="56.64537"
|
||||
height="39.502518"
|
||||
x="164.8916"
|
||||
y="222.563" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="172.85715"
|
||||
y="247.6714"
|
||||
id="text3797"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3799"
|
||||
x="172.85715"
|
||||
y="247.6714">part</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3828"
|
||||
transform="translate(133.32018,-0.3941193)">
|
||||
<g
|
||||
id="g3830"
|
||||
transform="translate(-12.857147,6.4285736)">
|
||||
<rect
|
||||
y="222.563"
|
||||
x="164.8916"
|
||||
height="39.502518"
|
||||
width="56.64537"
|
||||
id="rect3832"
|
||||
style="fill:#999999;stroke:#000000;stroke-width:0.78319448;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text3834"
|
||||
y="247.6714"
|
||||
x="172.85715"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="247.6714"
|
||||
x="172.85715"
|
||||
id="tspan3836"
|
||||
sodipodi:role="line">part</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(259.32018,-0.3941193)"
|
||||
id="g3838">
|
||||
<g
|
||||
transform="translate(-12.857147,6.4285736)"
|
||||
id="g3840">
|
||||
<rect
|
||||
style="fill:#999999;stroke:#000000;stroke-width:0.78319448;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect3842"
|
||||
width="56.64537"
|
||||
height="39.502518"
|
||||
x="164.8916"
|
||||
y="222.563" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="172.85715"
|
||||
y="247.6714"
|
||||
id="text3844"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3846"
|
||||
x="172.85715"
|
||||
y="247.6714">part</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3862"
|
||||
transform="translate(130,0)">
|
||||
<g
|
||||
id="g3864"
|
||||
transform="translate(18,0)">
|
||||
<rect
|
||||
y="73.140556"
|
||||
x="130.19307"
|
||||
height="40.639297"
|
||||
width="67.913422"
|
||||
id="rect3866"
|
||||
style="fill:#ff8080;stroke:#000000;stroke-width:0.76680511;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text3868"
|
||||
y="97.500824"
|
||||
x="138.37057"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan3870"
|
||||
y="97.500824"
|
||||
x="138.37057"
|
||||
sodipodi:role="line">comp</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(256,0)"
|
||||
id="g3872">
|
||||
<g
|
||||
transform="translate(18,0)"
|
||||
id="g3874">
|
||||
<rect
|
||||
style="fill:#ff8080;stroke:#000000;stroke-width:0.76680511;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect3876"
|
||||
width="67.913422"
|
||||
height="40.639297"
|
||||
x="130.19307"
|
||||
y="73.140556" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="138.37057"
|
||||
y="97.500824"
|
||||
id="text3878"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="138.37057"
|
||||
y="97.500824"
|
||||
id="tspan3880">comp</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3882"
|
||||
transform="translate(471.32018,-0.3941193)">
|
||||
<g
|
||||
id="g3884"
|
||||
transform="translate(-12.857147,6.4285736)">
|
||||
<rect
|
||||
y="222.563"
|
||||
x="164.8916"
|
||||
height="39.502518"
|
||||
width="56.64537"
|
||||
id="rect3886"
|
||||
style="fill:#999999;stroke:#000000;stroke-width:0.78319448;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text3888"
|
||||
y="247.6714"
|
||||
x="172.85715"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="247.6714"
|
||||
x="172.85715"
|
||||
id="tspan3890"
|
||||
sodipodi:role="line">part</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<rect
|
||||
style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:1.11650062;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect3894"
|
||||
width="473.64505"
|
||||
height="82.716003"
|
||||
x="493.0127"
|
||||
y="368.03632" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="684.51794"
|
||||
y="389.21155"
|
||||
id="text3896"
|
||||
sodipodi:linespacing="100%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3898"
|
||||
x="684.51794"
|
||||
y="389.21155">LIBS manager</tspan></text>
|
||||
<g
|
||||
id="g4102">
|
||||
<path
|
||||
id="path2876"
|
||||
d="M 179.80715,116.16834 180,226.09998"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.69999999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4098"
|
||||
y="157.6049"
|
||||
x="181.70563"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="157.6049"
|
||||
x="181.70563"
|
||||
id="tspan4100"
|
||||
sodipodi:role="line">is</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(134,-4e-6)"
|
||||
id="g4102-9">
|
||||
<path
|
||||
id="path2876-0"
|
||||
d="M 179.80715,116.16834 180,226.09998"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.69999999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4098-8"
|
||||
y="157.6049"
|
||||
x="181.70563"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="157.6049"
|
||||
x="181.70563"
|
||||
id="tspan4100-8"
|
||||
sodipodi:role="line">is</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g4144"
|
||||
transform="translate(260,-4e-6)">
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.69999999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
|
||||
d="M 179.80715,116.16834 180,226.09998"
|
||||
id="path4146" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="181.70563"
|
||||
y="157.6049"
|
||||
id="text4148"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4150"
|
||||
x="181.70563"
|
||||
y="157.6049">is</tspan></text>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-9)"
|
||||
d="m 439.67732,268.09998 0.32268,46 210,0 0,-40"
|
||||
id="path4152" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="520.22858"
|
||||
y="330.28006"
|
||||
id="text4340"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4342"
|
||||
x="520.22858"
|
||||
y="330.28006">extends</tspan></text>
|
||||
<g
|
||||
id="g3828-4"
|
||||
transform="translate(133.32018,329.60589)">
|
||||
<g
|
||||
id="g3830-8"
|
||||
transform="translate(-12.857147,6.4285736)">
|
||||
<rect
|
||||
y="222.563"
|
||||
x="164.8916"
|
||||
height="39.502518"
|
||||
width="56.64537"
|
||||
id="rect3832-1"
|
||||
style="fill:#999999;stroke:#000000;stroke-width:0.78319448;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text3834-0"
|
||||
y="247.6714"
|
||||
x="172.85715"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="247.6714"
|
||||
x="172.85715"
|
||||
id="tspan3836-3"
|
||||
sodipodi:role="line">part</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(-2.67982,329.60589)"
|
||||
id="g4378">
|
||||
<g
|
||||
transform="translate(-12.857147,6.4285736)"
|
||||
id="g4380">
|
||||
<rect
|
||||
style="fill:#999999;stroke:#000000;stroke-width:0.78319448;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect4382"
|
||||
width="56.64537"
|
||||
height="39.502518"
|
||||
x="164.8916"
|
||||
y="222.563" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="172.85715"
|
||||
y="247.6714"
|
||||
id="text4384"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4386"
|
||||
x="172.85715"
|
||||
y="247.6714">part</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(267.32018,329.60589)"
|
||||
id="g4388">
|
||||
<g
|
||||
transform="translate(-12.857147,6.4285736)"
|
||||
id="g4390">
|
||||
<rect
|
||||
style="fill:#999999;stroke:#000000;stroke-width:0.78319448;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect4392"
|
||||
width="56.64537"
|
||||
height="39.502518"
|
||||
x="164.8916"
|
||||
y="222.563" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="172.85715"
|
||||
y="247.6714"
|
||||
id="text4394"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4396"
|
||||
x="172.85715"
|
||||
y="247.6714">part</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1.101;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Lend-9)"
|
||||
d="M 180.35714,268.49409 180,554.09998"
|
||||
id="path4398" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-9)"
|
||||
d="m 313.67732,268.09998 0,290.49749"
|
||||
id="path4400" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4774"
|
||||
y="354.28006"
|
||||
x="184.22858"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="354.28006"
|
||||
x="184.22858"
|
||||
id="tspan4776"
|
||||
sodipodi:role="line">extends</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="316.22858"
|
||||
y="354.28006"
|
||||
id="text4778"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4780"
|
||||
x="316.22858"
|
||||
y="354.28006">extends</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-9)"
|
||||
d="m 313.9049,598.53648 0,48.73986 137.63329,0.25254 0.25254,-48.73986"
|
||||
id="path4782" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4970"
|
||||
y="664.28003"
|
||||
x="348.22858"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="664.28003"
|
||||
x="348.22858"
|
||||
id="tspan4972"
|
||||
sodipodi:role="line">extends</tspan></text>
|
||||
<rect
|
||||
style="fill:#00bad5;fill-opacity:0.9605735;stroke:#000000;stroke-width:1.10099995;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect4974"
|
||||
width="145.46196"
|
||||
height="128.28937"
|
||||
x="564.67529"
|
||||
y="508.6329" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4978"
|
||||
y="661.25031"
|
||||
x="581.85718"
|
||||
style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="661.25031"
|
||||
x="581.85718"
|
||||
id="tspan4980"
|
||||
sodipodi:role="line">DIR_LIB_SOURCE</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4978-6"
|
||||
y="631.6189"
|
||||
x="792.89563"
|
||||
style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="631.6189"
|
||||
x="792.89563"
|
||||
id="tspan4980-2"
|
||||
sodipodi:role="line">SCHEMATIC_LIB_SOURCE</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-9)"
|
||||
d="m 512.14734,451.05421 -0.50507,55.05331"
|
||||
id="path5007" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-9)"
|
||||
d="m 637.91133,451.55929 -0.50507,55.05331"
|
||||
id="path5009" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-9)"
|
||||
d="m 849.03322,450.54913 0,55.55839"
|
||||
id="path5011" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-9)"
|
||||
d="m 740,298.38569 0,67.14286"
|
||||
id="path5571" />
|
||||
<g
|
||||
id="g5759"
|
||||
transform="translate(457.32018,329.60589)">
|
||||
<g
|
||||
id="g5761"
|
||||
transform="translate(-12.857147,6.4285736)">
|
||||
<rect
|
||||
y="222.563"
|
||||
x="164.8916"
|
||||
height="39.502518"
|
||||
width="56.64537"
|
||||
id="rect5763"
|
||||
style="fill:#999999;stroke:#000000;stroke-width:0.78319448;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text5765"
|
||||
y="247.6714"
|
||||
x="172.85715"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="247.6714"
|
||||
x="172.85715"
|
||||
id="tspan5767"
|
||||
sodipodi:role="line">part</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(447.32018,339.60589)"
|
||||
id="g5779">
|
||||
<g
|
||||
transform="translate(-12.857147,6.4285736)"
|
||||
id="g5781">
|
||||
<rect
|
||||
style="fill:#999999;stroke:#000000;stroke-width:0.78319448;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect5783"
|
||||
width="56.64537"
|
||||
height="39.502518"
|
||||
x="164.8916"
|
||||
y="222.563" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="172.85715"
|
||||
y="247.6714"
|
||||
id="text5785"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5787"
|
||||
x="172.85715"
|
||||
y="247.6714">part</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="567.28571"
|
||||
y="139.38568"
|
||||
id="text5799"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5801"
|
||||
x="567.28571"
|
||||
y="139.38568">All sheets are in one schematic object</tspan></text>
|
||||
<rect
|
||||
style="fill:#f4d7d7;fill-opacity:1;stroke:#000000;stroke-width:1.10099995;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect5803"
|
||||
width="123.57143"
|
||||
height="63.57143"
|
||||
x="814.57141"
|
||||
y="673.95709" />
|
||||
<g
|
||||
transform="translate(703.32018,451.60589)"
|
||||
id="g5769">
|
||||
<g
|
||||
transform="translate(-12.857147,6.4285736)"
|
||||
id="g5771">
|
||||
<rect
|
||||
style="fill:#999999;stroke:#000000;stroke-width:0.78319448;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect5773"
|
||||
width="56.64537"
|
||||
height="39.502518"
|
||||
x="164.8916"
|
||||
y="222.563" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="172.85715"
|
||||
y="247.6714"
|
||||
id="text5775"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5777"
|
||||
x="172.85715"
|
||||
y="247.6714">part</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g5789"
|
||||
transform="translate(693.32018,461.60589)">
|
||||
<g
|
||||
id="g5791"
|
||||
transform="translate(-12.857147,6.4285736)">
|
||||
<rect
|
||||
y="222.563"
|
||||
x="164.8916"
|
||||
height="39.502518"
|
||||
width="56.64537"
|
||||
id="rect5793"
|
||||
style="fill:#999999;stroke:#000000;stroke-width:0.78319448;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text5795"
|
||||
y="247.6714"
|
||||
x="172.85715"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="247.6714"
|
||||
x="172.85715"
|
||||
id="tspan5797"
|
||||
sodipodi:role="line">part</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="826.71429"
|
||||
y="663.95709"
|
||||
id="text5807"
|
||||
sodipodi:linespacing="100%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5809"
|
||||
x="826.71429"
|
||||
y="663.95709">other schematic</tspan></text>
|
||||
<rect
|
||||
style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:1.10099995;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect5811"
|
||||
width="154.28572"
|
||||
height="57.142857"
|
||||
x="167.85715"
|
||||
y="676.24286" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="202.85715"
|
||||
y="711.24286"
|
||||
id="text5813"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5815"
|
||||
x="202.85715"
|
||||
y="711.24286">Internet</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-9)"
|
||||
d="m 245,638.38569 -0.71428,37.14286"
|
||||
id="path5817" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="495.57144"
|
||||
y="527.95709"
|
||||
id="text2962"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2964"
|
||||
x="495.57144"
|
||||
y="527.95709">LIB</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-9)"
|
||||
d="m 638.57143,638.38569 -0.71429,47.14286"
|
||||
id="path2966" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="566"
|
||||
y="712.95709"
|
||||
id="text3938"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3940"
|
||||
x="566"
|
||||
y="712.95709">part files in a dir</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text3944"
|
||||
y="527.95709"
|
||||
x="669.57141"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="527.95709"
|
||||
x="669.57141"
|
||||
id="tspan3946"
|
||||
sodipodi:role="line">LIB</tspan></text>
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3948"
|
||||
style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Bitstream Vera Sans;font-style:normal;font-weight:normal;font-size:18px;-inkscape-font-specification:Bitstream Vera Sans;font-stretch:normal;font-variant:normal;text-anchor:start;text-align:start;writing-mode:lr;line-height:125%"><flowRegion
|
||||
id="flowRegion3950"><rect
|
||||
id="rect3952"
|
||||
width="240.71428"
|
||||
height="148.57143"
|
||||
x="740"
|
||||
y="508.38568" /></flowRegion><flowPara
|
||||
id="flowPara3954" /></flowRoot> <text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="953.57141"
|
||||
y="527.95709"
|
||||
id="text3956"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3958"
|
||||
x="953.57141"
|
||||
y="527.95709">LIB</tspan></text>
|
||||
<g
|
||||
transform="translate(695.32018,305.60589)"
|
||||
id="g3960">
|
||||
<g
|
||||
transform="translate(-12.857147,6.4285736)"
|
||||
id="g3962">
|
||||
<rect
|
||||
style="fill:#999999;stroke:#000000;stroke-width:0.78319448;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect3964"
|
||||
width="56.64537"
|
||||
height="39.502518"
|
||||
x="164.8916"
|
||||
y="222.563" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="172.85715"
|
||||
y="247.6714"
|
||||
id="text3966"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3968"
|
||||
x="172.85715"
|
||||
y="247.6714">part</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3970"
|
||||
transform="translate(685.32018,315.60589)">
|
||||
<g
|
||||
id="g3972"
|
||||
transform="translate(-12.857147,6.4285736)">
|
||||
<rect
|
||||
y="222.563"
|
||||
x="164.8916"
|
||||
height="39.502518"
|
||||
width="56.64537"
|
||||
id="rect3974"
|
||||
style="fill:#999999;stroke:#000000;stroke-width:0.78319448;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text3976"
|
||||
y="247.6714"
|
||||
x="172.85715"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="247.6714"
|
||||
x="172.85715"
|
||||
id="tspan3978"
|
||||
sodipodi:role="line">part</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-9)"
|
||||
d="m 877.85714,607.6714 0,41.42858"
|
||||
id="path3980" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="840.89563"
|
||||
y="219.6189"
|
||||
id="text4168"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4170"
|
||||
x="840.89563"
|
||||
y="219.6189">LIB</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1.26530874px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-9)"
|
||||
d="M 851.17116,365.3959 850.285,225.65964"
|
||||
id="path4172" />
|
||||
</svg>
|
After Width: | Height: | Size: 39 KiB |
|
@ -0,0 +1,3 @@
|
|||
|
||||
# run this from the <kicad>/new directory
|
||||
doxygen
|
|
@ -0,0 +1,134 @@
|
|||
|
||||
/*
|
||||
* This program source code file is part of KICAD, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2010 SoftPLC Corporation, <dick@softplc.com>
|
||||
* Copyright (C) 2010 Kicad Developers, see change_log.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef DIR_LIB_SOURCE_H_
|
||||
#define DIR_LIB_SOURCE_H_
|
||||
|
||||
|
||||
/* Note: this LIB_SOURCE implementation relies on the posix specified opendir() and
|
||||
related functions. Mingw and unix, linux, & osx will all have these posix functions.
|
||||
MS Visual Studio may need the posix compatible opendir() functions brought in
|
||||
http://www.softagalleria.net/dirent.php
|
||||
wx has these but they are based on wxString and wx should not be introduced
|
||||
at a level this low.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
namespace SCH {
|
||||
|
||||
|
||||
/**
|
||||
* Class DIR_LIB_SOURCE
|
||||
* implements a LIB_SOURCE in a file system directory.
|
||||
*
|
||||
* @author Dick Hollenbeck
|
||||
*/
|
||||
class DIR_LIB_SOURCE : public LIB_SOURCE
|
||||
{
|
||||
friend class LIBS; ///< LIBS::GetLib() can construct one.
|
||||
|
||||
STRING path; ///< base directory path of LIB_SOURCE
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
/**
|
||||
* Constructor DIR_LIB_SOURCE( const STRING& aDirectoryPath )
|
||||
* sets up a LIB_SOURCE using aDirectoryPath in a file system.
|
||||
* @see LIBS::GetLibrary().
|
||||
*
|
||||
* @param aDirectoryPath is a full pathname of a directory which contains
|
||||
* the library source of part files. Examples might be "C:\kicad_data\mylib" or
|
||||
* "/home/designer/mylibdir".
|
||||
*/
|
||||
DIR_LIB_SOURCE( const STRING& aDirectoryPath ) throws( IO_ERROR, PARSE_ERROR );
|
||||
|
||||
|
||||
};
|
||||
|
||||
} // namespace SCH
|
||||
|
||||
#endif // DIR_LIB_SOURCE_H_
|
||||
|
||||
|
||||
|
||||
#include <dirent.h>
|
||||
#include <cstring>
|
||||
#include <ki_exceptions.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
|
||||
/**
|
||||
* Class DIR_WRAP
|
||||
* provides a destructor which may be invoked if an exception is thrown,
|
||||
* thereby closing the DIR.
|
||||
*/
|
||||
class DIR_WRAP
|
||||
{
|
||||
DIR* dir;
|
||||
|
||||
public:
|
||||
DIR_WRAP( DIR* aDir ) : dir( aDir ) {}
|
||||
|
||||
~DIR_WRAP()
|
||||
{
|
||||
if( dir )
|
||||
closedir( dir );
|
||||
}
|
||||
|
||||
DIR* operator->() { return dir; }
|
||||
};
|
||||
|
||||
|
||||
DIR_LIB_SOURCE::DIR_LIB_SOURCE( const STRING& aDirectoryPath ) throws( IO_ERROR, PARSE_ERROR )
|
||||
{
|
||||
DIR_WRAP* dir = opendir( aDirectoryPath.c_str() );
|
||||
|
||||
if( !dir )
|
||||
{
|
||||
char buf[256];
|
||||
|
||||
strerror_r( errno, buf, sizeof(buf) );
|
||||
throw( IO_ERROR( buf ) );
|
||||
}
|
||||
|
||||
path = aDirectoryPath;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
#if 1 || defined( TEST_DIR_LIB_SOURCE )
|
||||
|
||||
int main( int argv, char** argv )
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue