~ubuntu-branches/ubuntu/karmic/moon/karmic

« back to all changes in this revision

Viewing changes to src/value.h

  • Committer: Bazaar Package Importer
  • Author(s): Jo Shields
  • Date: 2009-02-14 12:01:08 UTC
  • Revision ID: james.westby@ubuntu.com-20090214120108-06539vb25vhbd8bn
Tags: upstream-1.0
ImportĀ upstreamĀ versionĀ 1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Automatically generated, do not edit this file directly
 
3
 */
 
4
 
 
5
/*
 
6
 * value.h: Generated code for the type system.
 
7
 *
 
8
 * Contact:
 
9
 *   Moonlight List (moonlight-list@lists.ximian.com)
 
10
 *
 
11
 * Copyright 2007 Novell, Inc. (http://www.novell.com)
 
12
 *
 
13
 * See the LICENSE file included with the distribution for details.
 
14
 * 
 
15
 */
 
16
 
 
17
#ifndef MOON_VALUE_H
 
18
#define MOON_VALUE_H
 
19
 
 
20
#include <glib.h>
 
21
#include <string.h>
 
22
#include <stdint.h>
 
23
#include <cairo.h>
 
24
 
 
25
#include "type.h"
 
26
 
 
27
/* 
 
28
 * ugly file containing the catchall value type we use.
 
29
 */
 
30
 
 
31
struct Color;
 
32
struct Duration;
 
33
struct KeyTime;
 
34
struct Point;
 
35
struct Rect;
 
36
struct Size;
 
37
struct RepeatBehavior;
 
38
struct GridLength;
 
39
struct Thickness;
 
40
struct CornerRadius;
 
41
 
 
42
struct Value;
 
43
 
 
44
class Type;
 
45
class DependencyProperty;
 
46
class Surface;
 
47
class AnimationStorage;
 
48
 
 
49
class Animation;
 
50
class AnimationClock;
 
51
class Application;
 
52
class ArcSegment;
 
53
class AssemblyPart;
 
54
class AssemblyPartCollection;
 
55
class BeginStoryboard;
 
56
class BezierSegment;
 
57
class BitmapImage;
 
58
class Border;
 
59
class Brush;
 
60
class Canvas;
 
61
class Clock;
 
62
class ClockGroup;
 
63
class Collection;
 
64
class ColorAnimation;
 
65
class ColorAnimationUsingKeyFrames;
 
66
class ColorKeyFrame;
 
67
class ColorKeyFrameCollection;
 
68
class ColumnDefinition;
 
69
class ColumnDefinitionCollection;
 
70
class ContentControl;
 
71
class Control;
 
72
class ControlTemplate;
 
73
class DeepZoomImageTileSource;
 
74
class DependencyObject;
 
75
class DependencyObjectCollection;
 
76
class Deployment;
 
77
class DiscreteColorKeyFrame;
 
78
class DiscreteDoubleKeyFrame;
 
79
class DiscreteObjectKeyFrame;
 
80
class DiscretePointKeyFrame;
 
81
class DoubleCollection;
 
82
class DoubleAnimation;
 
83
class DoubleAnimationUsingKeyFrames;
 
84
class DoubleKeyFrame;
 
85
class DoubleKeyFrameCollection;
 
86
class Downloader;
 
87
class DrawingAttributes;
 
88
class Ellipse;
 
89
class EllipseGeometry;
 
90
class ErrorEventArgs;
 
91
class EventArgs;
 
92
class EventObject;
 
93
class EventTrigger;
 
94
class FrameworkElement;
 
95
class FrameworkTemplate;
 
96
class GeneralTransform;
 
97
class Geometry;
 
98
class GeometryCollection;
 
99
class GeometryGroup;
 
100
class Glyphs;
 
101
class GradientBrush;
 
102
class GradientStop;
 
103
class GradientStopCollection;
 
104
class Grid;
 
105
class Image;
 
106
class ImageBrush;
 
107
class ImageErrorEventArgs;
 
108
class InkPresenter;
 
109
class Inline;
 
110
class InlineCollection;
 
111
class KeyEventArgs;
 
112
class KeyFrame;
 
113
class KeyFrameCollection;
 
114
class KeySpline;
 
115
class Line;
 
116
class LinearColorKeyFrame;
 
117
class LinearDoubleKeyFrame;
 
118
class LinearGradientBrush;
 
119
class LinearPointKeyFrame;
 
120
class LineBreak;
 
121
class LineGeometry;
 
122
class LineSegment;
 
123
class ManualTimeSource;
 
124
class MarkerReachedEventArgs;
 
125
class Matrix;
 
126
class MatrixTransform;
 
127
class MediaAttribute;
 
128
class MediaAttributeCollection;
 
129
class MediaBase;
 
130
class MediaElement;
 
131
class MediaErrorEventArgs;
 
132
class MouseEventArgs;
 
133
class MultiScaleImage;
 
134
class MultiScaleSubImage;
 
135
class MultiScaleTileSource;
 
