stub out the Projection classes as well as duplicating the disgusting hack used for...
[moon.git] / src / type.h
blob7e77bfe671c1697080e86ff8448e993825f70d75
1 /*
2 * Automatically generated, do not edit this file directly
3 */
5 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
6 /*
7 * type.h: Generated code for the type system.
9 * Contact:
10 * Moonlight List (moonlight-list@lists.ximian.com)
12 * Copyright 2007 Novell, Inc. (http://www.novell.com)
14 * See the LICENSE file included with the distribution for details.
17 #ifndef __TYPE_H__
18 #define __TYPE_H__
20 #include <glib.h>
21 #include "list.h"
23 class Deployment;
24 class DependencyObject;
25 class DependencyProperty;
26 class Surface;
27 class Types;
29 /* @CBindingRequisite */
30 typedef gint64 TimeSpan;
31 typedef DependencyObject *create_inst_func (void);
33 class Type {
34 friend class Types;
35 public:
36 enum Kind {
37 // START_MANAGED_MAPPING
38 INVALID,
39 ACCESSIBILITY,
40 ALSASOURCE,
41 ANIMATION,
42 ANIMATIONCLOCK,
43 APPLICATION,
44 ARCSEGMENT,
45 ASFDEMUXER,
46 ASFMARKERDECODER,
47 ASFPACKET,
48 ASFPARSER,
49 ASSEMBLYPART,
50 ASSEMBLYPART_COLLECTION,
51 ASXDEMUXER,
52 AUDIOSOURCE,
53 AUDIOSTREAM,
54 BACKEASE,
55 BEGINSTORYBOARD,
56 BEZIERSEGMENT,
57 BITMAPCACHE,
58 BITMAPIMAGE,
59 BITMAPSOURCE,
60 BLUREFFECT,
61 BOOL,
62 BORDER,
63 BOUNCEEASE,
64 BRUSH,
65 CACHEMODE,
66 CANVAS,
67 CHAR,
68 CIRCLEEASE,
69 CLOCK,
70 CLOCKGROUP,
71 CODECDOWNLOADER,
72 COLLECTION,
73 COLLECTIONCHANGEDEVENTARGS,
74 COLLECTIONITEMCHANGEDEVENTARGS,
75 COLOR,
76 COLORANIMATION,
77 COLORANIMATIONUSINGKEYFRAMES,
78 COLORKEYFRAME,
79 COLORKEYFRAME_COLLECTION,
80 COLUMNDEFINITION,
81 COLUMNDEFINITION_COLLECTION,
82 CONTENTCHANGEDEVENTARGS,
83 CONTENTCONTROL,
84 CONTROL,
85 CONTROLTEMPLATE,
86 CORNERRADIUS,
87 CUBICEASE,
88 CURSOR,
89 CURSORPOSITIONCHANGEDEVENTARGS,
90 DATATEMPLATE,
91 DEEPZOOMIMAGETILESOURCE,
92 DEPENDENCY_OBJECT,
93 DEPENDENCY_OBJECT_COLLECTION,
94 DEPENDENCYPROPERTY,
95 DEPLOYMENT,
96 DISCRETECOLORKEYFRAME,
97 DISCRETEDOUBLEKEYFRAME,
98 DISCRETEOBJECTKEYFRAME,
99 DISCRETEPOINTKEYFRAME,
100 DISPATCHERTIMER,
101 DOUBLE,
102 DOUBLE_COLLECTION,
103 DOUBLEANIMATION,
104 DOUBLEANIMATIONUSINGKEYFRAMES,
105 DOUBLEKEYFRAME,
106 DOUBLEKEYFRAME_COLLECTION,
107 DOWNLOADER,
108 DOWNLOADPROGRESSEVENTARGS,
109 DRAWINGATTRIBUTES,
110 DROPSHADOWEFFECT,
111 DURATION,
112 EASINGCOLORKEYFRAME,
113 EASINGDOUBLEKEYFRAME,
114 EASINGFUNCTIONBASE,
115 EASINGPOINTKEYFRAME,
116 EFFECT,
117 ELASTICEASE,
118 ELLIPSE,
119 ELLIPSEGEOMETRY,
120 ERROREVENTARGS,
121 EVENTARGS,
122 EVENTLISTENERPROXY,
123 EVENTOBJECT,
124 EVENTTRIGGER,
125 EXPONENTIALEASE,
126 EXTENSIONPART,
127 EXTERNALDECODER,
128 EXTERNALDEMUXER,
129 EXTERNALPART,
130 EXTERNALPART_COLLECTION,
131 FFMPEGDECODER,
132 FFMPEGDEMUXER,
133 FILEDOWNLOADER,
134 FILESOURCE,
135 FLOAT,
136 FONTFAMILY,
137 FONTSOURCE,
138 FONTSTRETCH,
139 FONTSTYLE,
140 FONTWEIGHT,
141 FRAMEWORKELEMENT,
142 FRAMEWORKTEMPLATE,
143 GENERALTRANSFORM,
144 GEOMETRY,
145 GEOMETRY_COLLECTION,
146 GEOMETRYGROUP,
147 GLYPHS,
148 GRADIENTBRUSH,
149 GRADIENTSTOP,
150 GRADIENTSTOP_COLLECTION,
151 GRID,
152 GRIDLENGTH,
153 HITTEST_COLLECTION,
154 ICOMPARABLE,
155 ICOMPARABLE_BOOL,
156 ICOMPARABLE_CHAR,
157 ICOMPARABLE_DOUBLE,
158 ICOMPARABLE_FLOAT,
159 ICOMPARABLE_INT,
160 ICOMPARABLE_LONG,
161 ICOMPARABLE_STRING,
162 ICOMPARABLE_TIMESPAN,
163 ICOMPARABLE_UINT,
164 ICOMPARABLE_ULONG,
165 ICON,
166 ICON_COLLECTION,
167 ICONVERTIBLE,
168 IEQUATABLE_BOOL,
169 IEQUATABLE_CHAR,
170 IEQUATABLE_DOUBLE,
171 IEQUATABLE_FLOAT,
172 IEQUATABLE_INT,
173 IEQUATABLE_LONG,
174 IEQUATABLE_STRING,
175 IEQUATABLE_TIMESPAN,
176 IEQUATABLE_UINT,
177 IEQUATABLE_ULONG,
178 IFORMATTABLE,
179 IIMAGECONVERTER,
180 IMAGE,
181 IMAGEBRUSH,
182 IMAGEERROREVENTARGS,
183 IMAGESOURCE,
184 IMEDIADECODER,
185 IMEDIADEMUXER,
186 IMEDIAOBJECT,
187 IMEDIASOURCE,
188 IMEDIASTREAM,
189 INKPRESENTER,
190 INLINE,
191 INLINE_COLLECTION,
192 INPUTMETHOD,
193 INT32,
194 INT64,
195 INTERNALDOWNLOADER,
196 ITEM_COLLECTION,
197 KEYEVENTARGS,
198 KEYFRAME,
199 KEYFRAME_COLLECTION,
200 KEYSPLINE,
201 KEYTIME,
202 LAYOUTINFORMATION,
203 LINE,
204 LINEARCOLORKEYFRAME,
205 LINEARDOUBLEKEYFRAME,
206 LINEARGRADIENTBRUSH,
207 LINEARPOINTKEYFRAME,
208 LINEBREAK,
209 LINEGEOMETRY,
210 LINESEGMENT,
211 LOGREADYROUTEDEVENTARGS,
212 MANAGED,// Silverlight 2.0 only
213 MANAGEDSTREAMSOURCE,
214 MANAGEDTYPEINFO,
215 MANUALTIMESOURCE,
216 MARKERSTREAM,
217 MATRIX,
218 MATRIX3D,
219 MATRIX3DPROJECTION,
220 MATRIXTRANSFORM,
221 MEDIA,
222 MEDIAATTRIBUTE,
223 MEDIAATTRIBUTE_COLLECTION,
224 MEDIABASE,
225 MEDIACLOSURE,
226 MEDIADISPOSEOBJECTCLOSURE,
227 MEDIAELEMENT,
228 MEDIAFRAME,
229 MEDIAGETFRAMECLOSURE,
230 MEDIAMARKER,
231 MEDIAMARKERFOUNDCLOSURE,
232 MEDIAPLAYER,
233 MEDIAREPORTFRAMECOMPLETEDCLOSURE,
234 MEDIAREPORTSEEKCOMPLETEDCLOSURE,
235 MEDIASEEKCLOSURE,
236 MEMORYSOURCE,
237 MMSDEMUXER,
238 MMSDOWNLOADER,
239 MMSPLAYLISTENTRY,
240 MMSSECONDDOWNLOADER,
241 MMSSOURCE,
242 MOUSEBUTTONEVENTARGS,
243 MOUSEEVENTARGS,
244 MOUSEWHEELEVENTARGS,
245 MP3DEMUXER,
246 MULTISCALEIMAGE,
247 MULTISCALESUBIMAGE,
248 MULTISCALESUBIMAGE_COLLECTION,
249 MULTISCALETILESOURCE,
250 NAMESCOPE,
251 NPOBJ,
252 NULLDECODER,
253 OBJECT,
254 OBJECTANIMATIONUSINGKEYFRAMES,
255 OBJECTKEYFRAME,
256 OBJECTKEYFRAME_COLLECTION,
257 OUTOFBROWSERSETTINGS,
258 PANEL,
259 PARALLELTIMELINE,
260 PARSERERROREVENTARGS,
261 PASSTHROUGHDECODER,
262 PASSWORDBOX,
263 PATH,
264 PATHFIGURE,
265 PATHFIGURE_COLLECTION,
266 PATHGEOMETRY,
267 PATHSEGMENT,
268 PATHSEGMENT_COLLECTION,
269 PIXELSHADER,
270 PLANEPROJECTION,
271 PLAYLIST,
272 PLAYLISTENTRY,
273 PLAYLISTROOT,
274 POINT,
275 POINT_COLLECTION,
276 POINTANIMATION,
277 POINTANIMATIONUSINGKEYFRAMES,
278 POINTKEYFRAME,
279 POINTKEYFRAME_COLLECTION,
280 POLYBEZIERSEGMENT,
281 POLYGON,
282 POLYLINE,
283 POLYLINESEGMENT,
284 POLYQUADRATICBEZIERSEGMENT,
285 POPUP,
286 POWEREASE,
287 PROGRESSEVENTARGS,
288 PROGRESSIVESOURCE,
289 PROJECTION,
290 PROPERTYCHANGEDEVENTARGS,
291 PROPERTYPATH,
292 PULSESOURCE,
293 QUADRATICBEZIERSEGMENT,
294 QUADRATICEASE,
295 QUARTICEASE,
296 QUINTICEASE,
297 RADIALGRADIENTBRUSH,
298 RECT,
299 RECTANGLE,
300 RECTANGLEGEOMETRY,
301 RENDERINGEVENTARGS,
302 REPEATBEHAVIOR,
303 RESOURCE_DICTIONARY,
304 RESOURCE_DICTIONARY_COLLECTION,
305 ROTATETRANSFORM,
306 ROUTEDEVENTARGS,
307 ROWDEFINITION,
308 ROWDEFINITION_COLLECTION,
309 RUN,
310 SCALETRANSFORM,
311 SETTER,
312 SETTERBASE,
313 SETTERBASE_COLLECTION,
314 SHADEREFFECT,
315 SHAPE,
316 SINEEASE,
317 SIZE,
318 SIZECHANGEDEVENTARGS,
319 SKEWTRANSFORM,
320 SOLIDCOLORBRUSH,
321 SPLINECOLORKEYFRAME,
322 SPLINEDOUBLEKEYFRAME,
323 SPLINEPOINTKEYFRAME,
324 STORYBOARD,
325 STRING,
326 STROKE,
327 STROKE_COLLECTION,
328 STYLE,
329 STYLUSINFO,
330 STYLUSPOINT,
331 STYLUSPOINT_COLLECTION,
332 SURFACE,
333 SYSTEMTIMESOURCE,
334 TEXTBLOCK,
335 TEXTBOX,
336 TEXTBOXBASE,
337 TEXTBOXMODELCHANGEDEVENTARGS,
338 TEXTBOXVIEW,
339 TEXTCHANGEDEVENTARGS,
340 TEXTOPTIONS,
341 THICKNESS,
342 TILEBRUSH,
343 TIMELINE,
344 TIMELINE_COLLECTION,
345 TIMELINEGROUP,
346 TIMELINEMARKER,
347 TIMELINEMARKER_COLLECTION,
348 TIMELINEMARKERROUTEDEVENTARGS,
349 TIMEMANAGER,
350 TIMESOURCE,
351 TIMESPAN,
352 TRANSFORM,
353 TRANSFORM_COLLECTION,
354 TRANSFORMGROUP,
355 TRANSLATETRANSFORM,
356 TRIGGER_COLLECTION,
357 TRIGGERACTION,
358 TRIGGERACTION_COLLECTION,
359 TRIGGERBASE,
360 UIELEMENT,
361 UIELEMENT_COLLECTION,
362 UINT32,
363 UINT64,
364 UNMANAGEDMATRIX,
365 UNMANAGEDMATRIX3D,
366 URI,
367 USERCONTROL,
368 VIDEOBRUSH,
369 VIDEOSTREAM,
370 VISUALBRUSH,
371 WINDOWSETTINGS,
372 WRITEABLEBITMAP,
373 XMLLANGUAGE,
374 YUVCONVERTER,
376 LASTTYPE,
377 // END_MANAGED_MAPPING
380 static Type *Find (Deployment *deployment, const char *name);
381 static Type *Find (Deployment *deployment, Type::Kind type);
382 static Type *Find (Deployment *deployment, const char *name, bool ignore_case);
384 bool IsSubclassOf (Type::Kind super);
385 static bool IsSubclassOf (Deployment *deployment, Type::Kind type, Type::Kind super);
387 bool IsAssignableFrom (Type::Kind type);
388 static bool IsAssignableFrom (Deployment *deployment, Type::Kind assignable, Type::Kind type);
390 int LookupEvent (const char *event_name);
391 DependencyObject *CreateInstance ();
392 const char *GetContentPropertyName ();
394 DependencyProperty *LookupProperty (const char *name);
395 void AddProperty (DependencyProperty *property);
397 GHashTable *CopyProperties (bool inherited);
399 Type::Kind GetKind () { return type; }
400 void SetKind (Type::Kind value) { type = value; }
401 bool HasParent () { return parent != Type::INVALID; }
402 Type *GetParentType ();
403 bool IsValueType () { return is_value_type; }
404 bool IsInterface () { return is_interface; }
405 bool IsCustomType () { return type > LASTTYPE; }
406 const char *GetName () { return name; }
407 int GetEventCount () { return total_event_count; }
408 int GetInterfaceCount () { return interface_count; }
409 Type::Kind GetInterface (int i) { return i >= 0 && i < interface_count ? interfaces[i] : Type::INVALID; }
411 bool IsCtorVisible () { return ctor_visible; }
413 ~Type ();
414 Type (Deployment *deployment, Type::Kind type, Type::Kind parent, bool is_value_type, bool is_interface,
415 const char *name,
416 int event_count, int total_event_count, const char **events,
417 int interface_count, const Type::Kind *interfaces, bool ctor_visible,
418 create_inst_func *create_inst, const char *content_property);
420 private:
421 Type () {}
423 Type::Kind type; // this type
424 Type::Kind parent; // parent type, INVALID if no parent
425 bool is_value_type; // if this type is a value type
426 bool is_interface; // if this type is a value type
428 const char *name; // The name as it appears in code.
430 int interface_count;
431 Type::Kind *interfaces;
433 int event_count; // number of events in this class
434 int total_event_count; // number of events in this class and all base classes
435 const char **events; // the events this class has
437 bool ctor_visible; // if the type is instantiable in xaml, basically if the managed type has a public default ctor.
438 create_inst_func *create_inst; // a function pointer to create an instance of this type
440 const char *content_property;
442 // The catch here is that SL allows us to register several DPs with the same name,
443 // and when looking up DP on name they seem to return the latest DP registered
444 // with that name.
445 GHashTable *properties; // Registered DependencyProperties for this type
446 Deployment *deployment;
449 class Types {
450 friend class Type;
452 private:
453 ArrayList types;
454 ArrayList properties;
456 void RegisterNativeTypes ();
457 void RegisterNativeProperties ();
459 public:
460 /* @GenerateCBinding,GeneratePInvoke,Version=2.0 */
461 Types ();
462 ~Types ();
464 /* @GenerateCBinding,GeneratePInvoke,Version=2.0 */
465 Type::Kind RegisterType (const char *name, void *gc_handle, Type::Kind parent, bool is_interface, bool ctor_visible, /* @MarshalAs=Kind[] */Type::Kind *interfaces, int interface_count);
467 void AddProperty (DependencyProperty *property);
468 DependencyProperty *GetProperty (int id);
470 /* @GenerateCBinding,GeneratePInvoke,Version=2.0 */
471 Type *Find (Type::Kind type)
473 if ((int) type >= types.GetCount ())
474 return NULL;
476 return (Type *) types [(int) type];
479 Type *Find (const char *name);
480 Type *Find (const char *name, bool ignore_case);
482 bool IsSubclassOf (Type::Kind type, Type::Kind super);
483 #if SANITY || DEBUG
484 bool IsSubclassOrSuperclassOf (Type::Kind unknown, Type::Kind known);
485 static bool IsSubclassOrSuperclassOf (Types *types, Type::Kind unknown, Type::Kind known);
486 #endif
488 bool IsAssignableFrom (Type::Kind destination, Type::Kind type);
490 void Initialize ();
491 void Dispose ();
492 void DeleteProperties ();
495 G_BEGIN_DECLS
497 /* @GeneratePInvoke */
498 bool type_get_value_type (Type::Kind type);
499 DependencyObject *type_create_instance (Type *type);
500 DependencyObject *type_create_instance_from_kind (Type::Kind kind);
502 void types_init (void);
504 /* @GeneratePInvoke */
505 bool type_is_dependency_object (Type::Kind type);
507 G_END_DECLS
509 #endif