111
|
1 /* derived from PR optimization/11440 */
|
|
2
|
|
3 extern void abort (void);
|
|
4 extern void exit (int);
|
|
5
|
|
6 typedef _Bool bool;
|
|
7 const bool false = 0;
|
|
8 const bool true = 1;
|
|
9
|
|
10 enum EPosition
|
|
11 {
|
|
12 STATIC, RELATIVE, ABSOLUTE, FIXED
|
|
13 };
|
|
14 typedef enum EPosition EPosition;
|
|
15
|
|
16 enum EFloat
|
|
17 {
|
|
18 FNONE = 0, FLEFT, FRIGHT
|
|
19 };
|
|
20 typedef enum EFloat EFloat;
|
|
21
|
|
22 struct RenderBox
|
|
23 {
|
|
24 int unused[6];
|
|
25 short m_verticalPosition;
|
|
26
|
|
27 bool m_layouted : 1;
|
|
28 bool m_unused : 1;
|
|
29 bool m_minMaxKnown : 1;
|
|
30 bool m_floating : 1;
|
|
31
|
|
32 bool m_positioned : 1;
|
|
33 bool m_overhangingContents : 1;
|
|
34 bool m_relPositioned : 1;
|
|
35 bool m_paintSpecial : 1;
|
|
36
|
|
37 bool m_isAnonymous : 1;
|
|
38 bool m_recalcMinMax : 1;
|
|
39 bool m_isText : 1;
|
|
40 bool m_inline : 1;
|
|
41
|
|
42 bool m_replaced : 1;
|
|
43 bool m_mouseInside : 1;
|
|
44 bool m_hasFirstLine : 1;
|
|
45 bool m_isSelectionBorder : 1;
|
|
46
|
|
47 bool (*isTableCell) (struct RenderBox *this);
|
|
48 };
|
|
49
|
|
50 typedef struct RenderBox RenderBox;
|
|
51
|
|
52 struct RenderStyle
|
|
53 {
|
|
54 struct NonInheritedFlags
|
|
55 {
|
|
56 union
|
|
57 {
|
|
58 struct
|
|
59 {
|
|
60 unsigned int _display : 4;
|
|
61 unsigned int _bg_repeat : 2;
|
|
62 bool _bg_attachment : 1;
|
|
63 unsigned int _overflow : 4 ;
|
|
64 unsigned int _vertical_align : 4;
|
|
65 unsigned int _clear : 2;
|
|
66 EPosition _position : 2;
|
|
67 EFloat _floating : 2;
|
|
68 unsigned int _table_layout : 1;
|
|
69 bool _flowAroundFloats :1;
|
|
70
|
|
71 unsigned int _styleType : 3;
|
|
72 bool _hasHover : 1;
|
|
73 bool _hasActive : 1;
|
|
74 bool _clipSpecified : 1;
|
|
75 unsigned int _unicodeBidi : 2;
|
|
76 int _unused : 1;
|
|
77 } f;
|
|
78 int _niflags;
|
|
79 };
|
|
80 } noninherited_flags;
|
|
81 };
|
|
82
|
|
83 typedef struct RenderStyle RenderStyle;
|
|
84
|
|
85 extern void RenderObject_setStyle(RenderBox *this, RenderStyle *_style);
|
|
86 extern void removeFromSpecialObjects(RenderBox *this);
|
|
87
|
|
88
|
|
89
|
|
90 void RenderBox_setStyle(RenderBox *thisin, RenderStyle *_style)
|
|
91 {
|
|
92 RenderBox *this = thisin;
|
|
93 bool oldpos, tmp;
|
|
94 EPosition tmppo;
|
|
95
|
|
96 tmp = this->m_positioned;
|
|
97
|
|
98 oldpos = tmp;
|
|
99
|
|
100 RenderObject_setStyle(this, _style);
|
|
101
|
|
102 tmppo = _style->noninherited_flags.f._position;
|
|
103
|
|
104 switch(tmppo)
|
|
105 {
|
|
106 case ABSOLUTE:
|
|
107 case FIXED:
|
|
108 {
|
|
109 bool ltrue = true;
|
|
110 this->m_positioned = ltrue;
|
|
111 break;
|
|
112 }
|
|
113
|
|
114 default:
|
|
115 {
|
|
116 EFloat tmpf;
|
|
117 EPosition tmpp;
|
|
118 if (oldpos)
|
|
119 {
|
|
120 bool ltrue = true;
|
|
121 this->m_positioned = ltrue;
|
|
122 removeFromSpecialObjects(this);
|
|
123 }
|
|
124 {
|
|
125 bool lfalse = false;
|
|
126 this->m_positioned = lfalse;
|
|
127 }
|
|
128
|
|
129 tmpf = _style->noninherited_flags.f._floating;
|
|
130
|
|
131 if(!this->isTableCell (this) && !(tmpf == FNONE))
|
|
132 {
|
|
133 bool ltrue = true;
|
|
134 this->m_floating = ltrue;
|
|
135 }
|
|
136 else
|
|
137 {
|
|
138 tmpp = _style->noninherited_flags.f._position;
|
|
139 if (tmpp == RELATIVE)
|
|
140 {
|
|
141 bool ltrue = true;
|
|
142 this->m_relPositioned = ltrue;
|
|
143 }
|
|
144 }
|
|
145 }
|
|
146 }
|
|
147 }
|
|
148
|
|
149
|
|
150
|
|
151
|
|
152 RenderBox g_this;
|
|
153 RenderStyle g__style;
|
|
154
|
|
155 void RenderObject_setStyle(RenderBox *this, RenderStyle *_style)
|
|
156 {
|
|
157 (void) this;
|
|
158 (void) _style;
|
|
159 }
|
|
160
|
|
161 void removeFromSpecialObjects(RenderBox *this)
|
|
162 {
|
|
163 (void) this;
|
|
164 }
|
|
165
|
|
166 bool RenderBox_isTableCell (RenderBox *this)
|
|
167 {
|
|
168 (void) this;
|
|
169 return false;
|
|
170 }
|
|
171
|
|
172 int main (void)
|
|
173 {
|
|
174
|
|
175 g_this.m_relPositioned = false;
|
|
176 g_this.m_positioned = false;
|
|
177 g_this.m_floating = false;
|
|
178 g_this.isTableCell = RenderBox_isTableCell;
|
|
179
|
|
180 g__style.noninherited_flags.f._position = FIXED;
|
|
181 g__style.noninherited_flags.f._floating = FNONE;
|
|
182
|
|
183 RenderBox_setStyle (&g_this, &g__style);
|
|
184
|
|
185 if (g_this.m_positioned != true)
|
|
186 abort ();
|
|
187 if (g_this.m_relPositioned != false)
|
|
188 abort ();
|
|
189 if (g_this.m_floating != false)
|
|
190 abort ();
|
|
191
|
|
192 exit (0);
|
|
193 }
|