136
class NameScope;
 
137
class ObjectAnimationUsingKeyFrames;
 
138
class ObjectKeyFrame;
 
139
class ObjectKeyFrameCollection;
 
140
class Panel;
 
141
class ParallelTimeline;
 
142
class ParserErrorEventArgs;
 
143
class Path;
 
144
class PathFigure;
 
145
class PathFigureCollection;
 
146
class PathGeometry;
 
147
class PathSegment;
 
148
class PathSegmentCollection;
 
149
class PointCollection;
 
150
class PointAnimation;
 
151
class PointAnimationUsingKeyFrames;
 
152
class PointKeyFrame;
 
153
class PointKeyFrameCollection;
 
154
class PolyBezierSegment;
 
155
class Polygon;
 
156
class Polyline;
 
157
class PolyLineSegment;
 
158
class PolyQuadraticBezierSegment;
 
159
class QuadraticBezierSegment;
 
160
class RadialGradientBrush;
 
161
class Rectangle;
 
162
class RectangleGeometry;
 
163
class ResourceDictionary;
 
164
class RotateTransform;
 
165
class RoutedEventArgs;
 
166
class RowDefinition;
 
167
class RowDefinitionCollection;
 
168
class Run;
 
169
class ScaleTransform;
 
170
class SelectionChangedEventArgs;
 
171
class Setter;
 
172
class SetterBase;
 
173
class SetterBaseCollection;
 
174
class Shape;
 
175
class SizeChangedEventArgs;
 
176
class SkewTransform;
 
177
class SolidColorBrush;
 
178
class SplineColorKeyFrame;
 
179
class SplineDoubleKeyFrame;
 
180
class SplinePointKeyFrame;
 
181
class StackPanel;
 
182
class Storyboard;
 
183
class Stroke;
 
184
class StrokeCollection;
 
185
class Style;
 
186
class StylusInfo;
 
187
class StylusPoint;
 
188
class StylusPointCollection;
 
189
class Surface;
 
190
class SystemTimeSource;
 
191
class TextBlock;
 
192
class TextBox;
 
193
class TextChangedEventArgs;
 
194
class TileBrush;
 
195
class Timeline;
 
196
class TimelineCollection;
 
197
class TimelineGroup;
 
198
class TimelineMarker;
 
199
class TimelineMarkerCollection;
 
200
class TimeManager;
 
201
class TimeSource;
 
202
class Transform;
 
203
class TransformCollection;
 
204
class TransformGroup;
 
205
class TranslateTransform;
 
206
class TriggerCollection;
 
207
class TriggerAction;
 
208
class TriggerActionCollection;
 
209
class UIElement;
 
210
class UIElementCollection;
 
211
class UserControl;
 
212
class VideoBrush;
 
213
class VisualBrush;
 
214
 
 
215
 
 
216
#define checked_get_exact(kind, errval, mem)  g_return_val_if_fail (k == (kind), errval); return mem;
 
217
#define checked_get_subclass(kind, castas)  if (u.dependency_object == NULL) return NULL; g_return_val_if_fail (Type::Find((kind))->IsSubclassOf(k) || Type::Find(k)->IsSubclassOf((kind)), NULL); return (castas*)u.dependency_object;
 
