JunkBox_Lib++ (for Windows) 1.10.1
|
Go to the source code of this file.
Functions | |
tTree * | new_tTree_node (void) |
ツリー用の空ノードを動的に生成. | |
tTree * | new_tTree_anchor_node (void) |
ツリー用の ANCHORノードを動的に生成. | |
tTree * | del_tTree_anchor_node (tTree *node) |
ANCHORノードを削除して,TOP(長女)へのポインターを返す. | |
tTree | make_tTree_node (tList_data data) |
ツリー用ノードを静的に作成. | |
tTree * | add_tTree_node (tTree *pp, tTree *node) |
ツリー ppへノード nodeを末っ子として追加. | |
tTree * | add_tTree_node_bydata (tTree *pp, tList_data ldat) |
データから Treeノードをつくり出し,それを ppの子ノード(末っ子)として追加. | |
tTree * | add_tTree_node_byBuffer (tTree *pp, int id, int lv, Buffer key, Buffer val, void *ptr, int sz) |
ノードを末っ子としてリストに追加. | |
tTree * | add_tTree_node_bystr (tTree *pp, int id, int lv, const char *key, const char *val, void *ptr, int sz) |
ノードを末っ子としてリストに追加. | |
tTree * | insert_tTree_node (tTree *pp, tTree *node) |
ツリー ppへノード nodeを長子として追加. | |
tTree * | insert_tTree_node_bydata (tTree *pp, tList_data ldat) |
ノードをつくり出し,それを ppの子ノード(長子)として追加. | |
tTree * | insert_tTree_node_byBuffer (tTree *pp, int id, int lv, Buffer key, Buffer val, void *ptr, int sz) |
ノードを長子としてリストに追加. | |
tTree * | insert_tTree_node_bystr (tTree *pp, int id, int lv, const char *key, const char *val, void *ptr, int sz) |
ノードを長子としてリストに追加. | |
tTree * | free_tTree_node (tTree *node) |
ツリーノードの解放.解放されたノードが子ノードを持つ場合は,その子ノードを格上げする(木構造を詰める) | |
tTree * | del_tTree_node (tTree **node) |
ツリーノードの削除.削除されたノードが子ノードを持つ場合は,その子ノードを格上げする(木構造を詰める) | |
tTree * | move_tTree_node (tTree *pp, tTree *node) |
nodeを現在のツリーから切り離し,ppへ移動する. | |
int | replace_all_tTree_node (tTree *tp, char *key, char *src, char *dst, int len) |
対象の全てのノードのノード値を dst に書き換える. | |
void | del_delete_node_tTree (tTree **pp) |
ctrl==TREE_DELETE_NODE を削除する. | |
void | _del_delete_node_tTree (tTree **pp) |
void | del_non_keep_node_tTree (tTree **pp) |
ctrl==TREE_KEEP_NODE 以外を削除する. | |
void | _del_non_keep_node_tTree (tTree **pp) |
tTree * | del_tTree (tTree **pp) |
指定したノード以下のツリーを削除する. | |
tTree * | del_children_tTree (tTree **pp) |
指定したノードの子ツリーを削除する.指定したノードは削除しない. | |
tTree * | del_sisters_tTree (tTree **pp) |
指定したノード以下のXMLツリー(ppの姉妹を含む)を削除する. | |
tTree * | del_sisters_children_tTree (tTree **pp) |
指定したノードの姉妹ツリー,子ツリーを削除する. | |
void | del_all_tTree (tTree **pp) |
ツリーの全ノードの削除.ポインタ ppのノードを含むツリー全体を削除する. | |
tTree * | add_tTree (tTree *tp, tTree *tt) |
ツリー tpへ ツリー ttを追加. | |
tTree * | div_tTree (tTree *tt) |
ツリー tp から ツリー ttを分離する. | |
tTree * | dup_merge_tTree (tTree *pp, tTree *tp) |
ツリー ppの直下にツリー tpを複製する. | |
void | merge_tTree (tTree *tp, tTree *tt) |
ツリー tp にツリー tt を結合する.結合後,tt の内容は壊れる(tpとノードを交換した形になる). | |
void | exchange_tTree (tTree *tl, tTree *tt) |
ツリー tlと ツリー ttを交換する. | |
void | adjust_tTree_depth (tTree *pp) |
指定したノード ppを基準にして,木の深さを測り直す | |
void | print_tTree_tree (FILE *fp, tTree *pp, const char *space) |
ツリーの表示.ポインタ ノードのキー部のバッファをfpに表示する. | |
void | print_tTree (FILE *fp, tTree *pp) |
ツリーの表示.ポインタ ノードのキー部のバッファをfpに表示する. | |
tTree * | find_tTree_end (tTree *pp) |
ツリーの最終ノードを見つける. | |
int | count_tTree (tTree *pp) |
ツリーの ppノード以降のノードの数を数える. | |
tTree * | strncmp_tTree (tTree *pp, const char *key, int len, int no) |
ツリーノードのキー値のサーチ | |
tTree * | strncasecmp_tTree (tTree *pp, const char *key, int len, int no) |
ツリーノードのキー値のサーチ.大文字小文字を無視する. | |
tTree * | cmp_sisters_tTree (tTree *tp, tTree *tr) |
tpの姉妹ノードが trの姉妹ノードと同じキー値を持っているかどうかを検査する. | |
int | check_match_tTree (tTree *tp, tTree *tr) |
tpが trと同じパターン(キー値)を持っているかどうかを検査する. | |
int | find_match_tTree (tTree *pp, tTree *pt) |
ツリー pp内で ツリー ptと同じパターンの枝を探す. | |
void | _clear_tTree_ctrl (tTree *pp) |
ppツリーの ctrlをクリアする. | |
tList * | find_match_tTree_endlist (tTree *pp, tTree *pt) |
pp内で ptと同じパターンの枝を全て探して,その枝の最後のノードへの情報を返す. | |
tList * | _find_match_tTree_endlist_rcsv (tTree *pp, tTree *pt, tTree *te) |
find_match_tTree_endlist() の補助関数 | |
int | replace_tTree_node (tTree *pp, tTree *pt) |
同じパターンの枝を検索し,ptのノードの属性で置き換える. | |
void | _copy_tTree_byctrl (tTree *pt) |
同じパターンの枝を検索し,ptのノードの属性をコピーする. | |
Buffer | get_value_tTree (tTree *pp, tTree *pt) |
同じパターンの枝を検索し,一致した枝があれば,その枝の最後のノードの値を返す. | |
tTree * | _next_strncmp_vertical_tTree (tTree *pp, const char *key, int len, int no, int *nn) |
tTree 検索用補助関数.vertical は縦方向探索 | |
tTree * | _next_strncmp_horizon_tTree (tTree *pp, const char *key, int len, int no, int *nn) |
tTree 検索用補助関数.horizon は擬似的な横方向探索 | |
tTree * | _next_strncasecmp_vertical_tTree (tTree *pp, const char *key, int len, int no, int *nn) |
tTree 検索用補助関数.vertical は縦方向探索 | |
tTree * | _next_strncasecmp_horizon_tTree (tTree *pp, const char *key, int len, int no, int *nn) |
tTree 検索用補助関数.horizon は擬似的な横方向探索 | |
void _clear_tTree_ctrl | ( | tTree * | pp | ) |
void _clear_tTree_ctrl(tTree* pp)
ppツリーの ctrlをクリアする. find_match_tTree(tTree* pp, tTree* pt) の補助関数
Definition at line 1420 of file ttree.cpp.
References _clear_tTree_ctrl(), and TREE_NOCTRL_NODE.
Referenced by _clear_tTree_ctrl(), _find_match_tTree_endlist_rcsv(), _find_match_xml_endlist_rcsv(), find_match_tTree(), find_match_tTree_endlist(), find_match_xml(), find_match_xml_end_node(), find_match_xml_endlist(), get_xml_content(), get_xml_node(), and set_xml_end_node().
void _copy_tTree_byctrl | ( | tTree * | pt | ) |
void _copy_tTree_byctrl(tTree* pt)
replace_tTree_node() の補助関数.
ツリー ptにおいて,pt->ctrl が TREE_COPY_NODE または TREE_NOCMP_COPY_NODE の場合, pt->altp のノードへ ptの属性をコピーする.
pt->ldat.sz には正確に pt->ldat.ptrのサイズが設定されている必要がある.
Definition at line 1541 of file ttree.cpp.
References _copy_tTree_byctrl(), del_all_tList(), dup_Buffer(), dup_tList(), free_Buffer(), TREE_COPY_NODE, and TREE_NOCMP_COPY_NODE.
Referenced by _copy_tTree_byctrl(), replace_tTree_node(), and set_xml_end_node().
void _del_delete_node_tTree | ( | tTree ** | pp | ) |
Definition at line 551 of file ttree.cpp.
References _del_delete_node_tTree(), del_tTree_node(), and TREE_DELETE_NODE.
Referenced by _del_delete_node_tTree(), and del_delete_node_tTree().
void _del_non_keep_node_tTree | ( | tTree ** | pp | ) |
Definition at line 597 of file ttree.cpp.
References _del_non_keep_node_tTree(), del_tTree_node(), and TREE_KEEP_NODE.
Referenced by _del_non_keep_node_tTree(), and del_non_keep_node_tTree().
tList* _find_match_tTree_endlist_rcsv(tTree* pp, tTree* pt, tTree* te)
find_match_tTree_endlist() の補助関数
Definition at line 1466 of file ttree.cpp.
References _clear_tTree_ctrl(), _find_match_tTree_endlist_rcsv(), check_match_tTree(), insert_tList(), and new_tList_node().
Referenced by _find_match_tTree_endlist_rcsv(), and find_match_tTree_endlist().
tTree* _next_strncasecmp_horizon_tTree (tTree* pp, const char* key, int len, int no, int* nn)
tTree 検索用補助関数.horizon は擬似的な横方向探索(完全な横方向探索ではない)
Definition at line 1700 of file ttree.cpp.
References _next_strncasecmp_horizon_tTree(), and ex_strncasecmp().
Referenced by _next_strncasecmp_horizon_tTree().
tTree * _next_strncasecmp_vertical_tTree | ( | tTree * | pp, |
const char * | key, | ||
int | len, | ||
int | no, | ||
int * | nn ) |
tTree* _next_strncasecmp_vertical_tTree(tTree* pp, const char* key, int len, int no, int* nn)
tTree 検索用補助関数.vertical は縦方向探索
Definition at line 1677 of file ttree.cpp.
References _next_strncasecmp_vertical_tTree(), and ex_strncasecmp().
Referenced by _next_strncasecmp_vertical_tTree(), and strncasecmp_tTree().
tTree* _next_strncmp_horizon_tTree (tTree* pp, const char* key, int len, int no, int* nn)
tTree 検索用補助関数.horizon は擬似的な横方向探索(完全な横方向探索ではない)
Definition at line 1654 of file ttree.cpp.
References _next_strncmp_horizon_tTree(), and ex_strncmp().
Referenced by _next_strncmp_horizon_tTree().
tTree* _next_strncmp_vertical_tTree(tTree* pp, const char* key, int len, int no, int* nn)
tTree 検索用補助関数.vertical は縦方向探索
Definition at line 1631 of file ttree.cpp.
References _next_strncmp_vertical_tTree(), and ex_strncmp().
Referenced by _next_strncmp_vertical_tTree(), and strncmp_tTree().
tTree* add_tTree(tTree* tp, tTree* tt)
ツリー tpへ ツリー ttを追加.
add_tTree_node() との相違は,add_tTree()が先頭(tt)の姉妹ノードもツリー tpに追加する点にある.
tp | 追加するツリーの親となるノードへのポインタ. |
tt | 追加するツリーへのポインタ. |
Definition at line 778 of file ttree.cpp.
References adjust_tTree_depth().
Referenced by dup_merge_tTree(), join_json(), json_insert_child(), and merge_tTree().
tTree* add_tTree_node(tTree* pp, tTree* node)
ツリー ppへノード nodeを追加.ポインタ ppが指すノードの子(末っ子)ノードとして node(そのもの)を追加する.
node が子ノードを持つ場合は,それも追加される.
node が姉妹ノードを持っていてもそれらは無視する(処理しない).
pp | 追加するノードの親となるノードへのポインタ. |
node | 追加するノードへのポインタ.node->next 以下がツリーでも良い. |
Definition at line 97 of file ttree.cpp.
References adjust_tTree_depth(), and TREE_ANCHOR_NODE.
Referenced by ColladaXML::addScene(), json_array_parse(), and json_parse_prop().
tTree * add_tTree_node_byBuffer | ( | tTree * | pp, |
int | id, | ||
int | lv, | ||
Buffer | key, | ||
Buffer | val, | ||
void * | ptr, | ||
int | sz ) |
tTree* add_tTree_node_byBuffer(tTree* pp, int id, int lv, Buffer key, Buffer val, void* ptr, int sz)
データからノードをつくり出し,それを末っ子としてリストに追加.
リストポインタ ppが指すノードの後につくり出した ノードを挿入する.
pp | 追加する場所の手前のノードへのポインタ. |
id | 追加するデータ. |
lv | 追加するデータ. |
key | 追加するデータ. 複製 |
val | 追加するデータ. 複製 |
ptr | 汎用データへのポインタ 複製 |
sz | *ptr のサイズ |
Definition at line 175 of file ttree.cpp.
References add_tTree_node_bydata(), and make_tList_data().
tTree * add_tTree_node_bydata | ( | tTree * | pp, |
tList_data | ldat ) |
tTree* add_tTree_node_bydata(tTree* pp, tList_data ldat)
データから Treeノードをつくり出し,それを ppの子ノード(末っ子)として追加.
ldat は指定されたものがそのまま使用される.
pp | 追加するノードの親となるノードへのポインタ. |
ldat | 追加するノードデータ.このデータがそのまま使用される. |
Definition at line 135 of file ttree.cpp.
References new_tTree_node().
Referenced by add_tTree_node_byBuffer(), and add_tTree_node_bystr().
tTree * add_tTree_node_bystr | ( | tTree * | pp, |
int | id, | ||
int | lv, | ||
const char * | key, | ||
const char * | val, | ||
void * | ptr, | ||
int | sz ) |
tTree* add_tTree_node_bystr(tTree* pp, int id, int lv, const char* key, const char* val, void* ptr, int sz)
データからノードをつくり出し,それを末っ子としてリストに追加.
リストポインタ ppが指すノードの後につくり出した ノードを挿入する.
pp | 追加する場所の手前のノードへのポインタ. |
id | 追加するデータ. |
lv | 追加するデータ. |
key | 追加するデータ. 複製 |
val | 追加するデータ. 複製 |
ptr | 汎用データへのポインタ 複製 |
sz | *ptr のサイズ |
Definition at line 202 of file ttree.cpp.
References add_tTree_node_bydata(), and make_tList_data_bystr().
Referenced by add_xml_content_node(), add_xml_node(), bvh_parse_hierarchy(), json_append_array_int_val(), json_append_array_real_val(), json_append_array_str_val(), json_append_obj_int_val(), json_append_obj_real_val(), json_append_obj_str_val(), llsd_bin_main_parse(), and xml_main_parse().
void adjust_tTree_depth | ( | tTree * | pp | ) |
void adjust_tTree_depth(tTree* pp)
指定したノード ppを基準にして,木の深さを測り直す
pp | 基準となるノードへのポインタ |
Definition at line 1016 of file ttree.cpp.
References adjust_tTree_depth().
Referenced by add_tTree(), add_tTree_node(), adjust_tTree_depth(), close_xml(), div_tTree(), exchange_tTree(), free_tTree_node(), insert_tTree_node(), merge_tTree(), move_tTree_node(), replace_tTree_node(), and set_xml_end_node().
int check_match_tTree(tTree* tp, tTree* tr)
ツリー tpが ツリー trと同じパターン(キー値)を持っているかどうかを検査する.
tp のトップと tr のトップはキー値が一致している必要がある.一致していなければ,同じパターンは無しとする.
ただし,tr->ctrl が TREE_NOCMP_NODE または TREE_NOCMP_COPY_NODE のノードは比べない(常に一致とする).
一度見つけた tpの枝の最後のノードに対しては ctrlを TREE_ALREADY_FOUND_NODE を設定するので,続けてチェックする 場合などは ctrl をクリアする必要がある.
もし同じツリーパターンがある場合,trの各ノードの altpには,一番最初に見つかった対応する tpの各ノードへのポインタが格納される.
tp | 検索対象のツリー |
tr | 検索パターンのツリー |
TRUE | tp中に trと同じいツリーパターンが存在する.trの各ノードの altpには,一番最初に見つかった対応する tpの各ノードへのポインタが格納される. |
FALSE | tpに同じツリーパターンは無い.この場合,trのaltpの値は不定となる. |
Definition at line 1325 of file ttree.cpp.
References check_match_tTree(), cmp_sisters_tTree(), FALSE, find_tList_end(), TREE_ALREADY_FOUND_NODE, and TRUE.
Referenced by _find_match_tTree_endlist_rcsv(), check_match_tTree(), and find_match_tTree().
tTree* cmp_sisters_tTree(tTree* tp, tTree* tr)
ノードtpの姉妹ノードが ノードtrの姉妹ノードと同じパターン(キー値を比較)を持っているかどうかを検査する.
ただし,tr->ctrl が TREE_NOCMP_NODE または TREE_NOCMP_COPY_NODE のノードは比べない(常に一致とする).
また tp->ctrl が TREE_ALREADY_FOUND_NODE の場合は,常に一致しない.
もし同じノードパターンがある場合,trの各ノードの altpには,対応する tpの各ノードへのポインタが格納される.
tp | 比べる姉妹ノードの長女ノード |
tr | 探す姉妹ノードパターンの長女ノード |
NULL | tpに同じ姉妹パターンは無い.この場合,trのaltpの値は不定となる. |
Definition at line 1274 of file ttree.cpp.
References TREE_ALREADY_FOUND_NODE, TREE_NOCMP_COPY_NODE, and TREE_NOCMP_NODE.
Referenced by check_match_tTree().
int count_tTree | ( | tTree * | pp | ) |
ツリーの ppノード以降のノードの数を数える.
pp | 数え始めるノードへのポインタ.姉妹ノードも数える. |
Definition at line 1151 of file ttree.cpp.
References count_tTree().
Referenced by count_tTree(), json_inverse_parse(), json_inverse_parse_opt(), and xml_inverse_parse().
void del_all_tTree | ( | tTree ** | pp | ) |
void del_all_tTree(tTree** pp)
ツリーの全ノードの削除.ポインタ ppのノードを含むツリー全体を削除する.
pp はツリー中であれば,どこを指していても良い.
*pp | 削除を開始するノードへのポインタ.ツリー中であれば,どこを指していても良い. |
Definition at line 752 of file ttree.cpp.
References del_tTree().
tTree* del_children_tTree(tTree** pp)
指定したノードの子ツリーを削除する.指定したノードは削除しない.
*pp | 削除する子ツリーの親ノード |
Definition at line 666 of file ttree.cpp.
References del_sisters_children_tTree().
void del_delete_node_tTree | ( | tTree ** | pp | ) |
void del_delete_node_tTree(tTree** pp)
ctrl または ctrl_alt が TREE_DELETE_NODE の ノードを削除する
pp は アンカーノードである必要がある. アンカーノードでない場合,*ppが削除されるとリストを見失う.
Definition at line 534 of file ttree.cpp.
References _del_delete_node_tTree(), PRINT_MESG, and TREE_ANCHOR_NODE.
void del_non_keep_node_tTree | ( | tTree ** | pp | ) |
void del_non_keep_node_tTree(tTree** pp)
ctrl または ctrl_alt が TREE_KEEP_NODE 以外のノードを削除する
pp は アンカーノードである必要がある. アンカーノードでない場合,*ppが削除されるとリストを見失う.
Definition at line 580 of file ttree.cpp.
References _del_non_keep_node_tTree(), PRINT_MESG, and TREE_ANCHOR_NODE.
tTree* del_sisters_children_tTree(tTree** pp)
指定したノードの姉妹ツリー,子ツリーを削除する.
指定したノードも削除する.
*pp | 削除するツリーの起点ノード |
Definition at line 718 of file ttree.cpp.
References clear_tList_data(), and del_sisters_children_tTree().
Referenced by del_children_tTree(), del_sisters_children_tTree(), del_sisters_tTree(), and del_tTree().
tTree* del_sisters_tTree(tTree** pp)
指定したノード以下のXMLツリー(ppの姉妹を含む)を削除する.
[in,out] | *pp | 削除するツリーの先頭ノード.削除後は NULLになる. |
Definition at line 688 of file ttree.cpp.
References del_sisters_children_tTree().
tTree* del_tTree(tTree** pp)
指定したノード以下のツリーを削除する. 姉妹ノードは削除しない.
[in] | *pp | 削除するツリーの先頭ノード |
[out] | *pp | NULL |
Definition at line 628 of file ttree.cpp.
References clear_tList_data(), and del_sisters_children_tTree().
Referenced by clear_BVHData(), del_all_tTree(), and CBVHTool::free_data().
Definition at line 53 of file ttree.cpp.
References free_tTree_node(), and TREE_ANCHOR_NODE.
Referenced by dup_merge_tTree().
tTree* del_tTree_node(tTree** node)
ツリーノードの削除.削除されたノードが子ノードを持つ場合は,その子ノードを格上げする(木構造を詰める)
node は動的に確保された変数でなければならない.
*node | 削除するノードへのポインタ. |
Definition at line 400 of file ttree.cpp.
References free_tTree_node().
Referenced by _del_delete_node_tTree(), and _del_non_keep_node_tTree().
tTree* div_tTree(tTree* tp, tTree* tt)
ツリー tp から ツリー ttを分離する.
tt | ツリーへの分離ポイント. |
Definition at line 822 of file ttree.cpp.
References adjust_tTree_depth().
Referenced by merge_tTree().
tTree* dup_merge_tTree(tTree* pp, tTree* tp)
ツリー ppの直下に(Yunger Sisterとして)ツリー tpを複製する.
pp がNULLの場合は,ツリーの深さは調整されない
pp | 複製されたツリーのトップとなるノード |
tp | 複製するツリー |
Definition at line 858 of file ttree.cpp.
References add_tTree(), del_tTree_anchor_node(), dup_merge_tTree(), dup_tList_node(), new_tTree_anchor_node(), and TREE_NOSIS_NODE.
Referenced by dup_merge_tTree(), and dup_merge_xml().
void exchange_tTree(tTree* tl, tTree* tt)
ツリー tlと ツリー ttを交換する.
tl | 交換対象のツリー |
tt | 交換対象のツリー |
Definition at line 968 of file ttree.cpp.
References adjust_tTree_depth().
Referenced by merge_tTree().
int find_match_tTree(tTree* pp, tTree* pt)
ツリー pp内で ツリー ptと同じパターンの枝を探す.
同じパターンの探索では キー値のみを比較し,ノード値は比較しない.
ただし,pt->ctrl が TREE_NOCMP_NODE または TREE_NOCMP_COPY_NODE のノードは比べない(常に一致とする).
もし同じツリーパターンがある場合,trの各ノードの altpには,一番最初に見つかった対応する ppの各ノードへ のポインタが格納される.
check_match_tTree() との違い.
pp | 検索対象のツリー |
pt | 検索パターンのツリー |
TRUE | pp中に pt同じいツリーパターンが存在する.ptの各ノードの altpには,一番最初に見つかった対応する ppの各ノードへのポインタが格納される. |
FALSE | ppに同じツリーパターンは無い.この場合,ptのaltpの値は不定となる. |
Definition at line 1390 of file ttree.cpp.
References _clear_tTree_ctrl(), check_match_tTree(), FALSE, find_match_tTree(), and TRUE.
Referenced by find_match_tTree(), find_match_xml_end_node(), get_value_tTree(), and replace_tTree_node().
tList* find_match_tTree_endlist(tTree* pp, tTree* pt)
ツリー pp内で ツリー ptと同じパターンの枝を全て探して,その枝の最後のノードへの情報をリストにして返す.
該当ノードへのポインタは 返された各リストのaltp が保持している.
比較では キー値のみを比較し,ノード値は比較しない. また,pt->ctrl が TREE_NOCMP_NODE または TREE_NOCMP_COPY_NODE のノードは比べない(常に一致とする).
pp | 検索対象のツリー |
pt | 検索パターンのツリー |
Definition at line 1446 of file ttree.cpp.
References _clear_tTree_ctrl(), _find_match_tTree_endlist_rcsv(), and find_tTree_end().
tTree* find_tTree_end(tTree* pp)
ツリーの最終ノードを見つける.最終ノード:最後に追加されたノード.
Definition at line 1132 of file ttree.cpp.
Referenced by find_match_tTree_endlist(), and get_value_tTree().
tTree* free_tTree_node(tTree* node)
ツリーノードの削除.削除されたノードが子ノードを持つ場合は,その子ノードを格上げする(木構造を詰める)
Definition at line 344 of file ttree.cpp.
References adjust_tTree_depth(), clear_tList_data(), and TREE_ANCHOR_NODE.
Referenced by del_tTree_anchor_node(), and del_tTree_node().
Buffer get_value_tTree(tTree* pp, tTree* pt)
ツリー pp内で ツリー ptと同じパターンの枝を検索し,ppに一致したパターンの 枝があれば,その枝の最後のノードの値を返す.
pp | 検索対象のツリー |
pt | 検索するパターン |
Definition at line 1600 of file ttree.cpp.
References dup_Buffer(), find_match_tTree(), find_tTree_end(), and init_Buffer().
tTree* insert_tTree_node(tTree* pp, tTree* node)
ツリー ppへノード nodeを追加.ポインタ ppが指すノードの子(長子)ノードとして node(そのもの)を追加する.
node が子ノードを持つ場合は,それも追加される.
node が姉妹ノードを持っていてもそれらは無視する(処理しない).
pp | 追加するノードの親となるノードへのポインタ. |
node | 追加するノードへのポインタ.node->next 以下がツリーでも良い. |
Definition at line 225 of file ttree.cpp.
References adjust_tTree_depth().
Referenced by ColladaXML::addScene().
tTree * insert_tTree_node_byBuffer | ( | tTree * | pp, |
int | id, | ||
int | lv, | ||
Buffer | key, | ||
Buffer | val, | ||
void * | ptr, | ||
int | sz ) |
tTree* insert_tTree_node_byBuffer(tTree* pp, int id, int lv, Buffer key, Buffer val, void* ptr, int sz)
データからノードをつくり出し,それを長子としてリストに追加.
リストポインタ ppが指すノードの後につくり出した ノードを挿入する.
pp | 追加する場所の手前のノードへのポインタ. |
id | 追加するデータ. |
lv | 追加するデータ. |
key | 追加するデータ. 複製 |
val | 追加するデータ. 複製 |
ptr | 汎用データへのポインタ 複製 |
sz | *ptr のサイズ |
Definition at line 298 of file ttree.cpp.
References insert_tTree_node_bydata(), and make_tList_data().
tTree * insert_tTree_node_bydata | ( | tTree * | pp, |
tList_data | ldat ) |
tTree* insert_tTree_node_bydata(tTree* pp, tList_data ldat)
データから tTreeノードをつくり出し,それを ppの子ノード(長子)として追加.
ldat は指定されたものがそのまま使用される.
pp | 追加するノードの親となるノードへのポインタ. |
ldat | 追加するノードデータ.このデータがそのまま使用される. |
Definition at line 259 of file ttree.cpp.
References new_tTree_node().
Referenced by insert_tTree_node_byBuffer(), and insert_tTree_node_bystr().
tTree * insert_tTree_node_bystr | ( | tTree * | pp, |
int | id, | ||
int | lv, | ||
const char * | key, | ||
const char * | val, | ||
void * | ptr, | ||
int | sz ) |
データからノードをつくり出し,それを長子としてリストに追加.
リストポインタ ppが指すノードの後につくり出した ノードを挿入する.
pp | 追加する場所の手前のノードへのポインタ. |
id | 追加するデータ. |
lv | 追加するデータ. |
key | 追加するデータ. 複製 |
val | 追加するデータ. 複製 |
ptr | 汎用データへのポインタ 複製 |
sz | *ptr のサイズ |
Definition at line 325 of file ttree.cpp.
References insert_tTree_node_bydata(), and make_tList_data_bystr().
Referenced by insert_xml_node().
tTree make_tTree_node | ( | tList_data | data | ) |
tTree make_tTree_node(tList_data data)
ツリー用ノードを静的に作成.
data | ノードデータ |
Definition at line 74 of file ttree.cpp.
References JBXL_NORMAL.
void merge_tTree(tTree* tp, tTree* tt)
ツリー tp にツリー tt を結合する.結合後,tt の内容は壊れる(tpとノードを交換した形になる).
tt が tpの一部と同じ構造(キー値)を持つ場合,末端ノードは ttのノードで置き換える.tp に存在しない枝は追加される.
ツリーの深さは tpを深さを元に再計算される.
[in,out] | tp | in: tt の結合ポイント.out: 結合後のツリー. |
[in,out] | tt | in: 結合するツリー.out: 内容は破壊される.要注意 |
Definition at line 917 of file ttree.cpp.
References add_tTree(), adjust_tTree_depth(), div_tTree(), exchange_tTree(), and merge_tTree().
Referenced by merge_tTree().
tTree* move_tTree_node(tTree* pp, tTree* node)
nodeを現在のツリーから切り離し,ppへ移動する.
元のツリーに於いて,nodeが子ノードを持つ場合は,その子ノードを格上げする(木構造を詰める)
移動に於いては,node が姉妹ノードを持っていてもそれらは無視する.
nodeを削除しないで del_tTree_node(), add_tTree_node() を実行するようなもの.
pp | 移動先で親となるノードへのポインタ. |
node | 移動するノードへのポインタ.node->next 以下がツリーでも良い. |
Definition at line 425 of file ttree.cpp.
References adjust_tTree_depth().
tTree * new_tTree_anchor_node | ( | void | ) |
Definition at line 37 of file ttree.cpp.
References init_tList_data(), JBXL_STATE_ANCHOR, and TREE_ANCHOR_NODE.
Referenced by dup_merge_tTree(), and xml_parse_seq().
tTree * new_tTree_node | ( | void | ) |
tTree* new_tTree_node(void)
ツリー用の空ノードを動的に生成.
Definition at line 23 of file ttree.cpp.
References init_tList_data(), and JBXL_NORMAL.
Referenced by add_tTree_node_bydata(), and insert_tTree_node_bydata().
void print_tTree | ( | FILE * | fp, |
tTree * | pp ) |
void print_tTree(FILE* fp, tTree* pp)
ツリーの表示.ポインタ pp以降の全てのノードのキー部のバッファを fpに表示する. pp->ctrl が TREE_NOSIS_NODE の場合は,ppの姉妹ノードは出力しない.
fp | 出力するファイルへのポインタ.NULLの場合は stderr |
pp | 表示を開始するノードへのポインタ. |
Definition at line 1102 of file ttree.cpp.
References print_tTree(), and TREE_NOSIS_NODE.
Referenced by print_tTree().
void print_tTree_tree | ( | FILE * | fp, |
tTree * | pp, | ||
const char * | space ) |
void print_tTree_tree(FILE* fp, tTree* pp, const char* space)
ツリーの表示.ポインタ pp以降の全てのノードのキー部のバッファを fpに表示する. pp->ctrl が TREE_NOSIS_NODE の場合は,ppの姉妹ノードは出力しない.
fp | 出力するファイルへのポインタ.NULLの場合は stderr |
pp | 表示を開始するノードへのポインタ. |
space | 出力の書式を揃えるための空白. |
Definition at line 1063 of file ttree.cpp.
References print_tTree_tree(), and TREE_NOSIS_NODE.
Referenced by print_tTree_tree().
int replace_all_tTree_node | ( | tTree * | tp, |
char * | key, | ||
char * | src, | ||
char * | dst, | ||
int | len ) |
void replace_all_tTree_node(tTree* pp, char* key, char* src, char* dst, int len)
ツリー pp内で keyをキー,srcをノード値として持つ全てのノードのノード値を dst に書き換える.
tp | 置換対象のツリー |
key | サーチキー |
src | 置換対象のノード値 |
dst | 置換後のノード値 |
len | 1以上: 一致させる長さ. |
len | TLIST_MATCH_COMPLETE (0): 完全一致. |
len | TLIST_MATCH_TLISTKEY (-1): pl->key.buf の長さに合わせる. |
len | TLIST_MATCH_STRINGKEY (-2): key の長さに合わせる. |
Definition at line 499 of file ttree.cpp.
References ex_strncmp(), free_Buffer(), make_Buffer_bystr, and replace_all_tTree_node().
Referenced by replace_all_tTree_node().
void replace_tTree_node(tTree* pp, tTree* pt)
ツリー pp内で ツリー ptと同じパターン(キー値を比較)の枝を検索し,ppに一致したパターンの枝があれば,
その枝の各ノードに対して,対応するそれぞれの(pt->ctrl が TREE_COPY_NODE または TREE_NOCMP_COPY_NODE である)
ptのノードの属性で置き換える.
パターンの一致(検索)では ldat.key(キー値)が比較される.
置き換える属性は ldat.id, ldat.lv, ldat.sz, ldat.key, ldat.val, ldat.ptr, ldat.lst
置き換えを行うのは pt->ctrl が TREE_COPY_NODE または TREE_NOCMP_COPY_NODE の場合のみである.(重要)
ldat.val, ldat.ptr, ldat.lst については,ptで値が設定されていなければ,置き換えを行わない.
pp | 置き換え対象のツリー |
pt | 置き換えるツリー |
TRUE | 置換する枝を見つけた.正常に置換されたかどうかは不明. |
FALSE | 置換する枝を見つけられなかった. |
Definition at line 1515 of file ttree.cpp.
References _copy_tTree_byctrl(), adjust_tTree_depth(), FALSE, and find_match_tTree().
tTree* strncasecmp_tTree(tTree* pp, const char* key, int len, int no)
ツリーノードのキー値のサーチ.大文字小文字を無視する.
ポインタ pp以降のノードで,キー部の文字列が keyと前方一致(部分的も可)するノードの内 no番目にあるのを捜し出す.
pp | サーチを開始するノードへのポインタ. |
key | サーチキー(文字列).大文字,小文字を区別しない. |
len | 1以上: 一致させる長さ. |
len | TLIST_MATCH_COMPLETE (0): 完全一致. |
len | TLIST_MATCH_TLISTKEY (-1): pl->key.buf の長さに合わせる. |
len | TLIST_MATCH_STRINGKEY (-2): key の長さに合わせる. |
no | 一致した物の中で何番目の物を返すか指定する.1から数える. |
NULL | 一致したものが無い |
Definition at line 1226 of file ttree.cpp.
References _next_strncasecmp_vertical_tTree(), and ex_strncasecmp().
tTree* strncmp_tTree(tTree* pp, const char* key, int len, int no)
ツリーノードのキー値のサーチ.
ポインタ pp以降のノードで,キー部の文字列が keyと前方一致(部分的も可)するノードの内 no番目にあるのを捜し出す.
pp | サーチを開始するノードへのポインタ. |
key | サーチキー(文字列). |
len | 1以上: 一致させる長さ. |
len | TLIST_MATCH_COMPLETE (0): 完全一致. |
len | TLIST_MATCH_TLISTKEY (-1): pl->key.buf の長さに合わせる. |
len | TLIST_MATCH_STRINGKEY (-2): key の長さに合わせる. |
no | 一致した物の中で何番目の物を返すか指定する.1から数える. |
NULL | 一致したものが無い |
Definition at line 1190 of file ttree.cpp.
References _next_strncmp_vertical_tTree(), and ex_strncmp().
Referenced by get_node_content().