tree_set_values_by_ids
Description
Walk all nodes, look for nodes with matching DataID, and apply value, if have same DataID, will just save the value of the first one DataID .
Syntax
int tree_set_values_by_ids( TreeNode & trSetting, const vector<int> & vnIDs, const vector<string> & vsValues, int nRepeatBranchID = 0, int * pnDuplicateID = NULL )
Parameters
- trSetting
- [modify]a source tree
- vnIDs
- [input]vector of IDs.
- vsValues
- [input]vector of string values, must be the same size of vnIDs.
- nRepeatBranchID
- [input] DataID of parent or itself, must > 0 and < MAX_REPEAT_ID_VALUE.
- pnDuplicateID
- [output] optional point to int to receive the first DataID that appear more then once.
- In order to reliably use DataID to map values, all tree nodes must have unique DataID. If this argument is not set (NULL), and there are non-unique ID, then -4 is returned and no setting will be done. If pnDuplicateID is not NULL, then the first duplicate ID is put into this pointer and setting will proceed despite the duplicate
Return
number of matching found nodes,
if return -1 mean input tree node not invalid,
-2 mean the pair of vector size to 0;
-3 when the pair vector not the same size,
-4 mean have duplicate id in id vector.
-5 when nRepeatBranchID out of range or when nRepeatBranchID is valid and subbranch node dataid out of range.
Examples
EX1
//This example reads values of nodes from TreeNode.ini, and saves user's modifications to this file.
#include <GetNBox.h>
enum{ID_NUMEXP, ID_B, ID_B_T1, ID_B_T2, ID_B_T3, ID_DATARANGE, ID_CURVECOLOR};
void tree_set_values_with_ids_ex1()
{
GETN_TREE(myTree)
GETN_COMBO(numExp, "Number of Terms", 1, "1|2|3") GETN_ID(ID_NUMEXP)
GETN_BEGIN_BRANCH(DecayTime, "Decay Times") GETN_ID_BRANCH(ID_B)
GETN_NUM(decayT1, "1st Decay Time (t1)", 0.0) GETN_ID(ID_B_T1)
GETN_NUM(decayT2, "2nd Decay Time (t2)", 0.0) GETN_ID(ID_B_T2)
GETN_NUM(decayT3, "3rd Decay Time (t3)", 0.0) GETN_ID(ID_B_T3)
GETN_END_BRANCH(DecayTime)
GETN_RANGE(DataRange, "Data Range", 0, 99, 1, 30) GETN_ID(ID_DATARANGE)
GETN_COLOR(FitCurveColor, "Fit Curve color", 1) GETN_ID(ID_CURVECOLOR)
string strFileName = "TreeNode.ini";
vector<int> vnIDs;
vector<string> vsValues;
vector<string> vsLabels;
if( tree_read_values_with_ids(strFileName, vnIDs, vsValues) )
tree_set_values_by_ids(myTree, vnIDs, vsValues);
if(GetNBox(myTree, "Fit Exp Decay", "Fit Exponential Decay 1,2,3"))
{
out_tree(myTree);
tree_get_values_with_ids(myTree, vnIDs, vsValues);
tree_save_values_with_ids(strFileName, vnIDs, vsValues, vsLabels);
}
}
Remark
See Also
tree_set_values_by_nodeids
header to Include
origin.h
Reference
|