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
bc16d9d7
Commit
bc16d9d7
authored
Feb 27, 2011
by
Dick Hollenbeck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
simplifications, typo
parent
558af6d7
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
68 additions
and
49 deletions
+68
-49
load_one_schematic_file.cpp
eeschema/load_one_schematic_file.cpp
+41
-29
sch_component.cpp
eeschema/sch_component.cpp
+26
-19
kicad_string.h
include/kicad_string.h
+1
-1
No files found.
eeschema/load_one_schematic_file.cpp
View file @
bc16d9d7
...
@@ -39,8 +39,7 @@ bool SCH_EDIT_FRAME::LoadOneEEFile( SCH_SCREEN* screen, const wxString& FullFile
...
@@ -39,8 +39,7 @@ bool SCH_EDIT_FRAME::LoadOneEEFile( SCH_SCREEN* screen, const wxString& FullFile
SCH_ITEM
*
Pnext
;
SCH_ITEM
*
Pnext
;
SCH_ITEM
*
item
;
SCH_ITEM
*
item
;
wxString
MsgDiag
;
// Error and log messages
wxString
MsgDiag
;
// Error and log messages
char
*
line
;
#define line ((char*)reader)
if
(
screen
==
NULL
)
if
(
screen
==
NULL
)
return
FALSE
;
return
FALSE
;
...
@@ -68,18 +67,22 @@ bool SCH_EDIT_FRAME::LoadOneEEFile( SCH_SCREEN* screen, const wxString& FullFile
...
@@ -68,18 +67,22 @@ bool SCH_EDIT_FRAME::LoadOneEEFile( SCH_SCREEN* screen, const wxString& FullFile
PrintMsg
(
MsgDiag
);
PrintMsg
(
MsgDiag
);
if
(
!
reader
.
ReadLine
()
if
(
!
reader
.
ReadLine
()
||
strncmp
(
line
+
9
,
SCHEMATIC_HEAD_STRING
,
sizeof
(
SCHEMATIC_HEAD_STRING
)
-
1
)
!=
0
)
||
strncmp
(
(
char
*
)
reader
+
9
,
SCHEMATIC_HEAD_STRING
,
sizeof
(
SCHEMATIC_HEAD_STRING
)
-
1
)
!=
0
)
{
{
MsgDiag
=
FullFileName
+
_
(
" is NOT an EESchema file!"
);
MsgDiag
=
FullFileName
+
_
(
" is NOT an EESchema file!"
);
DisplayError
(
this
,
MsgDiag
);
DisplayError
(
this
,
MsgDiag
);
return
FALSE
;
return
FALSE
;
}
}
line
=
reader
.
Line
();
// get the file version here.
// get the file version here.
char
*
strversion
=
line
+
9
+
sizeof
(
SCHEMATIC_HEAD_STRING
);
char
*
strversion
=
line
+
9
+
sizeof
(
SCHEMATIC_HEAD_STRING
);
// Skip blanks
// Skip blanks
while
(
*
strversion
&&
*
strversion
<
'0'
)
while
(
*
strversion
&&
*
strversion
<
'0'
)
strversion
++
;
strversion
++
;
int
version
=
atoi
(
strversion
);
int
version
=
atoi
(
strversion
);
if
(
version
>
EESCHEMA_VERSION
)
if
(
version
>
EESCHEMA_VERSION
)
...
@@ -101,7 +104,7 @@ again." );
...
@@ -101,7 +104,7 @@ again." );
}
}
#endif
#endif
if
(
!
reader
.
ReadLine
()
||
strncmp
(
line
,
"LIBS:"
,
5
)
!=
0
)
if
(
!
reader
.
ReadLine
()
||
strncmp
(
reader
,
"LIBS:"
,
5
)
!=
0
)
{
{
MsgDiag
=
FullFileName
+
_
(
" is NOT an EESchema file!"
);
MsgDiag
=
FullFileName
+
_
(
" is NOT an EESchema file!"
);
DisplayError
(
this
,
MsgDiag
);
DisplayError
(
this
,
MsgDiag
);
...
@@ -112,6 +115,8 @@ again." );
...
@@ -112,6 +115,8 @@ again." );
while
(
reader
.
ReadLine
()
)
while
(
reader
.
ReadLine
()
)
{
{
line
=
reader
.
Line
();
item
=
NULL
;
item
=
NULL
;
char
*
sline
=
line
;
char
*
sline
=
line
;
...
@@ -264,18 +269,23 @@ static void LoadLayers( LINE_READER* aLine )
...
@@ -264,18 +269,23 @@ static void LoadLayers( LINE_READER* aLine )
/* Read the schematic header. */
/* Read the schematic header. */
bool
ReadSchemaDescr
(
LINE_READER
*
aLine
,
wxString
&
aMsgDiag
,
BASE_SCREEN
*
aScreen
)
bool
ReadSchemaDescr
(
LINE_READER
*
aLine
,
wxString
&
aMsgDiag
,
BASE_SCREEN
*
aScreen
)
{
{
char
Text
[
256
],
buf
[
1024
];
char
Text
[
256
];
int
ii
;
char
buf
[
1024
];
Ki_PageDescr
*
wsheet
=
&
g_Sheet_A4
;
int
ii
;
Ki_PageDescr
*
wsheet
=
&
g_Sheet_A4
;
wxSize
PageSize
;
char
*
line
;
static
Ki_PageDescr
*
SheetFormatList
[]
=
static
Ki_PageDescr
*
SheetFormatList
[]
=
{
{
&
g_Sheet_A4
,
&
g_Sheet_A3
,
&
g_Sheet_A2
,
&
g_Sheet_A1
,
&
g_Sheet_A0
,
&
g_Sheet_A4
,
&
g_Sheet_A3
,
&
g_Sheet_A2
,
&
g_Sheet_A1
,
&
g_Sheet_A0
,
&
g_Sheet_A
,
&
g_Sheet_B
,
&
g_Sheet_C
,
&
g_Sheet_D
,
&
g_Sheet_E
,
&
g_Sheet_A
,
&
g_Sheet_B
,
&
g_Sheet_C
,
&
g_Sheet_D
,
&
g_Sheet_E
,
&
g_Sheet_user
,
NULL
&
g_Sheet_user
,
NULL
};
};
wxSize
PageSize
;
sscanf
(
((
char
*
)(
*
aLine
)),
"%s %s %d %d"
,
Text
,
Text
,
&
PageSize
.
x
,
&
PageSize
.
y
);
line
=
aLine
->
Line
();
sscanf
(
line
,
"%s %s %d %d"
,
Text
,
Text
,
&
PageSize
.
x
,
&
PageSize
.
y
);
wxString
pagename
=
CONV_FROM_UTF8
(
Text
);
wxString
pagename
=
CONV_FROM_UTF8
(
Text
);
...
@@ -300,7 +310,7 @@ bool ReadSchemaDescr( LINE_READER* aLine, wxString& aMsgDiag, BASE_SCREEN* aScre
...
@@ -300,7 +310,7 @@ bool ReadSchemaDescr( LINE_READER* aLine, wxString& aMsgDiag, BASE_SCREEN* aScre
aMsgDiag
.
Printf
(
wxT
(
"EESchema file dimension definition error \
aMsgDiag
.
Printf
(
wxT
(
"EESchema file dimension definition error \
line %d,
\a
Abort reading file.
\n
"
),
line %d,
\a
Abort reading file.
\n
"
),
aLine
->
LineNumber
()
);
aLine
->
LineNumber
()
);
aMsgDiag
<<
CONV_FROM_UTF8
(
((
char
*
)(
*
aLine
))
);
aMsgDiag
<<
CONV_FROM_UTF8
(
line
);
}
}
aScreen
->
m_CurrentSheetDesc
=
wsheet
;
aScreen
->
m_CurrentSheetDesc
=
wsheet
;
...
@@ -310,65 +320,67 @@ line %d, \aAbort reading file.\n" ),
...
@@ -310,65 +320,67 @@ line %d, \aAbort reading file.\n" ),
if
(
!
aLine
->
ReadLine
()
)
if
(
!
aLine
->
ReadLine
()
)
return
TRUE
;
return
TRUE
;
if
(
strnicmp
(
((
char
*
)(
*
aLine
)),
"$End"
,
4
)
==
0
)
line
=
aLine
->
Line
();
if
(
strnicmp
(
line
,
"$End"
,
4
)
==
0
)
break
;
break
;
if
(
strnicmp
(
((
char
*
)(
*
aLine
))
,
"Sheet"
,
2
)
==
0
)
if
(
strnicmp
(
line
,
"Sheet"
,
2
)
==
0
)
sscanf
(
((
char
*
)(
*
aLine
))
+
5
,
" %d %d"
,
sscanf
(
line
+
5
,
" %d %d"
,
&
aScreen
->
m_ScreenNumber
,
&
aScreen
->
m_NumberOfScreen
);
&
aScreen
->
m_ScreenNumber
,
&
aScreen
->
m_NumberOfScreen
);
if
(
strnicmp
(
((
char
*
)(
*
aLine
))
,
"Title"
,
2
)
==
0
)
if
(
strnicmp
(
line
,
"Title"
,
2
)
==
0
)
{
{
ReadDelimitedText
(
buf
,
((
char
*
)(
*
aLine
))
,
256
);
ReadDelimitedText
(
buf
,
line
,
256
);
aScreen
->
m_Title
=
CONV_FROM_UTF8
(
buf
);
aScreen
->
m_Title
=
CONV_FROM_UTF8
(
buf
);
continue
;
continue
;
}
}
if
(
strnicmp
(
((
char
*
)(
*
aLine
))
,
"Date"
,
2
)
==
0
)
if
(
strnicmp
(
line
,
"Date"
,
2
)
==
0
)
{
{
ReadDelimitedText
(
buf
,
((
char
*
)(
*
aLine
))
,
256
);
ReadDelimitedText
(
buf
,
line
,
256
);
aScreen
->
m_Date
=
CONV_FROM_UTF8
(
buf
);
aScreen
->
m_Date
=
CONV_FROM_UTF8
(
buf
);
continue
;
continue
;
}
}
if
(
strnicmp
(
((
char
*
)(
*
aLine
))
,
"Rev"
,
2
)
==
0
)
if
(
strnicmp
(
line
,
"Rev"
,
2
)
==
0
)
{
{
ReadDelimitedText
(
buf
,
((
char
*
)(
*
aLine
))
,
256
);
ReadDelimitedText
(
buf
,
line
,
256
);
aScreen
->
m_Revision
=
CONV_FROM_UTF8
(
buf
);
aScreen
->
m_Revision
=
CONV_FROM_UTF8
(
buf
);
continue
;
continue
;
}
}
if
(
strnicmp
(
((
char
*
)(
*
aLine
))
,
"Comp"
,
4
)
==
0
)
if
(
strnicmp
(
line
,
"Comp"
,
4
)
==
0
)
{
{
ReadDelimitedText
(
buf
,
((
char
*
)(
*
aLine
))
,
256
);
ReadDelimitedText
(
buf
,
line
,
256
);
aScreen
->
m_Company
=
CONV_FROM_UTF8
(
buf
);
aScreen
->
m_Company
=
CONV_FROM_UTF8
(
buf
);
continue
;
continue
;
}
}
if
(
strnicmp
(
((
char
*
)(
*
aLine
))
,
"Comment1"
,
8
)
==
0
)
if
(
strnicmp
(
line
,
"Comment1"
,
8
)
==
0
)
{
{
ReadDelimitedText
(
buf
,
((
char
*
)(
*
aLine
))
,
256
);
ReadDelimitedText
(
buf
,
line
,
256
);
aScreen
->
m_Commentaire1
=
CONV_FROM_UTF8
(
buf
);
aScreen
->
m_Commentaire1
=
CONV_FROM_UTF8
(
buf
);
continue
;
continue
;
}
}
if
(
strnicmp
(
((
char
*
)(
*
aLine
))
,
"Comment2"
,
8
)
==
0
)
if
(
strnicmp
(
line
,
"Comment2"
,
8
)
==
0
)
{
{
ReadDelimitedText
(
buf
,
((
char
*
)(
*
aLine
))
,
256
);
ReadDelimitedText
(
buf
,
line
,
256
);
aScreen
->
m_Commentaire2
=
CONV_FROM_UTF8
(
buf
);
aScreen
->
m_Commentaire2
=
CONV_FROM_UTF8
(
buf
);
continue
;
continue
;
}
}
if
(
strnicmp
(
((
char
*
)(
*
aLine
))
,
"Comment3"
,
8
)
==
0
)
if
(
strnicmp
(
line
,
"Comment3"
,
8
)
==
0
)
{
{
ReadDelimitedText
(
buf
,
((
char
*
)(
*
aLine
))
,
256
);
ReadDelimitedText
(
buf
,
line
,
256
);
aScreen
->
m_Commentaire3
=
CONV_FROM_UTF8
(
buf
);
aScreen
->
m_Commentaire3
=
CONV_FROM_UTF8
(
buf
);
continue
;
continue
;
}
}
if
(
strnicmp
(
((
char
*
)(
*
aLine
))
,
"Comment4"
,
8
)
==
0
)
if
(
strnicmp
(
line
,
"Comment4"
,
8
)
==
0
)
{
{
ReadDelimitedText
(
buf
,
((
char
*
)(
*
aLine
))
,
256
);
ReadDelimitedText
(
buf
,
line
,
256
);
aScreen
->
m_Commentaire4
=
CONV_FROM_UTF8
(
buf
);
aScreen
->
m_Commentaire4
=
CONV_FROM_UTF8
(
buf
);
continue
;
continue
;
}
}
...
...
eeschema/sch_component.cpp
View file @
bc16d9d7
...
@@ -1031,28 +1031,31 @@ bool SCH_COMPONENT::Save( FILE* f ) const
...
@@ -1031,28 +1031,31 @@ bool SCH_COMPONENT::Save( FILE* f ) const
bool
SCH_COMPONENT
::
Load
(
LINE_READER
&
aLine
,
wxString
&
aErrorMsg
)
bool
SCH_COMPONENT
::
Load
(
LINE_READER
&
aLine
,
wxString
&
aErrorMsg
)
{
{
int
ii
;
int
ii
;
char
Name1
[
256
],
Name2
[
256
],
char
Name1
[
256
],
Name2
[
256
],
Char1
[
256
],
Char2
[
256
],
Char3
[
256
];
Char1
[
256
],
Char2
[
256
],
Char3
[
256
];
int
newfmt
=
0
;
int
newfmt
=
0
;
char
*
ptcar
;
char
*
ptcar
;
wxString
fieldName
;
wxString
fieldName
;
char
*
line
=
aLine
.
Line
();
m_convert
=
1
;
m_convert
=
1
;
if
(
((
char
*
)
aLine
)
[
0
]
==
'$'
)
if
(
line
[
0
]
==
'$'
)
{
{
newfmt
=
1
;
newfmt
=
1
;
if
(
!
aLine
.
ReadLine
()
)
if
(
!
aLine
.
ReadLine
()
)
return
TRUE
;
return
TRUE
;
line
=
aLine
.
Line
();
}
}
if
(
sscanf
(
&
((
char
*
)
aLine
)
[
1
],
"%s %s"
,
Name1
,
Name2
)
!=
2
)
if
(
sscanf
(
&
line
[
1
],
"%s %s"
,
Name1
,
Name2
)
!=
2
)
{
{
aErrorMsg
.
Printf
(
wxT
(
"EESchema Component descr error at line %d, aborted"
),
aErrorMsg
.
Printf
(
wxT
(
"EESchema Component descr error at line %d, aborted"
),
aLine
.
LineNumber
()
);
aLine
.
LineNumber
()
);
aErrorMsg
<<
wxT
(
"
\n
"
)
<<
CONV_FROM_UTF8
(
((
char
*
)
aLine
)
);
aErrorMsg
<<
wxT
(
"
\n
"
)
<<
CONV_FROM_UTF8
(
line
);
return
false
;
return
false
;
}
}
...
@@ -1135,13 +1138,15 @@ bool SCH_COMPONENT::Load( LINE_READER& aLine, wxString& aErrorMsg )
...
@@ -1135,13 +1138,15 @@ bool SCH_COMPONENT::Load( LINE_READER& aLine, wxString& aErrorMsg )
if
(
!
aLine
.
ReadLine
()
)
if
(
!
aLine
.
ReadLine
()
)
return
false
;
return
false
;
if
(
((
char
*
)
aLine
)[
0
]
==
'U'
)
line
=
aLine
.
Line
();
if
(
line
[
0
]
==
'U'
)
{
{
sscanf
(
((
char
*
)
aLine
)
+
1
,
"%d %d %lX"
,
&
m_unit
,
&
m_convert
,
&
m_TimeStamp
);
sscanf
(
line
+
1
,
"%d %d %lX"
,
&
m_unit
,
&
m_convert
,
&
m_TimeStamp
);
}
}
else
if
(
((
char
*
)
aLine
)
[
0
]
==
'P'
)
else
if
(
line
[
0
]
==
'P'
)
{
{
sscanf
(
((
char
*
)
aLine
)
+
1
,
"%d %d"
,
&
m_Pos
.
x
,
&
m_Pos
.
y
);
sscanf
(
line
+
1
,
"%d %d"
,
&
m_Pos
.
x
,
&
m_Pos
.
y
);
// Set fields position to a default position (that is the
// Set fields position to a default position (that is the
// component position. For existing fields, the real position
// component position. For existing fields, the real position
...
@@ -1152,7 +1157,7 @@ bool SCH_COMPONENT::Load( LINE_READER& aLine, wxString& aErrorMsg )
...
@@ -1152,7 +1157,7 @@ bool SCH_COMPONENT::Load( LINE_READER& aLine, wxString& aErrorMsg )
GetField
(
i
)
->
m_Pos
=
m_Pos
;
GetField
(
i
)
->
m_Pos
=
m_Pos
;
}
}
}
}
else
if
(
((
char
*
)
aLine
)[
0
]
==
'A'
&&
((
char
*
)
aLine
)
[
1
]
==
'R'
)
else
if
(
line
[
0
]
==
'A'
&&
line
[
1
]
==
'R'
)
{
{
/* format:
/* format:
* AR Path="/9086AF6E/67452AA0" Ref="C99" Part="1"
* AR Path="/9086AF6E/67452AA0" Ref="C99" Part="1"
...
@@ -1161,7 +1166,7 @@ bool SCH_COMPONENT::Load( LINE_READER& aLine, wxString& aErrorMsg )
...
@@ -1161,7 +1166,7 @@ bool SCH_COMPONENT::Load( LINE_READER& aLine, wxString& aErrorMsg )
* C99 is the reference given this path.
* C99 is the reference given this path.
*/
*/
int
ii
;
int
ii
;
ptcar
=
((
char
*
)
aLine
)
+
2
;
ptcar
=
line
+
2
;
//copy the path.
//copy the path.
ii
=
ReadDelimitedText
(
Name1
,
ptcar
,
255
);
ii
=
ReadDelimitedText
(
Name1
,
ptcar
,
255
);
...
@@ -1183,7 +1188,7 @@ bool SCH_COMPONENT::Load( LINE_READER& aLine, wxString& aErrorMsg )
...
@@ -1183,7 +1188,7 @@ bool SCH_COMPONENT::Load( LINE_READER& aLine, wxString& aErrorMsg )
AddHierarchicalReference
(
path
,
ref
,
multi
);
AddHierarchicalReference
(
path
,
ref
,
multi
);
GetField
(
REFERENCE
)
->
m_Text
=
ref
;
GetField
(
REFERENCE
)
->
m_Text
=
ref
;
}
}
else
if
(
((
char
*
)
aLine
)
[
0
]
==
'F'
)
else
if
(
line
[
0
]
==
'F'
)
{
{
int
fieldNdx
;
int
fieldNdx
;
...
@@ -1223,7 +1228,7 @@ bool SCH_COMPONENT::Load( LINE_READER& aLine, wxString& aErrorMsg )
...
@@ -1223,7 +1228,7 @@ bool SCH_COMPONENT::Load( LINE_READER& aLine, wxString& aErrorMsg )
}
}
}
}
fieldNdx
=
atoi
(
((
char
*
)
aLine
)
+
2
);
fieldNdx
=
atoi
(
line
+
2
);
ReadDelimitedText
(
FieldUserName
,
ptcar
,
sizeof
(
FieldUserName
)
);
ReadDelimitedText
(
FieldUserName
,
ptcar
,
sizeof
(
FieldUserName
)
);
...
@@ -1310,7 +1315,7 @@ bool SCH_COMPONENT::Load( LINE_READER& aLine, wxString& aErrorMsg )
...
@@ -1310,7 +1315,7 @@ bool SCH_COMPONENT::Load( LINE_READER& aLine, wxString& aErrorMsg )
break
;
break
;
}
}
if
(
sscanf
(
((
char
*
)
aLine
)
,
"%d %d %d"
,
&
m_unit
,
&
m_Pos
.
x
,
&
m_Pos
.
y
)
!=
3
)
if
(
sscanf
(
line
,
"%d %d %d"
,
&
m_unit
,
&
m_Pos
.
x
,
&
m_Pos
.
y
)
!=
3
)
{
{
aErrorMsg
.
Printf
(
wxT
(
"Component unit & pos error at line %d, aborted"
),
aErrorMsg
.
Printf
(
wxT
(
"Component unit & pos error at line %d, aborted"
),
aLine
.
LineNumber
()
);
aLine
.
LineNumber
()
);
...
@@ -1334,7 +1339,9 @@ bool SCH_COMPONENT::Load( LINE_READER& aLine, wxString& aErrorMsg )
...
@@ -1334,7 +1339,9 @@ bool SCH_COMPONENT::Load( LINE_READER& aLine, wxString& aErrorMsg )
if
(
!
aLine
.
ReadLine
()
)
if
(
!
aLine
.
ReadLine
()
)
return
false
;
return
false
;
if
(
strnicmp
(
"$End"
,
((
char
*
)
aLine
),
4
)
!=
0
)
line
=
aLine
.
Line
();
if
(
strnicmp
(
"$End"
,
line
,
4
)
!=
0
)
{
{
aErrorMsg
.
Printf
(
wxT
(
"Component End expected at line %d, aborted"
),
aErrorMsg
.
Printf
(
wxT
(
"Component End expected at line %d, aborted"
),
aLine
.
LineNumber
()
);
aLine
.
LineNumber
()
);
...
...
include/kicad_string.h
View file @
bc16d9d7
...
@@ -17,7 +17,7 @@ char* strlower( char* Text );
...
@@ -17,7 +17,7 @@ char* strlower( char* Text );
/**
/**
* Function ReadDelimitedText
* Function ReadDelimitedText
*
extract
s bytes from @a aSource delimited string segment to @a aDest buffer.
*
copie
s bytes from @a aSource delimited string segment to @a aDest buffer.
* The extracted string will be null terminated even if truncation is necessary
* The extracted string will be null terminated even if truncation is necessary
* because aDestSize was not large enough.
* because aDestSize was not large enough.
*
*
...
...
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