it_bus/builtin_types_factory.h

00001 #ifndef _IT_BUS_BUILTIN_TYPES_FACTORY_H_
00002 #define _IT_BUS_BUILTIN_TYPES_FACTORY_H_
00003 
00004 // @Copyright 2004 IONA Technologies, Plc. All Rights Reserved.
00005 //
00006 
00007 #include <it_bus/qname.h>
00008 #include <it_bus/type_factory.h>
00009 #include <it_bus/any_type.h>
00010 #include <it_bus/user_fault_exception.h>
00011 
00012 namespace IT_Bus
00013 {
00023     class IT_AFC_API BuiltInTypesFactory : public IT_Bus::TypeFactory
00024     {
00025 
00026       public:
00027         
00033         static void
00034         create_builtin_type_factory();
00035 
00039         static void
00040         destroy_builtin_type_factory();
00041 
00042 
00043         ~BuiltInTypesFactory();
00044 
00045         typedef IT_Bus::AnyType * (*create_type_ptr)();
00046         
00054         IT_Bus::AnyType *
00055         create_type(
00056             const IT_Bus::QName& type_name
00057         ) const ;
00058 
00062         void destroy_type(
00063             IT_Bus::AnyType * any_type
00064         ) const;
00065 
00069         IT_Bus::UserFaultException *
00070         create_exception(
00071             const IT_Bus::QName& type_name
00072         ) const;
00073 
00077         AnyType*
00078         create_type_for_element(
00079             const QName& element_name
00080         ) const;
00081 
00085         void destroy_exception(
00086             IT_Bus::UserFaultException * ex_type
00087         ) const;
00088 
00092         static IT_Bus::AnyType *
00093         smf_create_boolean_holder();
00094 
00098         static IT_Bus::AnyType *
00099         smf_create_byte_holder();
00100 
00104         static IT_Bus::AnyType *
00105         smf_create_short_holder();
00106 
00110         static IT_Bus::AnyType *
00111         smf_create_int_holder();
00112 
00116         static IT_Bus::AnyType *
00117         smf_create_long_holder();
00118 
00122         static IT_Bus::AnyType *
00123         smf_create_string_holder();
00124 
00128         static IT_Bus::AnyType *
00129         smf_create_float_holder();
00130 
00134         static IT_Bus::AnyType *
00135         smf_create_double_holder();
00136 
00140         static IT_Bus::AnyType *
00141         smf_create_ubyte_holder();
00142 
00146         static IT_Bus::AnyType *
00147         smf_create_ushort_holder();
00148 
00152         static IT_Bus::AnyType *
00153         smf_create_uint_holder();
00154 
00158         static IT_Bus::AnyType *
00159         smf_create_ulong_holder();
00160 
00164         static IT_Bus::AnyType *
00165         smf_create_decimal_holder();
00166 
00170         static IT_Bus::AnyType *
00171         smf_create_any_type_holder();
00172 
00177         static IT_Bus::AnyType *
00178         smf_create_reference();
00179 
00183         static IT_Bus::AnyType *
00184         smf_create_gyear();
00185 
00189         static IT_Bus::AnyType *
00190         smf_create_ncname();
00191         
00195         static IT_Bus::AnyType *
00196         smf_create_name();
00197         
00201         static IT_Bus::AnyType *
00202         smf_create_pint();
00203         
00207         static IT_Bus::AnyType *
00208         smf_create_id();
00209 
00213         static IT_Bus::AnyType *
00214         smf_create_token();
00215 
00219         static IT_Bus::AnyType *
00220         smf_create_nstring();
00221 
00225         static IT_Bus::AnyType *
00226         smf_create_auri();
00227 
00231         static IT_Bus::AnyType *
00232         smf_create_language();
00233 
00237         static IT_Bus::AnyType *
00238         smf_create_date();
00239 
00243         static IT_Bus::AnyType *
00244         smf_create_nmtokens();
00245 
00249         static IT_Bus::AnyType *
00250         smf_create_nmtoken();
00251 
00255         static IT_Bus::AnyType *
00256         smf_create_gmonth();
00257 
00261         static IT_Bus::AnyType *
00262         smf_create_time();
00263 
00267         static IT_Bus::AnyType *
00268         smf_create_qname();
00269 
00273         static IT_Bus::AnyType *
00274         smf_create_nnint();
00275 
00279         static IT_Bus::AnyType *
00280         smf_create_npint();
00281 
00285         static IT_Bus::AnyType *
00286         smf_create_gmonthday();
00287 
00291         static IT_Bus::AnyType *
00292         smf_create_date_time();
00293 
00297         static IT_Bus::AnyType *
00298         smf_create_gyearmonth();
00299 
00303         static IT_Bus::AnyType *
00304         smf_create_gday();
00305 
00309         static IT_Bus::AnyType *
00310         smf_create_duration();
00311 
00315         static IT_Bus::AnyType *
00316         smf_create_nint();
00317 
00321         static IT_Bus::AnyType *
00322         smf_create_integer();
00323 
00327         static IT_Bus::AnyType *
00328         smf_create_hbin();
00329 
00333         static IT_Bus::AnyType *
00334         smf_create_base64();
00335      
00336       protected:
00345         BuiltInTypesFactory();
00346 
00347       private:
00348         void populate_type_map();
00349 
00350         void insert_type_fn_ptr(const IT_Bus::QName & type_name, create_type_ptr op_ptr);
00351 
00352         static BuiltInTypesFactory * sm_builtin_type_factory;
00353         static IT_Bus::QNameHashMap<create_type_ptr> sm_type_map;
00354     };
00355 }
00356 
00357 #endif  
00358 
00359 

Generated on Tue Mar 20 15:27:41 2007 for Artix by  doxygen 1.5.1-p1