Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Brad King
CMake
Commits
dc742fe4
Commit
dc742fe4
authored
Apr 25, 2013
by
Stephen Kelly
Browse files
Extract the ProcessArbitraryContent method.
parent
05bf9721
Changes
2
Hide whitespace changes
Inline
Side-by-side
Source/cmGeneratorExpressionEvaluator.cxx
View file @
dc742fe4
...
...
@@ -992,6 +992,57 @@ std::string GeneratorExpressionContent::GetOriginalExpression() const
return
std
::
string
(
this
->
StartContent
,
this
->
ContentLength
);
}
//----------------------------------------------------------------------------
std
::
string
GeneratorExpressionContent
::
ProcessArbitraryContent
(
const
cmGeneratorExpressionNode
*
node
,
const
std
::
string
&
identifier
,
cmGeneratorExpressionContext
*
context
,
cmGeneratorExpressionDAGChecker
*
dagChecker
,
std
::
vector
<
std
::
vector
<
cmGeneratorExpressionEvaluator
*>
>::
const_iterator
pit
)
const
{
std
::
string
result
;
const
std
::
vector
<
std
::
vector
<
cmGeneratorExpressionEvaluator
*>
>::
const_iterator
pend
=
this
->
ParamChildren
.
end
();
for
(
;
pit
!=
pend
;
++
pit
)
{
std
::
vector
<
cmGeneratorExpressionEvaluator
*>::
const_iterator
it
=
pit
->
begin
();
const
std
::
vector
<
cmGeneratorExpressionEvaluator
*>::
const_iterator
end
=
pit
->
end
();
for
(
;
it
!=
end
;
++
it
)
{
if
(
node
->
RequiresLiteralInput
())
{
if
((
*
it
)
->
GetType
()
!=
cmGeneratorExpressionEvaluator
::
Text
)
{
reportError
(
context
,
this
->
GetOriginalExpression
(),
"$<"
+
identifier
+
"> expression requires literal input."
);
return
std
::
string
();
}
}
result
+=
(
*
it
)
->
Evaluate
(
context
,
dagChecker
);
if
(
context
->
HadError
)
{
return
std
::
string
();
}
}
if
((
pit
+
1
)
!=
pend
)
{
result
+=
","
;
}
}
if
(
node
->
RequiresLiteralInput
())
{
std
::
vector
<
std
::
string
>
parameters
;
parameters
.
push_back
(
result
);
return
node
->
Evaluate
(
parameters
,
context
,
this
,
dagChecker
);
}
return
result
;
}
//----------------------------------------------------------------------------
std
::
string
GeneratorExpressionContent
::
Evaluate
(
cmGeneratorExpressionContext
*
context
,
...
...
@@ -1043,47 +1094,9 @@ std::string GeneratorExpressionContent::Evaluate(
if
(
node
->
AcceptsSingleArbitraryContentParameter
())
{
std
::
string
result
;
std
::
vector
<
std
::
vector
<
cmGeneratorExpressionEvaluator
*>
>::
const_iterator
pit
=
this
->
ParamChildren
.
begin
();
const
std
::
vector
<
std
::
vector
<
cmGeneratorExpressionEvaluator
*>
>::
const_iterator
pend
=
this
->
ParamChildren
.
end
();
for
(
;
pit
!=
pend
;
++
pit
)
{
std
::
vector
<
cmGeneratorExpressionEvaluator
*>::
const_iterator
it
=
pit
->
begin
();
const
std
::
vector
<
cmGeneratorExpressionEvaluator
*>::
const_iterator
end
=
pit
->
end
();
for
(
;
it
!=
end
;
++
it
)
{
if
(
node
->
RequiresLiteralInput
())
{
if
((
*
it
)
->
GetType
()
!=
cmGeneratorExpressionEvaluator
::
Text
)
{
reportError
(
context
,
this
->
GetOriginalExpression
(),
"$<"
+
identifier
+
"> expression requires literal input."
);
return
std
::
string
();
}
}
result
+=
(
*
it
)
->
Evaluate
(
context
,
dagChecker
);
if
(
context
->
HadError
)
{
return
std
::
string
();
}
}
if
((
pit
+
1
)
!=
pend
)
{
result
+=
","
;
}
}
if
(
node
->
RequiresLiteralInput
())
{
std
::
vector
<
std
::
string
>
parameters
;
parameters
.
push_back
(
result
);
return
node
->
Evaluate
(
parameters
,
context
,
this
,
dagChecker
);
}
return
result
;
return
this
->
ProcessArbitraryContent
(
node
,
identifier
,
context
,
dagChecker
,
this
->
ParamChildren
.
begin
());
}
std
::
vector
<
std
::
string
>
parameters
;
...
...
Source/cmGeneratorExpressionEvaluator.h
View file @
dc742fe4
...
...
@@ -129,6 +129,14 @@ private:
cmGeneratorExpressionDAGChecker
*
dagChecker
,
std
::
vector
<
std
::
string
>
&
parameters
)
const
;
std
::
string
ProcessArbitraryContent
(
const
cmGeneratorExpressionNode
*
node
,
const
std
::
string
&
identifier
,
cmGeneratorExpressionContext
*
context
,
cmGeneratorExpressionDAGChecker
*
dagChecker
,
std
::
vector
<
std
::
vector
<
cmGeneratorExpressionEvaluator
*>
>::
const_iterator
pit
)
const
;
private:
std
::
vector
<
cmGeneratorExpressionEvaluator
*>
IdentifierChildren
;
std
::
vector
<
std
::
vector
<
cmGeneratorExpressionEvaluator
*>
>
ParamChildren
;
...
...
Write
Preview
Supports
Markdown
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