Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
yaml-cpp
Commits
3a88c4b4
Commit
3a88c4b4
authored
Sep 13, 2011
by
Jesse Beder
Browse files
Added IsNull, IsScalar, IsSequence, IsMap functions, so you don't have to query Type()
parent
69af9b42
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
34 additions
and
30 deletions
+34
-30
include/yaml-cpp/node/node.h
include/yaml-cpp/node/node.h
+4
-0
test/new-api/nodetests.cpp
test/new-api/nodetests.cpp
+14
-14
test/new-api/spectests.cpp
test/new-api/spectests.cpp
+16
-16
No files found.
include/yaml-cpp/node/node.h
View file @
3a88c4b4
...
...
@@ -29,6 +29,10 @@ namespace YAML
~
Node
();
NodeType
::
value
Type
()
const
;
bool
IsNull
()
const
{
return
Type
()
==
NodeType
::
Null
;
}
bool
IsScalar
()
const
{
return
Type
()
==
NodeType
::
Scalar
;
}
bool
IsSequence
()
const
{
return
Type
()
==
NodeType
::
Sequence
;
}
bool
IsMap
()
const
{
return
Type
()
==
NodeType
::
Map
;
}
// access
template
<
typename
T
>
const
T
as
()
const
;
...
...
test/new-api/nodetests.cpp
View file @
3a88c4b4
...
...
@@ -21,7 +21,7 @@ namespace Test
TEST
SimpleScalar
()
{
YAML
::
Node
node
=
YAML
::
Node
(
"Hello, World!"
);
YAML_ASSERT
(
node
.
Type
()
==
YAML
::
NodeType
::
Scalar
);
YAML_ASSERT
(
node
.
Is
Scalar
()
);
YAML_ASSERT
(
node
.
as
<
std
::
string
>
()
==
"Hello, World!"
);
return
true
;
}
...
...
@@ -29,7 +29,7 @@ namespace Test
TEST
IntScalar
()
{
YAML
::
Node
node
=
YAML
::
Node
(
15
);
YAML_ASSERT
(
node
.
Type
()
==
YAML
::
NodeType
::
Scalar
);
YAML_ASSERT
(
node
.
Is
Scalar
()
);
YAML_ASSERT
(
node
.
as
<
int
>
()
==
15
);
return
true
;
}
...
...
@@ -40,12 +40,12 @@ namespace Test
node
.
append
(
10
);
node
.
append
(
"foo"
);
node
.
append
(
"monkey"
);
YAML_ASSERT
(
node
.
Type
()
==
YAML
::
NodeType
::
Sequence
);
YAML_ASSERT
(
node
.
Is
Sequence
()
);
YAML_ASSERT
(
node
.
size
()
==
3
);
YAML_ASSERT
(
node
[
0
].
as
<
int
>
()
==
10
);
YAML_ASSERT
(
node
[
1
].
as
<
std
::
string
>
()
==
"foo"
);
YAML_ASSERT
(
node
[
2
].
as
<
std
::
string
>
()
==
"monkey"
);
YAML_ASSERT
(
node
.
Type
()
==
YAML
::
NodeType
::
Sequence
);
YAML_ASSERT
(
node
.
Is
Sequence
()
);
return
true
;
}
...
...
@@ -55,12 +55,12 @@ namespace Test
node
[
0
]
=
10
;
node
[
1
]
=
"foo"
;
node
[
2
]
=
"monkey"
;
YAML_ASSERT
(
node
.
Type
()
==
YAML
::
NodeType
::
Sequence
);
YAML_ASSERT
(
node
.
Is
Sequence
()
);
YAML_ASSERT
(
node
.
size
()
==
3
);
YAML_ASSERT
(
node
[
0
].
as
<
int
>
()
==
10
);
YAML_ASSERT
(
node
[
1
].
as
<
std
::
string
>
()
==
"foo"
);
YAML_ASSERT
(
node
[
2
].
as
<
std
::
string
>
()
==
"monkey"
);
YAML_ASSERT
(
node
.
Type
()
==
YAML
::
NodeType
::
Sequence
);
YAML_ASSERT
(
node
.
Is
Sequence
()
);
return
true
;
}
...
...
@@ -68,7 +68,7 @@ namespace Test
{
YAML
::
Node
node
;
node
[
"key"
]
=
"value"
;
YAML_ASSERT
(
node
.
Type
()
==
YAML
::
NodeType
::
Map
);
YAML_ASSERT
(
node
.
Is
Map
()
);
YAML_ASSERT
(
node
[
"key"
].
as
<
std
::
string
>
()
==
"value"
);
YAML_ASSERT
(
node
.
size
()
==
1
);
return
true
;
...
...
@@ -79,7 +79,7 @@ namespace Test
YAML
::
Node
node
;
node
[
"key"
]
=
"value"
;
node
[
"undefined"
];
YAML_ASSERT
(
node
.
Type
()
==
YAML
::
NodeType
::
Map
);
YAML_ASSERT
(
node
.
Is
Map
()
);
YAML_ASSERT
(
node
[
"key"
].
as
<
std
::
string
>
()
==
"value"
);
YAML_ASSERT
(
node
.
size
()
==
1
);
...
...
@@ -193,7 +193,7 @@ namespace Test
{
YAML
::
Node
node
;
node
[
0
]
=
node
;
YAML_ASSERT
(
node
.
Type
()
==
YAML
::
NodeType
::
Sequence
);
YAML_ASSERT
(
node
.
Is
Sequence
()
);
YAML_ASSERT
(
node
.
size
()
==
1
);
YAML_ASSERT
(
node
[
0
]
==
node
);
YAML_ASSERT
(
node
[
0
][
0
]
==
node
);
...
...
@@ -205,7 +205,7 @@ namespace Test
{
YAML
::
Node
node
;
node
[
"key"
]
=
node
;
YAML_ASSERT
(
node
.
Type
()
==
YAML
::
NodeType
::
Map
);
YAML_ASSERT
(
node
.
Is
Map
()
);
YAML_ASSERT
(
node
.
size
()
==
1
);
YAML_ASSERT
(
node
[
"key"
]
==
node
);
YAML_ASSERT
(
node
[
"key"
][
"key"
]
==
node
);
...
...
@@ -217,7 +217,7 @@ namespace Test
{
YAML
::
Node
node
;
node
[
node
]
=
"value"
;
YAML_ASSERT
(
node
.
Type
()
==
YAML
::
NodeType
::
Map
);
YAML_ASSERT
(
node
.
Is
Map
()
);
YAML_ASSERT
(
node
.
size
()
==
1
);
YAML_ASSERT
(
node
[
node
].
as
<
std
::
string
>
()
==
"value"
);
return
true
;
...
...
@@ -227,7 +227,7 @@ namespace Test
{
YAML
::
Node
node
;
node
[
node
]
=
node
;
YAML_ASSERT
(
node
.
Type
()
==
YAML
::
NodeType
::
Map
);
YAML_ASSERT
(
node
.
Is
Map
()
);
YAML_ASSERT
(
node
.
size
()
==
1
);
YAML_ASSERT
(
node
[
node
]
==
node
);
YAML_ASSERT
(
node
[
node
][
node
]
==
node
);
...
...
@@ -240,7 +240,7 @@ namespace Test
YAML
::
Node
node
;
YAML
::
Node
tmp
=
node
[
"key"
];
tmp
=
"value"
;
YAML_ASSERT
(
node
.
Type
()
==
YAML
::
NodeType
::
Map
);
YAML_ASSERT
(
node
.
Is
Map
()
);
YAML_ASSERT
(
node
.
size
()
==
1
);
YAML_ASSERT
(
node
[
"key"
].
as
<
std
::
string
>
()
==
"value"
);
return
true
;
...
...
@@ -252,7 +252,7 @@ namespace Test
YAML
::
Node
tmp
=
node
[
"key"
];
tmp
=
node
[
"other"
];
node
[
"other"
]
=
"value"
;
YAML_ASSERT
(
node
.
Type
()
==
YAML
::
NodeType
::
Map
);
YAML_ASSERT
(
node
.
Is
Map
()
);
YAML_ASSERT
(
node
.
size
()
==
2
);
YAML_ASSERT
(
node
[
"key"
].
as
<
std
::
string
>
()
==
"value"
);
YAML_ASSERT
(
node
[
"other"
].
as
<
std
::
string
>
()
==
"value"
);
...
...
test/new-api/spectests.cpp
View file @
3a88c4b4
...
...
@@ -11,7 +11,7 @@ namespace Test
// 2.1
TEST
SeqScalars
()
{
YAML
::
Node
doc
=
YAML
::
Parse
(
ex2_1
);
YAML_ASSERT
(
doc
.
Type
()
==
YAML
::
NodeType
::
Sequence
);
YAML_ASSERT
(
doc
.
Is
Sequence
()
);
YAML_ASSERT
(
doc
.
size
()
==
3
);
YAML_ASSERT
(
doc
[
0
].
as
<
std
::
string
>
()
==
"Mark McGwire"
);
YAML_ASSERT
(
doc
[
1
].
as
<
std
::
string
>
()
==
"Sammy Sosa"
);
...
...
@@ -22,7 +22,7 @@ namespace Test
// 2.2
TEST
MappingScalarsToScalars
()
{
YAML
::
Node
doc
=
YAML
::
Parse
(
ex2_2
);
YAML_ASSERT
(
doc
.
Type
()
==
YAML
::
NodeType
::
Map
);
YAML_ASSERT
(
doc
.
Is
Map
()
);
YAML_ASSERT
(
doc
.
size
()
==
3
);
YAML_ASSERT
(
doc
[
"hr"
].
as
<
std
::
string
>
()
==
"65"
);
YAML_ASSERT
(
doc
[
"avg"
].
as
<
std
::
string
>
()
==
"0.278"
);
...
...
@@ -33,7 +33,7 @@ namespace Test
// 2.3
TEST
MappingScalarsToSequences
()
{
YAML
::
Node
doc
=
YAML
::
Parse
(
ex2_3
);
YAML_ASSERT
(
doc
.
Type
()
==
YAML
::
NodeType
::
Map
);
YAML_ASSERT
(
doc
.
Is
Map
()
);
YAML_ASSERT
(
doc
.
size
()
==
2
);
YAML_ASSERT
(
doc
[
"american"
].
size
()
==
3
);
YAML_ASSERT
(
doc
[
"american"
][
0
].
as
<
std
::
string
>
()
==
"Boston Red Sox"
);
...
...
@@ -285,9 +285,9 @@ namespace Test
YAML
::
Node
doc
=
YAML
::
Parse
(
ex2_25
);
YAML_ASSERT
(
doc
.
Tag
()
==
"tag:yaml.org,2002:set"
);
YAML_ASSERT
(
doc
.
size
()
==
3
);
YAML_ASSERT
(
doc
[
"Mark McGwire"
].
Type
()
==
YAML
::
NodeType
::
Null
);
YAML_ASSERT
(
doc
[
"Sammy Sosa"
].
Type
()
==
YAML
::
NodeType
::
Null
);
YAML_ASSERT
(
doc
[
"Ken Griffey"
].
Type
()
==
YAML
::
NodeType
::
Null
);
YAML_ASSERT
(
doc
[
"Mark McGwire"
].
Is
Null
()
);
YAML_ASSERT
(
doc
[
"Sammy Sosa"
].
Is
Null
()
);
YAML_ASSERT
(
doc
[
"Ken Griffey"
].
Is
Null
()
);
return
true
;
}
...
...
@@ -379,7 +379,7 @@ namespace Test
// 5.5
TEST
CommentIndicator
()
{
YAML
::
Node
doc
=
YAML
::
Parse
(
ex5_5
);
YAML_ASSERT
(
doc
.
Type
()
==
YAML
::
NodeType
::
Null
);
YAML_ASSERT
(
doc
.
Is
Null
()
);
return
true
;
}
...
...
@@ -539,7 +539,7 @@ namespace Test
// 6.10
TEST
CommentLines
()
{
YAML
::
Node
doc
=
YAML
::
Parse
(
ex6_10
);
YAML_ASSERT
(
doc
.
Type
()
==
YAML
::
NodeType
::
Null
);
YAML_ASSERT
(
doc
.
Is
Null
()
);
return
true
;
}
...
...
@@ -658,7 +658,7 @@ namespace Test
TEST
CompletelyEmptyNodes
()
{
YAML
::
Node
doc
=
YAML
::
Parse
(
ex7_3
);
YAML_ASSERT
(
doc
.
size
()
==
2
);
YAML_ASSERT
(
doc
[
"foo"
].
Type
()
==
YAML
::
NodeType
::
Null
);
YAML_ASSERT
(
doc
[
"foo"
].
Is
Null
()
);
YAML_ASSERT
(
doc
[
YAML
::
Null
].
as
<
std
::
string
>
()
==
"bar"
);
return
true
;
}
...
...
@@ -792,7 +792,7 @@ namespace Test
YAML_ASSERT
(
doc
.
size
()
==
3
);
YAML_ASSERT
(
doc
[
"explicit"
].
as
<
std
::
string
>
()
==
"entry"
);
YAML_ASSERT
(
doc
[
"implicit"
].
as
<
std
::
string
>
()
==
"entry"
);
YAML_ASSERT
(
doc
[
YAML
::
Null
].
Type
()
==
YAML
::
NodeType
::
Null
);
YAML_ASSERT
(
doc
[
YAML
::
Null
].
Is
Null
()
);
return
true
;
}
...
...
@@ -801,8 +801,8 @@ namespace Test
YAML
::
Node
doc
=
YAML
::
Parse
(
ex7_17
);
YAML_ASSERT
(
doc
.
size
()
==
4
);
YAML_ASSERT
(
doc
[
"unquoted"
].
as
<
std
::
string
>
()
==
"separate"
);
YAML_ASSERT
(
doc
[
"http://foo.com"
].
Type
()
==
YAML
::
NodeType
::
Null
);
YAML_ASSERT
(
doc
[
"omitted value"
].
Type
()
==
YAML
::
NodeType
::
Null
);
YAML_ASSERT
(
doc
[
"http://foo.com"
].
Is
Null
()
);
YAML_ASSERT
(
doc
[
"omitted value"
].
Is
Null
()
);
YAML_ASSERT
(
doc
[
YAML
::
Null
].
as
<
std
::
string
>
()
==
"omitted key"
);
return
true
;
}
...
...
@@ -813,7 +813,7 @@ namespace Test
YAML_ASSERT
(
doc
.
size
()
==
3
);
YAML_ASSERT
(
doc
[
"adjacent"
].
as
<
std
::
string
>
()
==
"value"
);
YAML_ASSERT
(
doc
[
"readable"
].
as
<
std
::
string
>
()
==
"value"
);
YAML_ASSERT
(
doc
[
"empty"
].
Type
()
==
YAML
::
NodeType
::
Null
);
YAML_ASSERT
(
doc
[
"empty"
].
Is
Null
()
);
return
true
;
}
...
...
@@ -1051,7 +1051,7 @@ namespace Test
TEST
BlockSequenceEntryTypes
()
{
YAML
::
Node
doc
=
YAML
::
Parse
(
ex8_15
);
YAML_ASSERT
(
doc
.
size
()
==
4
);
YAML_ASSERT
(
doc
[
0
].
Type
()
==
YAML
::
NodeType
::
Null
);
YAML_ASSERT
(
doc
[
0
].
Is
Null
()
);
YAML_ASSERT
(
doc
[
1
].
as
<
std
::
string
>
()
==
"block node
\n
"
);
YAML_ASSERT
(
doc
[
2
].
size
()
==
2
);
YAML_ASSERT
(
doc
[
2
][
0
].
as
<
std
::
string
>
()
==
"one"
);
...
...
@@ -1074,7 +1074,7 @@ namespace Test
TEST
ExplicitBlockMappingEntries
()
{
YAML
::
Node
doc
=
YAML
::
Parse
(
ex8_17
);
YAML_ASSERT
(
doc
.
size
()
==
2
);
YAML_ASSERT
(
doc
[
"explicit key"
].
Type
()
==
YAML
::
NodeType
::
Null
);
YAML_ASSERT
(
doc
[
"explicit key"
].
Is
Null
()
);
YAML_ASSERT
(
doc
[
"block key
\n
"
].
size
()
==
2
);
YAML_ASSERT
(
doc
[
"block key
\n
"
][
0
].
as
<
std
::
string
>
()
==
"one"
);
YAML_ASSERT
(
doc
[
"block key
\n
"
][
1
].
as
<
std
::
string
>
()
==
"two"
);
...
...
@@ -1086,7 +1086,7 @@ namespace Test
YAML
::
Node
doc
=
YAML
::
Parse
(
ex8_18
);
YAML_ASSERT
(
doc
.
size
()
==
3
);
YAML_ASSERT
(
doc
[
"plain key"
].
as
<
std
::
string
>
()
==
"in-line value"
);
YAML_ASSERT
(
doc
[
YAML
::
Null
].
Type
()
==
YAML
::
NodeType
::
Null
);
YAML_ASSERT
(
doc
[
YAML
::
Null
].
Is
Null
()
);
YAML_ASSERT
(
doc
[
"quoted key"
].
size
()
==
1
);
YAML_ASSERT
(
doc
[
"quoted key"
][
0
].
as
<
std
::
string
>
()
==
"entry"
);
return
true
;
...
...
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