-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcomplex_type.cpp
More file actions
112 lines (95 loc) · 2.34 KB
/
complex_type.cpp
File metadata and controls
112 lines (95 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include "complex_type.h"
#include "QtDebug"
complex_TYPE::complex_TYPE()
{
}
void complex_TYPE::operation(int i)
{
if(i==1)
{
QMap<int, metafile*>::const_iterator iter =contents.cbegin();
while (iter != contents.cend())
{
iter.value()->operation(i);//不允许operation用来换名字,必须有一个单独的通道
++iter;
}
}
else
{
QMap<int, metafile*>::const_iterator iter =contents.cbegin();
while (iter != contents.cend())
{
iter.value()->operation(0);//不允许operation用来换名字,必须有一个单独的通道
++iter;
}
}
}
void complex_TYPE::setparents(metafile *parents)
{
parentmetafile=parents;
}
void complex_TYPE::rename_iterate()
{
if(variable_name=="")
{
setvariablename("ptopic");
}
else
{
setvariablename(parentmetafile->getvariablename()+"."+variable_name);
}
qDebug()<<variable_name;
QMap<int, metafile*>::const_iterator iter =contents.cbegin();
int order=1;
while (iter != contents.cend())
{
iter.value()->rename_iterate();
++iter;
}
}
void complex_TYPE::setvariablename(QString name)
{
variable_name=name;
}
int complex_TYPE::getsize()
{
if(size<0)//代表初次计算
{
size=0;
QMap<int, metafile*>::const_iterator iter =contents.cbegin();
while (iter != contents.cend())
{
size+=iter.value()->getsize();
++iter;
}
return size;
}
else
{
return size;
}
}
QString complex_TYPE::getvariablename()
{
return variable_name;
}
metafile *complex_TYPE::deep_copy()
{
complex_TYPE *newtype=new complex_TYPE;
newtype->self_name=self_name;
newtype->variable_name=variable_name;//不要在interface里面保留和使用变量,会出现无法预测的行为
newtype->m_writer=m_writer;
QMap<int,metafile*> newcontents;
QMap<int, metafile*>::const_iterator iter =contents.cbegin();
int order=1;
while (iter != contents.cend())
{
metafile* files=iter.value()->deep_copy();//可能重命名要来一下...
files->setparents(newtype);
newcontents.insert(order,files);
order++;
++iter;
}
newtype->contents=newcontents;
return newtype;
}