acme
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages Concepts
_impl.h
1#pragma once
2
3
4//inline stream & operator <<(stream & s, const ::data::tree & tree)
5//{
6//
7// auto ptreeitem = tree.get_base_item();
8//
9// index iLevel = 0;
10//
11// while (true)
12// {
13//
14// ptreeitem = ptreeitem->get_child_next_or_parent();
15//
16// if (!ptreeitem)
17// {
18//
19// break;
20//
21// }
22//
23// iLevel = ptreeitem->m_iLevel;
24//
25// s << (int)iLevel;
26//
27// __save_object(s, ptreeitem->m_pdataitem);
28//
29// }
30//
31// s << (int)-1;
32//
33// return s;
34//
35//}
36//
37//
38//
39//inline stream & operator >>(stream & s, ::data::tree & tree)
40//{
41//
42// auto ptreeitem = tree.get_base_item();
43//
44// int iPreviousLevel = 0;
45//
46// int iLevel = 0;
47//
48// while (true)
49// {
50//
51// iPreviousLevel = iLevel;
52//
53// s >> iLevel;
54//
55// //if (s.fail())
56// //{
57//
58// // break;
59//
60// //}
61//
62// if (iLevel < 0)
63// {
64//
65// break;
66//
67// }
68//
69// auto pitem = __load_object< ::item>(s);
70//
71// if (iLevel == iPreviousLevel)
72// {
73//
74// ptreeitem = tree.insert_item(pitem, ::data::e_relative_last_sibling, ptreeitem);
75//
76// }
77// else if (iLevel > iPreviousLevel)
78// {
79//
80// ptreeitem = tree.insert_item(pitem, ::data::e_relative_first_child, ptreeitem);
81//
82// }
83// else
84// {
85//
86// while (iLevel < iPreviousLevel)
87// {
88//
89// ptreeitem = ptreeitem->get_parent();
90//
91// iPreviousLevel--;
92//
93// }
94//
95// ptreeitem = tree.insert_item(pitem, ::data::e_relative_last_sibling, ptreeitem);
96//
97// }
98//
99// }
100//
101// return s;
102//
103//}
104//
105//
106//