Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
115d1adb
Commit
115d1adb
authored
Mar 28, 2011
by
Dick Hollenbeck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
more sweet parser & beginnings of Format()ing
parent
5b0e60e6
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
346 additions
and
211 deletions
+346
-211
eeschema_part_sexpr_format_EN.odt
new/eeschema_part_sexpr_format_EN.odt
+0
-0
make-dir-lib-source-test-data.sh
new/make-dir-lib-source-test-data.sh
+5
-0
sch_part.cpp
new/sch_part.cpp
+66
-5
sch_part.h
new/sch_part.h
+37
-2
sch_sweet_parser.cpp
new/sch_sweet_parser.cpp
+227
-204
sch_sweet_parser.h
new/sch_sweet_parser.h
+11
-0
No files found.
new/eeschema_part_sexpr_format_EN.odt
View file @
115d1adb
No preview for this file type
new/make-dir-lib-source-test-data.sh
View file @
115d1adb
...
@@ -61,6 +61,9 @@ PROP1="
...
@@ -61,6 +61,9 @@ PROP1="
(effects (at 1 34 270)(font (size .5 1) italic bold)(visible no))
(effects (at 1 34 270)(font (size .5 1) italic bold)(visible no))
)"
)"
KEYWORDS
=
"
(keywords varistor batcave einstein)"
for
C
in
${
CATEGORIES
}
;
do
for
C
in
${
CATEGORIES
}
;
do
...
@@ -79,6 +82,7 @@ for C in ${CATEGORIES}; do
...
@@ -79,6 +82,7 @@ for C in ${CATEGORIES}; do
$PIN1
$PIN1
$PIN2
$PIN2
$PROP1
$PROP1
$KEYWORDS
)"
>
$BASEDIR
/
$C
/
$P
.part.
$R
)"
>
$BASEDIR
/
$C
/
$P
.part.
$R
done
done
# also make the part without a rev:
# also make the part without a rev:
...
@@ -93,6 +97,7 @@ for C in ${CATEGORIES}; do
...
@@ -93,6 +97,7 @@ for C in ${CATEGORIES}; do
$PIN1
$PIN1
$PIN2
$PIN2
$PROP1
$PROP1
$KEYWORDS
)"
>
$BASEDIR
/
$C
/
$P
.part
)"
>
$BASEDIR
/
$C
/
$P
.part
done
done
done
done
...
...
new/sch_part.cpp
View file @
115d1adb
...
@@ -28,7 +28,7 @@
...
@@ -28,7 +28,7 @@
#include <sch_sweet_parser.h>
#include <sch_sweet_parser.h>
#include <sch_lpid.h>
#include <sch_lpid.h>
#include <sch_lib_table.h>
#include <sch_lib_table.h>
//#include <richio.h>
using
namespace
SCH
;
using
namespace
SCH
;
...
@@ -74,6 +74,11 @@ void PART::clear()
...
@@ -74,6 +74,11 @@ void PART::clear()
delete
*
it
;
delete
*
it
;
properties
.
clear
();
properties
.
clear
();
keywords
.
clear
();
contains
=
0
;
// @todo clear the mandatory fields
}
}
...
@@ -120,12 +125,68 @@ void PART::Parse( SWEET_PARSER* aParser, LIB_TABLE* aTable ) throw( IO_ERROR, PA
...
@@ -120,12 +125,68 @@ void PART::Parse( SWEET_PARSER* aParser, LIB_TABLE* aTable ) throw( IO_ERROR, PA
}
}
#if 0 && defined(DEBUG)
void
PART
::
PropertyDelete
(
const
wxString
&
aPropertyName
)
throw
(
IO_ERROR
)
{
PROPERTIES
::
iterator
it
=
propertyFind
(
aPropertyName
);
if
(
it
==
properties
.
end
()
)
{
wxString
msg
;
msg
.
Printf
(
_
(
"Unable to find property: %s"
),
aPropertyName
.
GetData
()
);
THROW_IO_ERROR
(
msg
);
}
delete
*
it
;
properties
.
erase
(
it
);
return
;
}
PROPERTIES
::
iterator
PART
::
propertyFind
(
const
wxString
&
aPropertyName
)
{
PROPERTIES
::
iterator
it
;
for
(
it
=
properties
.
begin
();
it
!=
properties
.
end
();
++
it
)
if
(
(
*
it
)
->
name
==
aPropertyName
)
break
;
return
it
;
}
int main( int argc, char** argv
)
void
PART
::
Format
(
OUTPUTFORMATTER
*
out
,
int
indent
,
int
ctl
)
const
throw
(
IO_ERROR
)
{
{
return 0;
out
->
Print
(
indent
,
"(part %s"
,
partNameAndRev
.
c_str
()
);
if
(
extends
)
out
->
Print
(
0
,
" inherits %s"
,
extends
->
Format
().
c_str
()
);
out
->
Print
(
0
,
"
\n
"
);
/*
@todo
for( int i=0; i<MANDATORY_FIELDS; ++i )
{
}
*/
for
(
PROPERTIES
::
const_iterator
it
=
properties
.
begin
();
it
!=
properties
.
end
();
++
it
)
{
(
*
it
)
->
Format
(
out
,
indent
+
1
,
ctl
);
}
if
(
anchor
.
x
||
anchor
.
y
)
{
out
->
Print
(
indent
+
1
,
"(anchor (at %.6g %.6g))
\n
"
,
InternalToLogical
(
anchor
.
x
),
InternalToLogical
(
anchor
.
y
)
);
}
for
(
GRAPHICS
::
const_iterator
it
=
graphics
.
begin
();
it
!=
graphics
.
end
();
++
it
)
{
(
*
it
)
->
Format
(
out
,
indent
+
1
,
ctl
);
}
for
(
PINS
::
const_iterator
it
=
pins
.
begin
();
it
!=
pins
.
end
();
++
it
)
{
(
*
it
)
->
Format
(
out
,
indent
+
1
,
ctl
);
}
}
}
#endif
new/sch_part.h
View file @
115d1adb
...
@@ -34,8 +34,10 @@
...
@@ -34,8 +34,10 @@
#include <wx/gdicmn.h>
#include <wx/gdicmn.h>
#include <deque>
#include <deque>
#include <vector>
#include <vector>
#include <set>
#include <sweet_lexer.h>
#include <sweet_lexer.h>
class
OUTPUTFORMATTER
;
namespace
SCH
{
namespace
SCH
{
...
@@ -114,6 +116,10 @@ public:
...
@@ -114,6 +116,10 @@ public:
{}
{}
virtual
~
BASE_GRAPHIC
()
{}
virtual
~
BASE_GRAPHIC
()
{}
virtual
void
Format
(
OUTPUTFORMATTER
*
aOutputFormatter
,
int
aNestLevel
,
int
aControlBits
)
const
throw
(
IO_ERROR
)
{}
};
};
typedef
std
::
deque
<
POINT
>
POINTS
;
typedef
std
::
deque
<
POINT
>
POINTS
;
...
@@ -278,6 +284,11 @@ public:
...
@@ -278,6 +284,11 @@ public:
isVisible
(
true
)
isVisible
(
true
)
{}
{}
/*
void Format( OUTPUTFORMATTER* aOutputFormatter, int aNestLevel, int aControlBits ) const
throw( IO_ERROR );
*/
protected
:
protected
:
PART
*
birthplace
;
///< at which PART in inheritance chain was this PIN added
PART
*
birthplace
;
///< at which PART in inheritance chain was this PIN added
POINT
pos
;
POINT
pos
;
...
@@ -309,6 +320,7 @@ namespace SCH {
...
@@ -309,6 +320,7 @@ namespace SCH {
typedef
std
::
vector
<
BASE_GRAPHIC
*
>
GRAPHICS
;
typedef
std
::
vector
<
BASE_GRAPHIC
*
>
GRAPHICS
;
typedef
std
::
vector
<
PIN
*
>
PINS
;
typedef
std
::
vector
<
PIN
*
>
PINS
;
typedef
std
::
vector
<
PROPERTY
*
>
PROPERTIES
;
typedef
std
::
vector
<
PROPERTY
*
>
PROPERTIES
;
typedef
std
::
set
<
wxString
>
KEYWORDS
;
class
LPID
;
class
LPID
;
class
SWEET_PARSER
;
class
SWEET_PARSER
;
...
@@ -347,6 +359,14 @@ protected: // not likely to have C++ descendants, but protected none-the-le
...
@@ -347,6 +359,14 @@ protected: // not likely to have C++ descendants, but protected none-the-le
*/
*/
void
inherit
(
const
PART
&
aBasePart
);
void
inherit
(
const
PART
&
aBasePart
);
/**
* Function propertyFind
* searches for aPropertyName and returns a PROPERTIES::iterator which
* is the found item or properties.end() if not found.
*/
PROPERTIES
::
iterator
propertyFind
(
const
wxString
&
aPropertyName
);
POINT
anchor
;
POINT
anchor
;
//PART( LIB* aOwner );
//PART( LIB* aOwner );
...
@@ -396,14 +416,14 @@ protected: // not likely to have C++ descendants, but protected none-the-le
...
@@ -396,14 +416,14 @@ protected: // not likely to have C++ descendants, but protected none-the-le
/// Alternate body forms.
/// Alternate body forms.
//ALTERNATES alternates;
//ALTERNATES alternates;
wxString
keywords
;
KEYWORDS
keywords
;
public
:
public
:
virtual
~
PART
();
virtual
~
PART
();
PART
&
operator
=
(
const
PART
&
other
);
PART
&
operator
=
(
const
PART
&
other
);
/**
/**
* Function Owner
* Function Owner
...
@@ -424,6 +444,21 @@ public:
...
@@ -424,6 +444,21 @@ public:
*/
*/
void
Parse
(
SWEET_PARSER
*
aParser
,
LIB_TABLE
*
aLibTable
)
throw
(
IO_ERROR
,
PARSE_ERROR
);
void
Parse
(
SWEET_PARSER
*
aParser
,
LIB_TABLE
*
aLibTable
)
throw
(
IO_ERROR
,
PARSE_ERROR
);
/**
* Function Format
* outputs this PART in UTF8 encoded s-expression format to @a aFormatter.
* @param aFormatter is the output sink to write to.
* @param aNestLevel is the initial indent level
* @param aControlBits are bit flags ORed together which control how the output
* is done.
*/
void
Format
(
OUTPUTFORMATTER
*
aFormatter
,
int
aNestLevel
,
int
aControlBits
=
0
)
const
throw
(
IO_ERROR
);
void
PropertyDelete
(
const
wxString
&
aPropertyName
)
throw
(
IO_ERROR
);
/*
/*
void SetValue( const wxString& aValue )
void SetValue( const wxString& aValue )
{
{
...
...
new/sch_sweet_parser.cpp
View file @
115d1adb
This diff is collapsed.
Click to expand it.
new/sch_sweet_parser.h
View file @
115d1adb
...
@@ -28,6 +28,16 @@
...
@@ -28,6 +28,16 @@
#include <utf8.h>
#include <utf8.h>
#include <sweet_lexer.h>
#include <sweet_lexer.h>
#define INTERNAL_PER_LOGICAL 10000 ///< no. internal units per logical unit
static
inline
double
InternalToLogical
(
int
aCoord
)
{
return
double
(
aCoord
)
/
INTERNAL_PER_LOGICAL
;
}
class
POINT
;
class
POINT
;
namespace
SCH
{
namespace
SCH
{
...
@@ -80,6 +90,7 @@ class SWEET_PARSER : public SWEET_LEXER
...
@@ -80,6 +90,7 @@ class SWEET_PARSER : public SWEET_LEXER
void
parseFont
(
FONT
*
me
);
void
parseFont
(
FONT
*
me
);
void
parsePinText
(
PINTEXT
*
me
);
void
parsePinText
(
PINTEXT
*
me
);
void
parseTextEffects
(
TEXT_EFFECTS
*
me
);
void
parseTextEffects
(
TEXT_EFFECTS
*
me
);
void
parseKeywords
(
PART
*
me
);
public
:
public
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment