1 /*
2  * This file is part of libdom.
3  * Licensed under the MIT License,
4  *                http://www.opensource.org/licenses/mit-license.php
5  * Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
6  */
7 
8 #ifndef dom_core_typeinfo_h_
9 #define dom_core_typeinfo_h_
10 
11 #include <stdbool.h>
12 
13 #include <dom/core/exceptions.h>
14 #include <dom/core/string.h>
15 
16 typedef struct dom_type_info dom_type_info;
17 
18 typedef enum {
19 	DOM_TYPE_INFO_DERIVATION_RESTRICTION	= 0x00000001,
20 	DOM_TYPE_INFO_DERIVATION_EXTENSION		= 0x00000002,
21 	DOM_TYPE_INFO_DERIVATION_UNION			= 0x00000004,
22 	DOM_TYPE_INFO_DERIVATION_LIST			= 0x00000008
23 } dom_type_info_derivation_method;
24 
25 dom_exception _dom_type_info_get_type_name(dom_type_info *ti,
26 		dom_string **ret);
27 #define dom_type_info_get_type_name(t, r) _dom_type_info_get_type_name( \
28 		(dom_type_info *) (t), (r))
29 
30 
31 dom_exception _dom_type_info_get_type_namespace(dom_type_info *ti,
32 		dom_string **ret);
33 #define dom_type_info_get_type_namespace(t, r) \
34 		_dom_type_info_get_type_namespace((dom_type_info *) (t), (r))
35 
36 
37 dom_exception _dom_type_info_is_derived(dom_type_info *ti,
38 		dom_string *namespace, dom_string *name,
39 		dom_type_info_derivation_method method, bool *ret);
40 #define dom_type_info_is_derived(t, s, n, m, r)  _dom_type_info_is_derived(\
41 		(dom_type_info *) (t), (s), (n), \
42 		(dom_type_info_derivation_method) (m), (bool *) (r))
43 
44 
45 #endif
46