1/* derived from PR optimization/11440  */
2
3extern void abort (void);
4extern void exit (int);
5
6typedef _Bool bool;
7const bool false = 0;
8const bool true = 1;
9
10enum EPosition
11{
12  STATIC, RELATIVE, ABSOLUTE, FIXED
13};
14typedef enum EPosition EPosition;
15
16enum EFloat
17{
18  FNONE = 0, FLEFT, FRIGHT
19};
20typedef enum EFloat EFloat;
21
22struct 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
50typedef struct RenderBox RenderBox;
51
52struct 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
83typedef struct RenderStyle RenderStyle;
84
85extern void RenderObject_setStyle(RenderBox *this, RenderStyle *_style);
86extern void removeFromSpecialObjects(RenderBox *this);
87
88
89
90void 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
152RenderBox g_this;
153RenderStyle g__style;
154
155void RenderObject_setStyle(RenderBox *this, RenderStyle *_style)
156{
157  (void) this;
158  (void) _style;
159}
160
161void removeFromSpecialObjects(RenderBox *this)
162{
163  (void) this;
164}
165
166bool RenderBox_isTableCell (RenderBox *this)
167{
168  (void) this;
169  return false;
170}
171
172int 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}
194