111
|
1 // { dg-lto-do link }
|
131
|
2 // { dg-lto-options { { -flto -O2 -Wno-return-type } } }
|
111
|
3 // { dg-extra-ld-options "-r -nostdlib -O0" }
|
|
4
|
|
5 class CstringStorageReference {
|
|
6 public:
|
|
7 ~CstringStorageReference ();
|
|
8 };
|
|
9 class Cstring {
|
|
10 CstringStorageReference m_stringRef;
|
|
11 public:
|
|
12 Cstring (const char *str, int l = 0);
|
|
13 unsigned int getLength () const;
|
|
14 };
|
|
15 class ZEvent_Component { };
|
|
16 class ZEvent_Data { };
|
|
17 class ZEvent_Interrupt { };
|
|
18 class ZEvent_Mouse { };
|
|
19 class ZEvent_Key { };
|
|
20 class ZEventHandler {
|
|
21 virtual void HandleEvent (const ZEvent_Component & event);
|
|
22 virtual void HandleEvent (const ZEvent_Mouse & event);
|
|
23 virtual void HandleEvent (const ZEvent_Key & event);
|
|
24 virtual void HandleEvent (const ZEvent_Interrupt & event);
|
|
25 virtual void HandleEvent (const ZEvent_Data & event);
|
|
26 };
|
|
27 enum ZHorizontalAlignment { HA_Left };
|
|
28 enum ZVerticalAlignment { VA_Baseline };
|
|
29 struct ZDevicePointStruct { };
|
|
30 struct ZDeviceRectangleStruct { };
|
|
31 struct ZDeviceCircleStruct { };
|
|
32 class ZOutputDevice;
|
|
33 class Foo;
|
|
34 class ZRubberBand {
|
|
35 public:
|
|
36 ZOutputDevice * getOutputDevice ();
|
|
37 };
|
|
38 class ZRubberBand2P : public ZRubberBand {
|
|
39 virtual void Init ();
|
|
40 Foo *mp_graphicContext;
|
|
41 int m_textAscent;
|
|
42 int m_OkButtonWidth;
|
|
43 int m_OkButtonHeight;
|
|
44 };
|
|
45 class ZColor { };
|
|
46 class ZViewPort2D { };
|
|
47 class ZCursor;
|
|
48 class ZPixmap;
|
|
49 class ZOutputDevice:public ZEventHandler {
|
|
50 public:
|
|
51 typedef ZHorizontalAlignment THorizontalAlignment;
|
|
52 typedef ZVerticalAlignment TVerticalAlignment;
|
|
53 virtual const char *MyName () const { return ""; }
|
|
54 virtual ~ ZOutputDevice ();
|
|
55 virtual Cstring getTitle () const;
|
|
56 virtual void setTitle (const Cstring &) { }
|
|
57 virtual void Init ();
|
|
58 virtual void shutdown ();
|
|
59 virtual void minimize ();
|
|
60 virtual void normalize ();
|
|
61 virtual void raiseToTop ();
|
|
62 virtual ZViewPort2D GetViewPort () const;
|
|
63 virtual void setBackgroundColor (const ZColor & color) = 0;
|
|
64 virtual void Clear () = 0;
|
|
65 virtual void Flush (int forced) = 0;
|
|
66 virtual void dismissCache () { }
|
|
67 virtual int GetDeviceWidth () const = 0;
|
|
68 virtual int GetDeviceHeight () const = 0;
|
|
69 virtual Foo *CreateGraphicContext () = 0;
|
|
70 virtual ZCursor *createCursor (const ZPixmap &, int, int) { return __null; }
|
|
71 virtual void DrawLine (const Foo & gc, int x1, int y1, int x2, int y2) = 0;
|
|
72 virtual void DrawLines (const Foo & gc, const ZDevicePointStruct * points, unsigned int count) = 0;
|
|
73 virtual void FillPolygon (const Foo & gc, const ZDevicePointStruct * points, unsigned int count) = 0;
|
|
74 virtual void DrawPoint (const Foo & gc, int x1, int y1) = 0;
|
|
75 virtual void DrawPoints (const Foo & gc, const ZDevicePointStruct * points, unsigned int count) = 0;
|
|
76 virtual void DrawRectangle (const Foo & gc, int x, int y, int width, int height) = 0;
|
|
77 virtual void DrawRectangles (const Foo & gc, const ZDeviceRectangleStruct * rectangles, unsigned int count) = 0;
|
|
78 virtual void FillRectangle (const Foo & gc, int x, int y, int width, int height) = 0;
|
|
79 virtual void FillRectangles (const Foo & gc, const ZDeviceRectangleStruct * rectangles, unsigned int count) = 0;
|
|
80 virtual void DrawCircle (const Foo & gc, int x, int y, int radius) = 0;
|
|
81 virtual void DrawCircles (const Foo & gc, const ZDeviceCircleStruct * circle, unsigned int count) = 0;
|
|
82 virtual void FillCircle (const Foo & gc, int x, int y, int radius) = 0;
|
|
83 virtual void FillCircles (const Foo & gc, const ZDeviceCircleStruct * circle, unsigned int count) = 0;
|
|
84 virtual void DrawString (const Foo & gc, int xx, int yy, const Cstring & theString, THorizontalAlignment horAlign = HA_Left, TVerticalAlignment verAlign = VA_Baseline) = 0;
|
|
85 virtual void getStringBounds (const Foo & gc, const Cstring & theString, int & width, int & height, int & ascent) const;
|
|
86 };
|
|
87 template < class T > class EMaskContentVector
|
|
88 {
|
|
89 signed m_freelist_idx:32;
|
|
90 EMaskContentVector (const EMaskContentVector < T > &, void *buf);
|
|
91 };
|
|
92 template < class T > EMaskContentVector <
|
|
93 T >::EMaskContentVector (const EMaskContentVector < T > &elem, void *buf):
|
|
94 m_freelist_idx (-1)
|
|
95 {
|
|
96 }
|
|
97 void ZRubberBand2P::Init () {
|
|
98 getOutputDevice ()->getStringBounds (*mp_graphicContext, Cstring ("Ok"), m_OkButtonWidth, m_OkButtonHeight, m_textAscent);
|
|
99 }
|