2.2.3.17.40 TreeNode::SetValueSetValue
Description
Allows recursive access for setting values to all the leaves of the TreeNode
Allows recursive access for setting values to all the leaves of the TreeNode
Allows recursive access for setting values to all the leaves of the TreeNode
Allows recursive access for setting values to all the leaves of the TreeNode
Syntax
BOOL SetValue( int nval, LPCSTR lpcszPropName = NULL, BOOL bRecursive = FALSE, BOOL bAll = FALSE )
BOOL SetValue( double dval, LPCSTR lpcszPropName = NULL, BOOL bRecursive = FALSE, BOOL bAll = FALSE )
BOOL SetValue( string strval, LPCSTR lpcszPropName = NULL, BOOL bRecursive = FALSE, BOOL bAll = FALSE )
BOOL SetValue( const vectorbase & vval, LPCSTR lpcszPropName = NULL, BOOL bRecursive = FALSE, BOOL bAll = FALSE )
Parameters
- nval
- [input] The value to be set
- lpcszPropName
- [input] tag name of leaves to set values to, if NULL will set values to "this" TreeNode object
- bRecursive
- [input] if True, will check all leaves, not just children, but there descendants too, for a tag name match, else will only affect the immediate children
- bAll
- [input] When TRUE will change all matches, else will terminate after the first match
- dval
- [input] The value to be set
- lpcszPropName
- [input] tag name of leaves to set values to, if NULL will set values to "this" TreeNode object
- bRecursive
- [input] if True, will check all leaves, not just children, but there descendants too, for a tag name match, else will only affect the immediate children
- bAll
- [input] When TRUE will change all matches, else will terminate after the first match
- strval
- [input] The value to be set
- lpcszPropName
- [input] tag name of leaves to set values to, if NULL will set values to "this" TreeNode object
- bRecursive
- [input] if True, will check all leaves, not just children, but there descendants too, for a tag name match, else will only affect the immediate children
- bAll
- [input] When TRUE will change all matches, else will terminate after the first match
- vval
- [input] The value to be set
- lpcszPropName
- [input] tag name of leaves to set values to, if NULL will set values to "this" TreeNode object
- bRecursive
- [input] if True, will check all leaves, not just children, but there descendants too, for a tag name match, else will only affect the immediate children
- bAll
- [input] When TRUE will change all matches, else will terminate after the first match
Return
TRUE if successful FALSE if fail
TRUE if successful FALSE if fail
TRUE if successful FALSE if fail
TRUE if successful FALSE if fail
Examples
EX1
// The example shows how to set integer values
void TreeNode_SetValue_ex1()
{
Tree tr;
TreeNode tn1, tn2;
tn1 = tr.AddNode("Num", 1);
tn2 = tr.AddNode("Str", 2);
tr.SetValue("123", "Num");
out_tree(tr);
/*
tr
/ \
Num(123) Str()
*/
}
EX2
// The example shows how to set double values
void TreeNode_SetValue_ex2()
{
Tree tr;
TreeNode tn1;
tn1 = tr.AddNumericNode(123.456, "Num", 1);
tr.SetValue("0.123", "Num");
out_tree(tr);
/*
tr
|
Num(0.123)
*/
}
EX3
// Example of non recursive set string value
// Only the immediate children will be affected
void TreeNode_SetValue_ex3()
{
Tree tr;
TreeNode tn1, tn10, tn11, tn12;
tn1 = tr.AddTextNode("aaa", "node1", 1);
tn10 = tn1.AddTextNode("bbb", "node0", 10);
tn11 = tn1.AddTextNode("ccc", "node1", 11);
tn12 = tn1.AddTextNode("ddd", "node1", 12);
out_str("Origin Tree:");
out_tree(tr);
/*
tr
|
tn1(aaa)
/ | \
tn10(bbb) tn11(ccc) tn12(ddd)
*/
tn1.SetValue("NewValue1", "node1", FALSE, FALSE); // Change tn11's value
out_str("SetValue([NOT Recursive | First match]):");
out_tree(tr);
tn1.SetValue("NewValue2", "node1", FALSE, TRUE); // If bRecursive is false, bAll is failure
out_str("SetValue([NOT Recursive | First match]):");
out_tree(tr);
}
EX4
// Example of recursive set string value. Set value just for the leave nodes.
void TreeNode_SetValue_ex4()
{
Tree myTree1;
TreeNode tn1, tn11, tn12, tn13, tn111;
tn1 = myTree1.AddTextNode("aaa", "node1");
tn11 = tn1.AddTextNode("bbb", "node2");
tn12 = tn1.AddTextNode("ccc", "TargetNode");
tn111 = tn11.AddTextNode("ddd", "TargetNode");
out_str("Origin Tree:");
out_tree(myTree1);
/*
myTree1
|
tn1(aaa)
/ \
tn11(bbb) tn12(ccc)
/
tn111(ddd)
*/
tn1.SetValue("NewValue1", "TargetNode", TRUE, FALSE); // Changed: tn111(ddd)
out_str("SetValue() [Recursive | First match]:");
out_tree(myTree1);
tn1.SetValue("NewValue2", "TargetNode", TRUE, TRUE); // Changed: tn12(ccc), tn111(ddd)
out_str("SetValue() [Recursive | All match]:");
out_tree(myTree1);
}
EX5
// The example shows how to Set/Get vector value
void TreeNode_SetValue_ex5()
{
vector<double> vValues1;
for(int nn = 0; nn < 4; ++nn)
vValues1.Add( rnd() );
Tree tr;
TreeNode tn = tr.AddNode("Var", 1);
if( tr.SetValue(vValues1, "Var") ) // Assign a vector to Var node
{
out_str("Assign vector to tn node");
}
// Get the value of node "Var"
vector<double> vValues2;
if( tr.GetValue(vValues2, "Var") )
{
for(int ii = 0; ii < vValues2.GetSize(); ++ii)
{
printf("NO.%d = %f\n", ii+1, vValues2[ii]);
}
}
}
Remark
See Also
TreeNode::GetValue
Header to Include
origin.h
|