218
 
 
219
struct Value {
 
220
public:
 
221
        void Init ();
 
222
 
 
223
        Value ();
 
224
        Value (const Value& v);
 
225
        explicit Value (Type::Kind k);
 
226
        explicit Value (bool z);
 
227
        explicit Value (double d);
 
228
        explicit Value (gint32 i);
 
229
        Value (gint64 i, Type::Kind as); // Use for TimeSpan and int64 values.
 
230
        Value (Color c);
 
231
        Value (EventObject *obj);
 
232
        Value (Point pt);
 
233
        Value (Rect rect);
 
234
        Value (Size size);
 
235
        Value (RepeatBehavior repeat);
 
236
        Value (Duration duration);
 
237
        Value (KeyTime keytime);
 
238
        Value (GridLength grid_length);
 
239
        Value (Thickness thickness);
 
240
        Value (CornerRadius radius);
 
241
        Value (const char *s);
 
242
        Value (Point *points, int count);
 
243
        Value (double *values, int count);
 
244
 
 
245
        ~Value ();
 
246
 
 
247
        // Use these to create Values with dependency objects with
 
248
        // a reference count of 1 (giving the ownership of the object
 
249
        // to Value).
 
250
        // Useful in cases like this:
 
251
        //   SetValue (SomeProperty, new DependencyObject ())
 
252
        // in which case we have to unref the newly created object.
 
253
        static Value* CreateUnrefPtr (DependencyObject* dob);
 
254
        static Value  CreateUnref (DependencyObject* dob);
 
255
 
 
256
        bool operator!= (const Value &v) const;
 
257
        bool operator== (const Value &v) const;
 
258
        
 
259
        bool            Is (Types* additional_types, Type::Kind type) { return Type::IsSubclassOf (additional_types, k, type); }
 
260
        bool            Is (Type::Kind type) { return Is (NULL, type); }
 
261
 
 
262
        bool            AsBool ()       { checked_get_exact (Type::BOOL, false, (bool)u.i32); }
 
263
        double          AsDouble ()     { checked_get_exact (Type::DOUBLE, 0.0, u.d); }
 
264
        guint64         AsUint64 ()     { checked_get_exact (Type::UINT64, 0, u.ui64); }
 
265
        gint64          AsInt64 ()      { checked_get_exact (Type::INT64, 0, u.i64); }
 
266
        TimeSpan        AsTimeSpan ()   { checked_get_exact (Type::TIMESPAN, 0, (TimeSpan)u.i64); }
 
267
        gint32          AsInt32 ()      { checked_get_exact (Type::INT32, 0, u.i32); }
 
268
        Color*          AsColor ()      { checked_get_exact (Type::COLOR, NULL, u.color); }
 
269
        Point*          AsPoint ()      { checked_get_exact (Type::POINT, NULL, u.point); }
 
270
        Rect*           AsRect ()       { checked_get_exact (Type::RECT, NULL, u.rect); }
 
271
        Size*           AsSize ()       { checked_get_exact (Type::SIZE, NULL, u.size); }
 
272
        char*           AsString ()     { checked_get_exact (Type::STRING, NULL, u.s); }
 
273
        
 
274
        void *          AsManagedObject () { checked_get_exact (Type::MANAGED, NULL, u.managed_object); }
 
275
        
 
276
        RepeatBehavior* AsRepeatBehavior ()     { checked_get_exact (Type::REPEATBEHAVIOR, NULL, u.repeat); }
 
277
        Duration*       AsDuration ()   { checked_get_exact (Type::DURATION, NULL, u.duration); }
 
278
        KeyTime*        AsKeyTime ()    { checked_get_exact (Type::KEYTIME, NULL, u.keytime); }
 
279
        GridLength*     AsGridLength () { checked_get_exact (Type::GRIDLENGTH, NULL, u.grid_length); }
 
280
        Thickness*      AsThickness () { checked_get_exact (Type::THICKNESS, NULL, u.thickness); }
 
281
        CornerRadius*   AsCornerRadius () { checked_get_exact (Type::CORNERRADIUS, NULL, u.corner); }
 
282
        /* nullable primitives (all but bool) */
 
283
        double*         AsNullableDouble ()     { checked_get_exact (Type::DOUBLE, NULL, &u.d); }
 
284
        guint64*        AsNullableUint64 ()     { checked_get_exact (Type::UINT64, NULL, &u.ui64); }
 
285
        gint64*         AsNullableInt64 ()      { checked_get_exact (Type::INT64, NULL, &u.i64); }
 
286
        gint32*         AsNullableInt32 ()      { checked_get_exact (Type::INT32, NULL, &u.i32); }
 
287
        
 
288
        Animation*                     AsAnimation () { checked_get_subclass (Type::ANIMATION, Animation) }
 
289
        AnimationClock*                AsAnimationClock () { checked_get_subclass (Type::ANIMATIONCLOCK, AnimationClock) }
 
290
        Application*                   AsApplication () { checked_get_subclass (Type::APPLICATION, Application) }
 
291
        ArcSegment*                    AsArcSegment () { checked_get_subclass (Type::ARCSEGMENT, ArcSegment) }
 
292
        AssemblyPart*                  AsAssemblyPart () { checked_get_subclass (Type::ASSEMBLYPART, AssemblyPart) }
 
293
        AssemblyPartCollection*        AsAssemblyPartCollection () { checked_get_subclass (Type::ASSEMBLYPART_COLLECTION, AssemblyPartCollection) }
 
294
        BeginStoryboard*               AsBeginStoryboard () { checked_get_subclass (Type::BEGINSTORYBOARD, BeginStoryboard) }
 
295
        BezierSegment*                 AsBezierSegment () { checked_get_subclass (Type::BEZIERSEGMENT, BezierSegment) }
 
296
        BitmapImage*                   AsBitmapImage () { checked_get_subclass (Type::BITMAPIMAGE, BitmapImage) }
 
297
        Border*                        AsBorder () { checked_get_subclass (Type::BORDER, Border) }
 
298
        Brush*                         AsBrush () { checked_get_subclass (Type::BRUSH, Brush) }
 
299
        Canvas*                        AsCanvas () { checked_get_subclass (Type::CANVAS, Canvas) }
 
300
        Clock*                         AsClock () { checked_get_subclass (Type::CLOCK, Clock) }
 
301
        ClockGroup*                    AsClockGroup () { checked_get_subclass (Type::CLOCKGROUP, ClockGroup) }
 
302
        Collection*                    AsCollection () { checked_get_subclass (Type::COLLECTION, Collection) }
 
303
        ColorAnimation*                AsColorAnimation () { checked_get_subclass (Type::COLORANIMATION, ColorAnimation) }
 
304
        ColorAnimationUsingKeyFrames*  AsColorAnimationUsingKeyFrames () { checked_get_subclass (Type::COLORANIMATIONUSINGKEYFRAMES, ColorAnimationUsingKeyFrames) }
 
305
        ColorKeyFrame*                 AsColorKeyFrame () { checked_get_subclass (Type::COLORKEYFRAME, ColorKeyFrame) }
 
306
        ColorKeyFrameCollection*       AsColorKeyFrameCollection () { checked_get_subclass (Type::COLORKEYFRAME_COLLECTION, ColorKeyFrameCollection) }
 
307
        ColumnDefinition*              AsColumnDefinition () { checked_get_subclass (Type::COLUMNDEFINITION, ColumnDefinition) }
 
308
        ColumnDefinitionCollection*    AsColumnDefinitionCollection () { checked_get_subclass (Type::COLUMNDEFINITION_COLLECTION, ColumnDefinitionCollection) }
 
309
        ContentControl*                AsContentControl () { checked_get_subclass (Type::CONTENTCONTROL, ContentControl) }
 
310
        Control*                       AsControl () { checked_get_subclass (Type::CONTROL, Control) }
 
311
        ControlTemplate*               AsControlTemplate () { checked_get_subclass (Type::CONTROLTEMPLATE, ControlTemplate) }
 
312
        DeepZoomImageTileSource*       AsDeepZoomImageTileSource () { checked_get_subclass (Type::DEEPZOOMIMAGETILESOURCE, DeepZoomImageTileSource) }
 
313
        DependencyObject*              AsDependencyObject () { checked_get_subclass (Type::DEPENDENCY_OBJECT, DependencyObject) }
 
314
        DependencyObjectCollection*    AsDependencyObjectCollection () { checked_get_subclass (Type::DEPENDENCY_OBJECT_COLLECTION, DependencyObjectCollection) }
 
315
        Deployment*                    AsDeployment () { checked_get_subclass (Type::DEPLOYMENT, Deployment) }
 
316
        DiscreteColorKeyFrame*         AsDiscreteColorKeyFrame () { checked_get_subclass (Type::DISCRETECOLORKEYFRAME, DiscreteColorKeyFrame) }
 
317
        DiscreteDoubleKeyFrame*        AsDiscreteDoubleKeyFrame () { checked_get_subclass (Type::DISCRETEDOUBLEKEYFRAME, DiscreteDoubleKeyFrame) }
 
318
        DiscreteObjectKeyFrame*        AsDiscreteObjectKeyFrame () { checked_get_subclass (Type::DISCRETEOBJECTKEYFRAME, DiscreteObjectKeyFrame) }
 
319
        DiscretePointKeyFrame*         AsDiscretePointKeyFrame () { checked_get_subclass (Type::DISCRETEPOINTKEYFRAME, DiscretePointKeyFrame) }
 
320
        DoubleCollection*              AsDoubleCollection () { checked_get_subclass (Type::DOUBLE_COLLECTION, DoubleCollection) }
 
321
        DoubleAnimation*               AsDoubleAnimation () { checked_get_subclass (Type::DOUBLEANIMATION, DoubleAnimation) }
 
322
        DoubleAnimationUsingKeyFrames* AsDoubleAnimationUsingKeyFrames () { checked_get_subclass (Type::DOUBLEANIMATIONUSINGKEYFRAMES, DoubleAnimationUsingKeyFrames) }
 
323
        DoubleKeyFrame*                AsDoubleKeyFrame () { checked_get_subclass (Type::DOUBLEKEYFRAME, DoubleKeyFrame) }
 
324
        DoubleKeyFrameCollection*      AsDoubleKeyFrameCollection () { checked_get_subclass (Type::DOUBLEKEYFRAME_COLLECTION, DoubleKeyFrameCollection) }
 
325
        Downloader*                    AsDownloader () { checked_get_subclass (Type::DOWNLOADER, Downloader) }
 
326
        DrawingAttributes*             AsDrawingAttributes () { checked_get_subclass (Type::DRAWINGATTRIBUTES, DrawingAttributes) }
 
327
        Ellipse*                       AsEllipse () { checked_get_subclass (Type::ELLIPSE, Ellipse) }
 
328
        EllipseGeometry*               AsEllipseGeometry () { checked_get_subclass (Type::ELLIPSEGEOMETRY, EllipseGeometry) }
 
329
        ErrorEventArgs*                AsErrorEventArgs () { checked_get_subclass (Type::ERROREVENTARGS, ErrorEventArgs) }
 
330
        EventArgs*                     AsEventArgs () { checked_get_subclass (Type::EVENTARGS, EventArgs) }
 
331
        EventObject*                   AsEventObject () { checked_get_subclass (Type::EVENTOBJECT, EventObject) }
 
332
        EventTrigger*                  AsEventTrigger () { checked_get_subclass (Type::EVENTTRIGGER, EventTrigger) }
 
333
        FrameworkElement*              AsFrameworkElement () { checked_get_subclass (Type::FRAMEWORKELEMENT, FrameworkElement) }
 
334
        FrameworkTemplate*             AsFrameworkTemplate () { checked_get_subclass (Type::FRAMEWORKTEMPLATE, FrameworkTemplate) }
 
335
        GeneralTransform*              AsGeneralTransform () { checked_get_subclass (Type::GENERALTRANSFORM, GeneralTransform) }
 
336
        Geometry*                      AsGeometry () { checked_get_subclass (Type::GEOMETRY, Geometry) }
 
337
        GeometryCollection*            AsGeometryCollection () { checked_get_subclass (Type::GEOMETRY_COLLECTION, GeometryCollection) }
 
338
        GeometryGroup*                 AsGeometryGroup () { checked_get_subclass (Type::GEOMETRYGROUP, GeometryGroup) }
 
339
        Glyphs*                        AsGlyphs () { checked_get_subclass (Type::GLYPHS, Glyphs) }
 
340
        GradientBrush*                 AsGradientBrush () { checked_get_subclass (Type::GRADIENTBRUSH, GradientBrush) }
 
341
        GradientStop*                  AsGradientStop () { checked_get_subclass (Type::GRADIENTSTOP, GradientStop) }
 
342
        GradientStopCollection*        AsGradientStopCollection () { checked_get_subclass (Type::GRADIENTSTOP_COLLECTION, GradientStopCollection) }
 
343
        Grid*                          AsGrid () { checked_get_subclass (Type::GRID, Grid) }
 
344
        Image*                         AsImage () { checked_get_subclass (Type::IMAGE, Image) }
 
345
        ImageBrush*                    AsImageBrush () { checked_get_subclass (Type::IMAGEBRUSH, ImageBrush) }
 
346
        ImageErrorEventArgs*           AsImageErrorEventArgs () { checked_get_subclass (Type::IMAGEERROREVENTARGS, ImageErrorEventArgs) }
 
347
        InkPresenter*                  AsInkPresenter () { checked_get_subclass (Type::INKPRESENTER, InkPresenter) }
 
348
        Inline*                        AsInline () { checked_get_subclass (Type::INLINE, Inline) }
 
349
        InlineCollection*              AsInlineCollection () { checked_get_subclass (Type::INLINE_COLLECTION, InlineCollection) }
 
350
        KeyEventArgs*                  AsKeyEventArgs () { checked_get_subclass (Type::KEYEVENTARGS, KeyEventArgs) }
 
351
        KeyFrame*                      AsKeyFrame () { checked_get_subclass (Type::KEYFRAME, KeyFrame) }
 
352
        KeyFrameCollection*            AsKeyFrameCollection () { checked_get_subclass (Type::KEYFRAME_COLLECTION, KeyFrameCollection) }
 
353
        KeySpline*                     AsKeySpline () { checked_get_subclass (Type::KEYSPLINE, KeySpline) }
 
354
        Line*                          AsLine () { checked_get_subclass (Type::LINE, Line) }
 
355
        LinearColorKeyFrame*           AsLinearColorKeyFrame () { checked_get_subclass (Type::LINEARCOLORKEYFRAME, LinearColorKeyFrame) }
 
356
        LinearDoubleKeyFrame*          AsLinearDoubleKeyFrame () { checked_get_subclass (Type::LINEARDOUBLEKEYFRAME, LinearDoubleKeyFrame) }
 
357
        LinearGradientBrush*           AsLinearGradientBrush () { checked_get_subclass (Type::LINEARGRADIENTBRUSH, LinearGradientBrush) }
 
358
        LinearPointKeyFrame*           AsLinearPointKeyFrame () { checked_get_subclass (Type::LINEARPOINTKEYFRAME, LinearPointKeyFrame) }
 
359
        LineBreak*                     AsLineBreak () { checked_get_subclass (Type::LINEBREAK, LineBreak) }
 
360
        LineGeometry*                  AsLineGeometry () { checked_get_subclass (Type::LINEGEOMETRY, LineGeometry) }
 
361
        LineSegment*                   AsLineSegment () { checked_get_subclass (Type::LINESEGMENT, LineSegment) }
 
362
        ManualTimeSource*              AsManualTimeSource () { checked_get_subclass (Type::MANUALTIMESOURCE, ManualTimeSource) }
 
363
        MarkerReachedEventArgs*        AsMarkerReachedEventArgs () { checked_get_subclass (Type::MARKERREACHEDEVENTARGS, MarkerReachedEventArgs) }
 
364
        Matrix*                        AsMatrix () { checked_get_subclass (Type::MATRIX, Matrix) }
 
365
        MatrixTransform*               AsMatrixTransform () { checked_get_subclass (Type::MATRIXTRANSFORM, MatrixTransform) }
 
366
        MediaAttribute*                AsMediaAttribute () { checked_get_subclass (Type::MEDIAATTRIBUTE, MediaAttribute) }
 
367
        MediaAttributeCollection*      AsMediaAttributeCollection () { checked_get_subclass (Type::MEDIAATTRIBUTE_COLLECTION, MediaAttributeCollection) }
 
368
        MediaBase*                     AsMediaBase () { checked_get_subclass (Type::MEDIABASE, MediaBase) }
 
369
        MediaElement*                  AsMediaElement () { checked_get_subclass (Type::MEDIAELEMENT, MediaElement) }
 
370
        MediaErrorEventArgs*           AsMediaErrorEventArgs () { checked_get_subclass (Type::MEDIAERROREVENTARGS, MediaErrorEventArgs) }
 
371
        MouseEventArgs*                AsMouseEventArgs () { checked_get_subclass (Type::MOUSEEVENTARGS, MouseEventArgs) }
 
372
        MultiScaleImage*               AsMultiScaleImage () { checked_get_subclass (Type::MULTISCALEIMAGE, MultiScaleImage) }
 
373
        MultiScaleSubImage*            AsMultiScaleSubImage () { checked_get_subclass (Type::MULTISCALESUBIMAGE, MultiScaleSubImage) }
 
374
        MultiScaleTileSource*          AsMultiScaleTileSource () { checked_get_subclass (Type::MULTISCALETILESOURCE, MultiScaleTileSource) }
 
375
        NameScope*                     AsNameScope () { checked_get_subclass (Type::NAMESCOPE, NameScope) }
 
376
        ObjectAnimationUsingKeyFrames* AsObjectAnimationUsingKeyFrames () { checked_get_subclass (Type::OBJECTANIMATIONUSINGKEYFRAMES, ObjectAnimationUsingKeyFrames) }
 
377
        ObjectKeyFrame*                AsObjectKeyFrame () { checked_get_subclass (Type::OBJECTKEYFRAME, ObjectKeyFrame) }
 
378
        ObjectKeyFrameCollection*      AsObjectKeyFrameCollection () { checked_get_subclass (Type::OBJECTKEYFRAME_COLLECTION, ObjectKeyFrameCollection) }
 
379
        Panel*                         AsPanel () { checked_get_subclass (Type::PANEL, Panel) }
 
380
        ParallelTimeline*              AsParallelTimeline () { checked_get_subclass (Type::PARALLELTIMELINE, ParallelTimeline) }
 
381
        ParserErrorEventArgs*          AsParserErrorEventArgs () { checked_get_subclass (Type::PARSERERROREVENTARGS, ParserErrorEventArgs) }
 
382
        Path*                          AsPath () { checked_get_subclass (Type::PATH, Path) }
 
383
        PathFigure*                    AsPathFigure () { checked_get_subclass (Type::PATHFIGURE, PathFigure) }
 
384
        PathFigureCollection*          AsPathFigureCollection () { checked_get_subclass (Type::PATHFIGURE_COLLECTION, PathFigureCollection) }
 
385
        PathGeometry*                  AsPathGeometry () { checked_get_subclass (Type::PATHGEOMETRY, PathGeometry) }
 
386
        PathSegment*                   AsPathSegment () { checked_get_subclass (Type::PATHSEGMENT, PathSegment) }
 
387
        PathSegmentCollection*         AsPathSegmentCollection () { checked_get_subclass (Type::PATHSEGMENT_COLLECTION, PathSegmentCollection) }
 
388
        PointCollection*               AsPointCollection () { checked_get_subclass (Type::POINT_COLLECTION, PointCollection) }
 
389
        PointAnimation*                AsPointAnimation () { checked_get_subclass (Type::POINTANIMATION, PointAnimation) }
 
390
        PointAnimationUsingKeyFrames*  AsPointAnimationUsingKeyFrames () { checked_get_subclass (Type::POINTANIMATIONUSINGKEYFRAMES, PointAnimationUsingKeyFrames) }
 
391
        PointKeyFrame*                 AsPointKeyFrame () { checked_get_subclass (Type::POINTKEYFRAME, PointKeyFrame) }
 
392
        PointKeyFrameCollection*       AsPointKeyFrameCollection () { checked_get_subclass (Type::POINTKEYFRAME_COLLECTION, PointKeyFrameCollection) }
 
393
        PolyBezierSegment*             AsPolyBezierSegment () { checked_get_subclass (Type::POLYBEZIERSEGMENT, PolyBezierSegment) }
 
394
        Polygon*                       AsPolygon () { checked_get_subclass (Type::POLYGON, Polygon) }
 
395
        Polyline*                      AsPolyline () { checked_get_subclass (Type::POLYLINE, Polyline) }
 
396
        PolyLineSegment*               AsPolyLineSegment () { checked_get_subclass (Type::POLYLINESEGMENT, PolyLineSegment) }
 
397
        PolyQuadraticBezierSegment*    AsPolyQuadraticBezierSegment () { checked_get_subclass (Type::POLYQUADRATICBEZIERSEGMENT, PolyQuadraticBezierSegment) }
 
398
        QuadraticBezierSegment*        AsQuadraticBezierSegment () { checked_get_subclass (Type::QUADRATICBEZIERSEGMENT, QuadraticBezierSegment) }
 
399
        RadialGradientBrush*           AsRadialGradientBrush () { checked_get_subclass (Type::RADIALGRADIENTBRUSH, RadialGradientBrush) }
 
400
        Rectangle*                     AsRectangle () { checked_get_subclass (Type::RECTANGLE, Rectangle) }
 
401
        RectangleGeometry*             AsRectangleGeometry () { checked_get_subclass (Type::RECTANGLEGEOMETRY, RectangleGeometry) }
 
402
        ResourceDictionary*            AsResourceDictionary () { checked_get_subclass (Type::RESOURCE_DICTIONARY, ResourceDictionary) }
 
403
        RotateTransform*               AsRotateTransform () { checked_get_subclass (Type::ROTATETRANSFORM, RotateTransform) }
 
404
        RoutedEventArgs*               AsRoutedEventArgs () { checked_get_subclass (Type::ROUTEDEVENTARGS, RoutedEventArgs) }
 
405
        RowDefinition*                 AsRowDefinition () { checked_get_subclass (Type::ROWDEFINITION, RowDefinition) }
 
406
        RowDefinitionCollection*       AsRowDefinitionCollection () { checked_get_subclass (Type::ROWDEFINITION_COLLECTION, RowDefinitionCollection) }
 
407
        Run*                           AsRun () { checked_get_subclass (Type::RUN, Run) }
 
408
        ScaleTransform*                AsScaleTransform () { checked_get_subclass (Type::SCALETRANSFORM, ScaleTransform) }
 
409
        SelectionChangedEventArgs*     AsSelectionChangedEventArgs () { checked_get_subclass (Type::SELECTIONCHANGEDEVENTARGS, SelectionChangedEventArgs) }
 
410
        Setter*                        AsSetter () { checked_get_subclass (Type::SETTER, Setter) }
 
411
        SetterBase*                    AsSetterBase () { checked_get_subclass (Type::SETTERBASE, SetterBase) }
 
412
        SetterBaseCollection*          AsSetterBaseCollection () { checked_get_subclass (Type::SETTERBASE_COLLECTION, SetterBaseCollection) }
 
413
        Shape*                         AsShape () { checked_get_subclass (Type::SHAPE, Shape) }
 
414
        SizeChangedEventArgs*          AsSizeChangedEventArgs () { checked_get_subclass (Type::SIZECHANGEDEVENTARGS, SizeChangedEventArgs) }
 
415
        SkewTransform*                 AsSkewTransform () { checked_get_subclass (Type::SKEWTRANSFORM, SkewTransform) }
 
416
        SolidColorBrush*               AsSolidColorBrush () { checked_get_subclass (Type::SOLIDCOLORBRUSH, SolidColorBrush) }
 
417
        SplineColorKeyFrame*           AsSplineColorKeyFrame () { checked_get_subclass (Type::SPLINECOLORKEYFRAME, SplineColorKeyFrame) }
 
418
        SplineDoubleKeyFrame*          AsSplineDoubleKeyFrame () { checked_get_subclass (Type::SPLINEDOUBLEKEYFRAME, SplineDoubleKeyFrame) }
 
419
        SplinePointKeyFrame*           AsSplinePointKeyFrame () { checked_get_subclass (Type::SPLINEPOINTKEYFRAME, SplinePointKeyFrame) }
 
420
        StackPanel*                    AsStackPanel () { checked_get_subclass (Type::STACKPANEL, StackPanel) }
 
421
        Storyboard*                    AsStoryboard () { checked_get_subclass (Type::STORYBOARD, Storyboard) }
 
422
        Stroke*                        AsStroke () { checked_get_subclass (Type::STROKE, Stroke) }
 
423
        StrokeCollection*              AsStrokeCollection () { checked_get_subclass (Type::STROKE_COLLECTION, StrokeCollection) }
 
424
        Style*                         AsStyle () { checked_get_subclass (Type::STYLE, Style) }
 
425
        StylusInfo*                    AsStylusInfo () { checked_get_subclass (Type::STYLUSINFO, StylusInfo) }
 
426
        StylusPoint*                   AsStylusPoint () { checked_get_subclass (Type::STYLUSPOINT, StylusPoint) }
 
427
        StylusPointCollection*         AsStylusPointCollection () { checked_get_subclass (Type::STYLUSPOINT_COLLECTION, StylusPointCollection) }
 
428
        Surface*                       AsSurface () { checked_get_subclass (Type::SURFACE, Surface) }
 
429
        SystemTimeSource*              AsSystemTimeSource () { checked_get_subclass (Type::SYSTEMTIMESOURCE, SystemTimeSource) }
 
430
        TextBlock*                     AsTextBlock () { checked_get_subclass (Type::TEXTBLOCK, TextBlock) }
 
431
        TextBox*                       AsTextBox () { checked_get_subclass (Type::TEXTBOX, TextBox) }
 
432
        TextChangedEventArgs*          AsTextChangedEventArgs () { checked_get_subclass (Type::TEXTCHANGEDEVENTARGS, TextChangedEventArgs) }
 
433
        TileBrush*                     AsTileBrush () { checked_get_subclass (Type::TILEBRUSH, TileBrush) }
 
434
        Timeline*                      AsTimeline () { checked_get_subclass (Type::TIMELINE, Timeline) }
 
435
        TimelineCollection*            AsTimelineCollection () { checked_get_subclass (Type::TIMELINE_COLLECTION, TimelineCollection) }
 
436
        TimelineGroup*                 AsTimelineGroup () { checked_get_subclass (Type::TIMELINEGROUP, TimelineGroup) }
 
437
        TimelineMarker*                AsTimelineMarker () { checked_get_subclass (Type::TIMELINEMARKER, TimelineMarker) }
 
438
        TimelineMarkerCollection*      AsTimelineMarkerCollection () { checked_get_subclass (Type::TIMELINEMARKER_COLLECTION, TimelineMarkerCollection) }
 
439
        TimeManager*                   AsTimeManager () { checked_get_subclass (Type::TIMEMANAGER, TimeManager) }
 
440
        TimeSource*                    AsTimeSource () { checked_get_subclass (Type::TIMESOURCE, TimeSource) }
 
441
        Transform*                     AsTransform () { checked_get_subclass (Type::TRANSFORM, Transform) }
 
442
        TransformCollection*           AsTransformCollection () { checked_get_subclass (Type::TRANSFORM_COLLECTION, TransformCollection) }
 
443
        TransformGroup*                AsTransformGroup () { checked_get_subclass (Type::TRANSFORMGROUP, TransformGroup) }
 
444
        TranslateTransform*            AsTranslateTransform () { checked_get_subclass (Type::TRANSLATETRANSFORM, TranslateTransform) }
 
445
        TriggerCollection*             AsTriggerCollection () { checked_get_subclass (Type::TRIGGER_COLLECTION, TriggerCollection) }
 
446
        TriggerAction*                 AsTriggerAction () { checked_get_subclass (Type::TRIGGERACTION, TriggerAction) }
 
447
        TriggerActionCollection*       AsTriggerActionCollection () { checked_get_subclass (Type::TRIGGERACTION_COLLECTION, TriggerActionCollection) }
 
448
        UIElement*                     AsUIElement () { checked_get_subclass (Type::UIELEMENT, UIElement) }
 
449
        UIElementCollection*           AsUIElementCollection () { checked_get_subclass (Type::UIELEMENT_COLLECTION, UIElementCollection) }
 
450
        UserControl*                   AsUserControl () { checked_get_subclass (Type::USERCONTROL, UserControl) }
 
451
        VideoBrush*                    AsVideoBrush () { checked_get_subclass (Type::VIDEOBRUSH, VideoBrush) }
 
452
        VisualBrush*                   AsVisualBrush () { checked_get_subclass (Type::VISUALBRUSH, VisualBrush) }
 
453
 
 
454
        
 
455
        char *ToString ();
 
456
        
 
457
        Type::Kind GetKind ();
 
458
        
 
459
        void FreeValue ();
 
460
        
 
461
  private:
 
462
        Type::Kind k;
 
463
        
 
464
        gint32 padding;
 
465
        
 
466
        union {
 
467
                double d;
 
468
                guint64 ui64;
 
469
                gint64 i64;
 
470
                gint32 i32;
 
471
                char *s;
 
472
                EventObject *dependency_object;
 
473
                Color *color;
 
474
                Point *point;
 
475
                Rect *rect;
 
476
                Size *size;
 
477
                RepeatBehavior *repeat;
 
478
                Duration *duration;
 
479
                KeyTime *keytime;
 
480
                GridLength *grid_length;
 
481
                Thickness *thickness;
 
482
                CornerRadius *corner;
 
483
                void *managed_object;
 
484
        } u;
 
485
        
 
486
        // You don't want to be using this ctor.  it's here to help
 
487
        // c++ recognize bad unspecified pointer args to Value ctors
 
488
        // (it normally converts them to bool, which we handle, so you
 
489
        // never see the error of your ways).  So do the world a
 
490
        // favor, and don't expose this ctor. :)
 
491
        Value (void *v) { }
 
492
        // You don't want to be using this ctor either.
 
493
        // Use the Value (gint64, Type::Kind) ctor
 
494
        // (Both for TimeSpan and int64_t)
 
495
        // This one is bad because it get used by either int64_t
 
496
        // and TimeSpan, and the constructor doesn't know which 
 
497
        // of the two types it is.
 
498
        explicit Value (gint64 i) {};
 
499
};
 
500
 
 
501
G_BEGIN_DECLS
 
502
void value_free_value (Value *value);
 
503
G_END_DECLS
 
504
 
 
505
 
 
506
#endif /* MOON_VALUE_H */