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