| 123456789101112131415161718192021222324252627282930 |
- MODULE CStructLayoutProg;
- FROM SYSTEM IMPORT ADDRESS, ADR;
- FROM CStructLayout IMPORT Mixed, Rect, FRect, RGBA;
- PROCEDURE mixed_size () : INTEGER; EXTERNAL "m2_c_layout_mixed_size";
- PROCEDURE rect_size () : INTEGER; EXTERNAL "m2_c_layout_rect_size";
- PROCEDURE frect_size () : INTEGER; EXTERNAL "m2_c_layout_frect_size";
- PROCEDURE rgba_size () : INTEGER; EXTERNAL "m2_c_layout_rgba_size";
- PROCEDURE off (base, field : ADDRESS; which : INTEGER) : INTEGER;
- EXTERNAL "m2_c_layout_offset";
- VAR
- ExitCode : INTEGER;
- m : Mixed;
- BEGIN
- IF (SIZE(Mixed) = mixed_size())
- AND (SIZE(Rect) = rect_size())
- AND (SIZE(FRect) = frect_size())
- AND (SIZE(RGBA) = rgba_size())
- AND (off(ADR(m), ADR(m.b), 0) = 1)
- AND (off(ADR(m), ADR(m.f), 1) = 1)
- AND (off(ADR(m), ADR(m.d), 2) = 1)
- AND (off(ADR(m), ADR(m.i), 3) = 1)
- AND (off(ADR(m), ADR(m.p), 4) = 1) THEN
- ExitCode := 42
- ELSE
- ExitCode := 1
- END
- END CStructLayoutProg.
|