Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
magicseteditor
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
magicseteditor
Commits
2b28977f
Commit
2b28977f
authored
Dec 25, 2006
by
twanvl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rewritten retrying part of reader, it is now implemented how it should have been from the start.
parent
610a52e6
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
61 additions
and
44 deletions
+61
-44
data/en.mse-locale/locale
data/en.mse-locale/locale
+1
-1
src/data/format/clipboard.cpp
src/data/format/clipboard.cpp
+1
-1
src/data/game.cpp
src/data/game.cpp
+1
-1
src/data/set.cpp
src/data/set.cpp
+1
-1
src/data/settings.cpp
src/data/settings.cpp
+1
-1
src/data/stylesheet.cpp
src/data/stylesheet.cpp
+1
-1
src/gui/symbol/window.cpp
src/gui/symbol/window.cpp
+2
-2
src/render/text/viewer.cpp
src/render/text/viewer.cpp
+1
-0
src/render/value/choice.cpp
src/render/value/choice.cpp
+1
-0
src/script/functions.cpp
src/script/functions.cpp
+1
-1
src/util/alignment.cpp
src/util/alignment.cpp
+1
-1
src/util/io/package.cpp
src/util/io/package.cpp
+1
-1
src/util/io/package.hpp
src/util/io/package.hpp
+1
-1
src/util/io/reader.cpp
src/util/io/reader.cpp
+20
-14
src/util/io/reader.hpp
src/util/io/reader.hpp
+26
-17
src/util/version.cpp
src/util/version.cpp
+1
-1
No files found.
data/en.mse-locale/locale
View file @
2b28977f
full
name
:
English
full
name
:
English
##############################################################
Menu
items
##############################################################
Menu
items
menu
menu
:
file
:
&
File
file
:
&
File
new
set
:
&
New
...
Ctrl
+
N
new
set
:
&
New
...
Ctrl
+
N
open
set
:
&
Open
...
Ctrl
+
O
open
set
:
&
Open
...
Ctrl
+
O
...
...
src/data/format/clipboard.cpp
View file @
2b28977f
...
@@ -31,7 +31,7 @@ void deserialize_from_clipboard(T& object, Package& package, const String& data)
...
@@ -31,7 +31,7 @@ void deserialize_from_clipboard(T& object, Package& package, const String& data)
shared_ptr
<
wxStringInputStream
>
stream
(
new
wxStringInputStream
(
data
)
);
shared_ptr
<
wxStringInputStream
>
stream
(
new
wxStringInputStream
(
data
)
);
Reader
reader
(
stream
,
_
(
"clipboard"
));
Reader
reader
(
stream
,
_
(
"clipboard"
));
WITH_DYNAMIC_ARG
(
clipboard_package
,
&
package
);
WITH_DYNAMIC_ARG
(
clipboard_package
,
&
package
);
reader
.
handle
(
object
);
reader
.
handle
_greedy
(
object
);
}
}
// ----------------------------------------------------------------------------- : CardDataObject
// ----------------------------------------------------------------------------- : CardDataObject
...
...
src/data/game.cpp
View file @
2b28977f
...
@@ -76,7 +76,7 @@ void addStatsDimensionsForFields();
...
@@ -76,7 +76,7 @@ void addStatsDimensionsForFields();
// special behaviour of reading/writing GamePs: only read/write the name
// special behaviour of reading/writing GamePs: only read/write the name
void
Reader
::
handle
(
GameP
&
game
)
{
void
Reader
::
handle
(
GameP
&
game
)
{
game
=
Game
::
byName
(
value
);
game
=
Game
::
byName
(
getValue
()
);
}
}
void
Writer
::
handle
(
const
GameP
&
game
)
{
void
Writer
::
handle
(
const
GameP
&
game
)
{
if
(
game
)
handle
(
game
->
name
());
if
(
game
)
handle
(
game
->
name
());
...
...
src/data/set.cpp
View file @
2b28977f
...
@@ -223,7 +223,7 @@ IndexMap<FieldP, ValueP>& Set::stylingDataFor(const StyleSheet& stylesheet) {
...
@@ -223,7 +223,7 @@ IndexMap<FieldP, ValueP>& Set::stylingDataFor(const StyleSheet& stylesheet) {
// we delayed the reading of the data, read it now
// we delayed the reading of the data, read it now
styling
->
data
.
init
(
stylesheet
.
styling_fields
);
styling
->
data
.
init
(
stylesheet
.
styling_fields
);
Reader
reader
(
new_shared1
<
wxStringInputStream
>
(
styling
->
unread_data
),
_
(
"styling data of "
)
+
stylesheet
.
stylesheetName
());
Reader
reader
(
new_shared1
<
wxStringInputStream
>
(
styling
->
unread_data
),
_
(
"styling data of "
)
+
stylesheet
.
stylesheetName
());
reader
.
handle
(
styling
->
data
);
reader
.
handle
_greedy
(
styling
->
data
);
styling
->
unread_data
.
clear
();
styling
->
unread_data
.
clear
();
}
}
return
styling
->
data
;
return
styling
->
data
;
...
...
src/data/settings.cpp
View file @
2b28977f
...
@@ -170,7 +170,7 @@ void Settings::read() {
...
@@ -170,7 +170,7 @@ void Settings::read() {
shared_ptr
<
wxFileInputStream
>
file
=
new_shared1
<
wxFileInputStream
>
(
filename
);
shared_ptr
<
wxFileInputStream
>
file
=
new_shared1
<
wxFileInputStream
>
(
filename
);
if
(
!
file
->
Ok
())
return
;
// failure is not an error
if
(
!
file
->
Ok
())
return
;
// failure is not an error
Reader
reader
(
file
,
filename
);
Reader
reader
(
file
,
filename
);
reader
.
handle
(
*
this
);
reader
.
handle
_greedy
(
*
this
);
}
}
}
}
...
...
src/data/stylesheet.cpp
View file @
2b28977f
...
@@ -87,7 +87,7 @@ void Reader::handle(StyleSheetP& stylesheet) {
...
@@ -87,7 +87,7 @@ void Reader::handle(StyleSheetP& stylesheet) {
if
(
!
game_for_reading
())
{
if
(
!
game_for_reading
())
{
throw
InternalError
(
_
(
"game_for_reading not set"
));
throw
InternalError
(
_
(
"game_for_reading not set"
));
}
}
stylesheet
=
StyleSheet
::
byGameAndName
(
*
game_for_reading
(),
value
);
stylesheet
=
StyleSheet
::
byGameAndName
(
*
game_for_reading
(),
getValue
()
);
}
}
void
Writer
::
handle
(
const
StyleSheetP
&
stylesheet
)
{
void
Writer
::
handle
(
const
StyleSheetP
&
stylesheet
)
{
if
(
stylesheet
)
handle
(
stylesheet
->
stylesheetName
());
if
(
stylesheet
)
handle
(
stylesheet
->
stylesheetName
());
...
...
src/gui/symbol/window.cpp
View file @
2b28977f
...
@@ -29,7 +29,7 @@ SymbolWindow::SymbolWindow(Window* parent, const String& filename) {
...
@@ -29,7 +29,7 @@ SymbolWindow::SymbolWindow(Window* parent, const String& filename) {
// open file
// open file
Reader
reader
(
filename
);
Reader
reader
(
filename
);
SymbolP
symbol
;
SymbolP
symbol
;
reader
.
handle
(
symbol
);
reader
.
handle
_greedy
(
symbol
);
init
(
parent
,
symbol
);
init
(
parent
,
symbol
);
}
}
...
@@ -151,7 +151,7 @@ void SymbolWindow::onFileOpen(wxCommandEvent& ev) {
...
@@ -151,7 +151,7 @@ void SymbolWindow::onFileOpen(wxCommandEvent& ev) {
//% symbol = importSymbol(wxImage(name));
//% symbol = importSymbol(wxImage(name));
}
else
{
}
else
{
Reader
reader
(
new_shared1
<
wxFileInputStream
>
(
name
),
name
);
Reader
reader
(
new_shared1
<
wxFileInputStream
>
(
name
),
name
);
reader
.
handle
(
symbol
);
reader
.
handle
_greedy
(
symbol
);
}
}
// show...
// show...
parts
->
setSymbol
(
symbol
);
parts
->
setSymbol
(
symbol
);
...
...
src/render/text/viewer.cpp
View file @
2b28977f
...
@@ -174,6 +174,7 @@ struct CompareTop {
...
@@ -174,6 +174,7 @@ struct CompareTop {
};
};
size_t
TextViewer
::
indexAt
(
const
RealPoint
&
pos
)
const
{
size_t
TextViewer
::
indexAt
(
const
RealPoint
&
pos
)
const
{
// 1. find the line
// 1. find the line
if
(
lines
.
empty
())
return
0
;
vector
<
Line
>::
const_iterator
l
=
lower_bound
(
lines
.
begin
(),
lines
.
end
(),
pos
.
y
,
CompareTop
());
vector
<
Line
>::
const_iterator
l
=
lower_bound
(
lines
.
begin
(),
lines
.
end
(),
pos
.
y
,
CompareTop
());
if
(
l
!=
lines
.
begin
())
l
--
;
if
(
l
!=
lines
.
begin
())
l
--
;
assert
(
l
!=
lines
.
end
());
assert
(
l
!=
lines
.
end
());
...
...
src/render/value/choice.cpp
View file @
2b28977f
...
@@ -14,6 +14,7 @@
...
@@ -14,6 +14,7 @@
void
ChoiceValueViewer
::
draw
(
RotatedDC
&
dc
)
{
void
ChoiceValueViewer
::
draw
(
RotatedDC
&
dc
)
{
drawFieldBorder
(
dc
);
drawFieldBorder
(
dc
);
if
(
style
().
render_style
&
RENDER_HIDDEN
)
return
;
if
(
value
().
value
().
empty
())
return
;
if
(
value
().
value
().
empty
())
return
;
double
margin
=
0
;
double
margin
=
0
;
if
(
style
().
render_style
&
RENDER_IMAGE
)
{
if
(
style
().
render_style
&
RENDER_IMAGE
)
{
...
...
src/script/functions.cpp
View file @
2b28977f
...
@@ -495,7 +495,7 @@ SCRIPT_FUNCTION_DEP(combined_editor) {
...
@@ -495,7 +495,7 @@ SCRIPT_FUNCTION_DEP(combined_editor) {
pos
=
value
.
find
(
_
(
"<sep"
));
pos
=
value
.
find
(
_
(
"<sep"
));
}
}
value_parts
.
push_back
(
value
);
value_parts
.
push_back
(
value
);
if
(
value_parts
.
size
()
<
values
.
size
())
value_parts
.
resize
(
values
.
size
());
value_parts
.
resize
(
values
.
size
());
// TODO: what if there are more value_parts than values?
// update the values if our input value is newer?
// update the values if our input value is newer?
Age
new_value_update
=
last_update_age
();
Age
new_value_update
=
last_update_age
();
FOR_EACH_2
(
v
,
values
,
nv
,
value_parts
)
{
FOR_EACH_2
(
v
,
values
,
nv
,
value_parts
)
{
...
...
src/util/alignment.cpp
View file @
2b28977f
...
@@ -71,7 +71,7 @@ String to_string(Alignment align) {
...
@@ -71,7 +71,7 @@ String to_string(Alignment align) {
// we need custom io, because there can be both a horizontal and a vertical component
// we need custom io, because there can be both a horizontal and a vertical component
template
<>
void
Reader
::
handle
(
Alignment
&
align
)
{
template
<>
void
Reader
::
handle
(
Alignment
&
align
)
{
align
=
from_string
(
value
);
align
=
from_string
(
getValue
()
);
}
}
template
<>
void
Writer
::
handle
(
const
Alignment
&
align
)
{
template
<>
void
Writer
::
handle
(
const
Alignment
&
align
)
{
handle
(
to_string
(
align
));
handle
(
to_string
(
align
));
...
...
src/util/io/package.cpp
View file @
2b28977f
...
@@ -424,7 +424,7 @@ void Packaged::open(const String& package) {
...
@@ -424,7 +424,7 @@ void Packaged::open(const String& package) {
Package
::
open
(
package
);
Package
::
open
(
package
);
Reader
reader
(
openIn
(
typeName
()),
absoluteFilename
()
+
_
(
"/"
)
+
typeName
());
Reader
reader
(
openIn
(
typeName
()),
absoluteFilename
()
+
_
(
"/"
)
+
typeName
());
try
{
try
{
reader
.
handle
(
*
this
);
reader
.
handle
_greedy
(
*
this
);
validate
(
reader
.
file_app_version
);
validate
(
reader
.
file_app_version
);
}
catch
(
const
ParseError
&
err
)
{
}
catch
(
const
ParseError
&
err
)
{
throw
FileParseError
(
err
.
what
(),
absoluteFilename
()
+
_
(
"/"
)
+
typeName
());
// more detailed message
throw
FileParseError
(
err
.
what
(),
absoluteFilename
()
+
_
(
"/"
)
+
typeName
());
// more detailed message
...
...
src/util/io/package.hpp
View file @
2b28977f
...
@@ -117,7 +117,7 @@ class Package {
...
@@ -117,7 +117,7 @@ class Package {
void
readFile
(
const
String
&
file
,
T
&
obj
)
{
void
readFile
(
const
String
&
file
,
T
&
obj
)
{
Reader
reader
(
openIn
(
file
),
absoluteFilename
()
+
_
(
"/"
)
+
file
);
Reader
reader
(
openIn
(
file
),
absoluteFilename
()
+
_
(
"/"
)
+
file
);
try
{
try
{
reader
.
handle
(
obj
);
reader
.
handle
_greedy
(
obj
);
}
catch
(
const
ParseError
&
err
)
{
}
catch
(
const
ParseError
&
err
)
{
throw
FileParseError
(
err
.
what
(),
absoluteFilename
()
+
_
(
"/"
)
+
file
);
// more detailed message
throw
FileParseError
(
err
.
what
(),
absoluteFilename
()
+
_
(
"/"
)
+
file
);
// more detailed message
}
}
...
...
src/util/io/reader.cpp
View file @
2b28977f
...
@@ -81,6 +81,7 @@ void Reader::exitBlock() {
...
@@ -81,6 +81,7 @@ void Reader::exitBlock() {
while
(
indent
>
expected_indent
)
{
while
(
indent
>
expected_indent
)
{
moveNext
();
moveNext
();
}
}
handled
=
true
;
}
}
void
Reader
::
moveNext
()
{
void
Reader
::
moveNext
()
{
...
@@ -110,12 +111,12 @@ void Reader::readLine() {
...
@@ -110,12 +111,12 @@ void Reader::readLine() {
}
}
// read key / value
// read key / value
size_t
pos
=
line
.
find_first_of
(
_
(
':'
),
indent
);
size_t
pos
=
line
.
find_first_of
(
_
(
':'
),
indent
);
if
(
!
pos
||
line
.
GetChar
(
indent
)
==
_
(
'#'
))
{
if
(
trim
(
line
).
empty
()
||
line
.
GetChar
(
indent
)
==
_
(
'#'
))
{
// empty line or comment
// empty line or comment
key
.
clear
();
key
.
clear
();
return
;
return
;
}
}
if
(
key
.
empty
()
&&
input
->
Eof
())
{
if
(
input
->
Eof
())
{
// end of file
// end of file
indent
=
-
1
;
indent
=
-
1
;
return
;
return
;
...
@@ -147,9 +148,10 @@ void Reader::unknownKey() {
...
@@ -147,9 +148,10 @@ void Reader::unknownKey() {
// ----------------------------------------------------------------------------- : Handling basic types
// ----------------------------------------------------------------------------- : Handling basic types
template
<>
void
Reader
::
handle
(
String
&
s
)
{
const
String
&
Reader
::
getValue
()
{
handled
=
true
;
if
(
!
multi_line_str
.
empty
())
{
if
(
!
multi_line_str
.
empty
())
{
s
=
multi_line_str
;
return
multi_line_str
;
}
else
if
(
value
.
empty
())
{
}
else
if
(
value
.
empty
())
{
// a multiline string
// a multiline string
bool
first
=
true
;
bool
first
=
true
;
...
@@ -161,50 +163,54 @@ template <> void Reader::handle(String& s) {
...
@@ -161,50 +163,54 @@ template <> void Reader::handle(String& s) {
multi_line_str
+=
line
.
substr
(
expected_indent
);
// strip expected indent
multi_line_str
+=
line
.
substr
(
expected_indent
);
// strip expected indent
readLine
();
readLine
();
}
}
// moveNext(), but without emptying multi
LineS
tr
// moveNext(), but without emptying multi
_line_s
tr
just_opened
=
false
;
just_opened
=
false
;
while
(
key
.
empty
()
&&
!
input
->
Eof
())
{
while
(
key
.
empty
()
&&
!
input
->
Eof
())
{
readLine
();
readLine
();
}
}
s
=
multi_line_str
;
return
multi_line_str
;
}
else
{
}
else
{
s
=
value
;
return
value
;
}
}
}
}
template
<>
void
Reader
::
handle
(
String
&
s
)
{
s
=
getValue
();
}
template
<>
void
Reader
::
handle
(
int
&
i
)
{
template
<>
void
Reader
::
handle
(
int
&
i
)
{
long
l
=
0
;
long
l
=
0
;
value
.
ToLong
(
&
l
);
getValue
()
.
ToLong
(
&
l
);
i
=
l
;
i
=
l
;
}
}
template
<>
void
Reader
::
handle
(
unsigned
int
&
i
)
{
template
<>
void
Reader
::
handle
(
unsigned
int
&
i
)
{
long
l
=
0
;
long
l
=
0
;
value
.
ToLong
(
&
l
);
getValue
()
.
ToLong
(
&
l
);
i
=
abs
(
l
);
// abs, because it will seem strange if -1 comes out as MAX_INT
i
=
abs
(
l
);
// abs, because it will seem strange if -1 comes out as MAX_INT
}
}
template
<>
void
Reader
::
handle
(
double
&
d
)
{
template
<>
void
Reader
::
handle
(
double
&
d
)
{
value
.
ToDouble
(
&
d
);
getValue
()
.
ToDouble
(
&
d
);
}
}
template
<>
void
Reader
::
handle
(
bool
&
b
)
{
template
<>
void
Reader
::
handle
(
bool
&
b
)
{
b
=
(
value
==
_
(
"true"
)
||
value
==
_
(
"1"
)
||
value
==
_
(
"yes"
));
b
=
(
getValue
()
==
_
(
"true"
)
||
getValue
()
==
_
(
"1"
)
||
getValue
()
==
_
(
"yes"
));
}
}
// ----------------------------------------------------------------------------- : Handling less basic util types
// ----------------------------------------------------------------------------- : Handling less basic util types
template
<>
void
Reader
::
handle
(
Vector2D
&
vec
)
{
template
<>
void
Reader
::
handle
(
Vector2D
&
vec
)
{
if
(
!
wxSscanf
(
value
.
c_str
(),
_
(
"(%lf,%lf)"
),
&
vec
.
x
,
&
vec
.
y
))
{
if
(
!
wxSscanf
(
getValue
()
.
c_str
(),
_
(
"(%lf,%lf)"
),
&
vec
.
x
,
&
vec
.
y
))
{
throw
ParseError
(
_
(
"Expected (x,y)"
));
throw
ParseError
(
_
(
"Expected (x,y)"
));
}
}
}
}
template
<>
void
Reader
::
handle
(
Color
&
col
)
{
template
<>
void
Reader
::
handle
(
Color
&
col
)
{
UInt
r
,
g
,
b
;
UInt
r
,
g
,
b
;
if
(
wxSscanf
(
value
.
c_str
(),
_
(
"rgb(%u,%u,%u)"
),
&
r
,
&
g
,
&
b
))
{
if
(
wxSscanf
(
getValue
()
.
c_str
(),
_
(
"rgb(%u,%u,%u)"
),
&
r
,
&
g
,
&
b
))
{
col
.
Set
(
r
,
g
,
b
);
col
.
Set
(
r
,
g
,
b
);
}
}
}
}
template
<>
void
Reader
::
handle
(
FileName
&
f
)
{
template
<>
void
Reader
::
handle
(
FileName
&
f
)
{
if
(
clipboard_package
())
{
if
(
clipboard_package
())
{
String
str
;
handle
(
str
);
String
str
=
getValue
(
);
if
(
!
str
.
empty
())
{
if
(
!
str
.
empty
())
{
// copy file into current package
// copy file into current package
try
{
try
{
...
...
src/util/io/reader.hpp
View file @
2b28977f
...
@@ -62,11 +62,23 @@ class Reader {
...
@@ -62,11 +62,23 @@ class Reader {
void
showWarnings
();
void
showWarnings
();
// --------------------------------------------------- : Handling objects
// --------------------------------------------------- : Handling objects
/// Handle an object that can read as much as it can eat
template
<
typename
T
>
void
handle_greedy
(
T
&
object
)
{
do
{
// UInt l = line_number;
handled
=
false
;
handle
(
object
);
// if (l == line_number && !handled) unknownKey(object);
if
(
!
handled
)
unknownKey
(
object
);
}
while
(
indent
>=
expected_indent
);
}
/// Handle an object: read it if it's name matches
/// Handle an object: read it if it's name matches
template
<
typename
T
>
template
<
typename
T
>
void
handle
(
const
Char
*
name
,
T
&
object
)
{
void
handle
(
const
Char
*
name
,
T
&
object
)
{
if
(
enterBlock
(
name
))
{
if
(
enterBlock
(
name
))
{
handle
(
object
);
handle
_greedy
(
object
);
exitBlock
();
exitBlock
();
}
}
}
}
...
@@ -100,6 +112,8 @@ class Reader {
...
@@ -100,6 +112,8 @@ class Reader {
String
key
,
value
;
String
key
,
value
;
/// A string spanning multiple lines
/// A string spanning multiple lines
String
multi_line_str
;
String
multi_line_str
;
/// Has the current line been handled?
bool
handled
;
/// Indentation of the last line we read
/// Indentation of the last line we read
int
indent
;
int
indent
;
/// Indentation of the block we are in
/// Indentation of the block we are in
...
@@ -132,13 +146,16 @@ class Reader {
...
@@ -132,13 +146,16 @@ class Reader {
/// Reads the next line from the input, and stores it in line/key/value/indent
/// Reads the next line from the input, and stores it in line/key/value/indent
void
readLine
();
void
readLine
();
/// Return the value on the current line
const
String
&
getValue
();
/// No line was read, because nothing mathes the current key
/// No line was read, because nothing mathes the current key
/** Maybe the key is "include file" */
/** Maybe the key is "include file" */
template
<
typename
T
>
template
<
typename
T
>
void
unknownKey
(
T
&
v
)
{
void
unknownKey
(
T
&
v
)
{
if
(
key
==
_
(
"include file"
))
{
if
(
key
==
_
(
"include file"
))
{
Reader
reader
(
value
);
Reader
reader
(
value
);
reader
.
handle
(
v
);
reader
.
handle
_greedy
(
v
);
moveNext
();
moveNext
();
}
else
{
}
else
{
unknownKey
();
unknownKey
();
...
@@ -166,7 +183,7 @@ void Reader::handle(const Char* name, vector<T>& vector) {
...
@@ -166,7 +183,7 @@ void Reader::handle(const Char* name, vector<T>& vector) {
String
vectorKey
=
singular_form
(
name
);
String
vectorKey
=
singular_form
(
name
);
while
(
enterBlock
(
vectorKey
))
{
while
(
enterBlock
(
vectorKey
))
{
vector
.
resize
(
vector
.
size
()
+
1
);
vector
.
resize
(
vector
.
size
()
+
1
);
handle
(
vector
.
back
());
handle
_greedy
(
vector
.
back
());
update_index
(
vector
.
back
(),
vector
.
size
()
-
1
);
// update index for IndexMap
update_index
(
vector
.
back
(),
vector
.
size
()
-
1
);
// update index for IndexMap
exitBlock
();
exitBlock
();
}
}
...
@@ -187,20 +204,16 @@ void Reader::handle(map<String, V>& m) {
...
@@ -187,20 +204,16 @@ void Reader::handle(map<String, V>& m) {
just_opened
=
true
;
just_opened
=
true
;
expected_indent
+=
1
;
expected_indent
+=
1
;
// now read the value
// now read the value
handle
(
m
[
key
]);
handle
_greedy
(
m
[
key
]);
exitBlock
();
exitBlock
();
}
}
}
}
template
<
typename
K
,
typename
V
>
template
<
typename
K
,
typename
V
>
void
Reader
::
handle
(
IndexMap
<
K
,
V
>&
m
)
{
void
Reader
::
handle
(
IndexMap
<
K
,
V
>&
m
)
{
//do {
for
(
typename
IndexMap
<
K
,
V
>::
iterator
it
=
m
.
begin
()
;
it
!=
m
.
end
()
;
++
it
)
{
// UInt l = line_number;
handle
(
get_key_name
(
*
it
).
c_str
(),
*
it
);
for
(
typename
IndexMap
<
K
,
V
>::
iterator
it
=
m
.
begin
()
;
it
!=
m
.
end
()
;
++
it
)
{
}
handle
(
get_key_name
(
*
it
).
c_str
(),
*
it
);
}
// if (l == line_number) unknownKey(m);
//} while (indent >= expected_indent);
}
}
// ----------------------------------------------------------------------------- : Reflection
// ----------------------------------------------------------------------------- : Reflection
...
@@ -208,11 +221,7 @@ void Reader::handle(IndexMap<K,V>& m) {
...
@@ -208,11 +221,7 @@ void Reader::handle(IndexMap<K,V>& m) {
/// Implement reflection as used by Reader
/// Implement reflection as used by Reader
#define REFLECT_OBJECT_READER(Cls) \
#define REFLECT_OBJECT_READER(Cls) \
template
<>
void
Reader
::
handle
<
Cls
>
(
Cls
&
object
)
{
\
template
<>
void
Reader
::
handle
<
Cls
>
(
Cls
&
object
)
{
\
do
{
\
object
.
reflect
(
*
this
);
\
UInt
l
=
line_number
;
\
object
.
reflect
(
*
this
);
\
if
(
l
==
line_number
)
unknownKey
(
object
);
\
}
while
(
indent
>=
expected_indent
);
\
}
\
}
\
void
Cls
::
reflect
(
Reader
&
reader
)
{
\
void
Cls
::
reflect
(
Reader
&
reader
)
{
\
reflect_impl
(
reader
);
\
reflect_impl
(
reader
);
\
...
@@ -223,7 +232,7 @@ void Reader::handle(IndexMap<K,V>& m) {
...
@@ -223,7 +232,7 @@ void Reader::handle(IndexMap<K,V>& m) {
/// Implement enum reflection as used by Reader
/// Implement enum reflection as used by Reader
#define REFLECT_ENUM_READER(Enum) \
#define REFLECT_ENUM_READER(Enum) \
template
<>
void
Reader
::
handle
<
Enum
>
(
Enum
&
enum_
)
{
\
template
<>
void
Reader
::
handle
<
Enum
>
(
Enum
&
enum_
)
{
\
EnumReader
reader
(
value
);
\
EnumReader
reader
(
getValue
());
\
reflect_
##
Enum
(
enum_
,
reader
);
\
reflect_
##
Enum
(
enum_
,
reader
);
\
if
(
!
reader
.
isDone
())
{
\
if
(
!
reader
.
isDone
())
{
\
/* warning: unknown value */
\
/* warning: unknown value */
\
...
...
src/util/version.cpp
View file @
2b28977f
...
@@ -29,7 +29,7 @@ Version Version::fromString(const String& version) {
...
@@ -29,7 +29,7 @@ Version Version::fromString(const String& version) {
template
<>
void
Reader
::
handle
(
Version
&
v
)
{
template
<>
void
Reader
::
handle
(
Version
&
v
)
{
v
=
Version
::
fromString
(
value
);
v
=
Version
::
fromString
(
getValue
()
);
}
}
template
<>
void
Writer
::
handle
(
const
Version
&
v
)
{
template
<>
void
Writer
::
handle
(
const
Version
&
v
)
{
handle
(
v
.
toString
());
handle
(
v
.
toString
());
...
...
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