1 """Data structures in Foam-Files that can't be directly represented by Python-Structures"""
2
3 import FoamFileGenerator
4 from copy import deepcopy
5
8 self.val=val
9 self.name=name
10 if self.name==None:
11 self.uniform=True
12 else:
13 assert(type(val)==list)
14 self.uniform=False
15
24
26 if other==None:
27 return 1
28 if self.uniform!=other.uniform:
29 return cmp(self.uniform,other.uniform)
30 elif self.name!=other.name:
31 return cmp(self.name,other.name)
32 else:
33 return cmp(self.val,other.val)
34
36 assert(not self.uniform)
37 return self.val[key]
38
40 assert(not self.uniform)
41 self.val[key]=value
42
43
46 assert(len(dims)==7)
47 self.dims=list(dims)
48
50 result="[ "
51 for v in self.dims:
52 result+=str(v)+" "
53 result+="]"
54 return result
55
57 if other==None:
58 return 1
59 return cmp(self.dims,other.dims)
60
62 return self.dims[key]
63
65 self.dims[key]=value
66
70
72 return "(%g %g %g)" % tuple(self.vals)
73
75 if other==None:
76 return 1
77 return cmp(self.vals,other.vals)
78
80 return self.vals[key]
81
83 self.vals[key]=value
84
86 """A class that acts like a dictionary, but preserves the order
87 of the entries. Used to beautify the output"""
88
90 dict.__init__(self)
91 self._order=[]
92
94 dict.__setitem__(self,key,value)
95 if key not in self._order:
96 self._order.append(key)
97
99 dict.__delitem__(self,key)
100 self._order.remove(key)
101
103 new=DictProxy()
104 for k in self._order:
105 new[k]=deepcopy(self[k],memo)
106 return new
107