00001 #ifndef _IT_BUS_TYPE_FACTORY_H_
00002 #define _IT_BUS_TYPE_FACTORY_H_
00003
00004
00005
00006
00007 #include <it_bus/api_defines.h>
00008 #include <it_bus/qname.h>
00009 #include <it_bus/user_fault_exception.h>
00010 #include <it_bus/implementation_details.h>
00011 #ifndef IT_MINIMISE_INCLUDES
00012 #include <it_bus/any_type.h>
00013 #endif
00014
00015 namespace IT_Bus
00016 {
00017 class AnyType;
00018 class IT_AFC_API TypeFactory : public ImplementationDetails
00019 {
00020 public:
00021 virtual AnyType*
00022 create_type(
00023 const QName & type_name
00024 ) const = 0 ;
00025
00026 virtual UserFaultException*
00027 create_exception(
00028 const QName & type_name
00029 ) const = 0 ;
00030
00031 virtual
00032 AnyType*
00033 create_type_for_element(
00034 const QName& element_name
00035 ) const = 0 ;
00036
00037 virtual void
00038 destroy_type(
00039 AnyType* any_type
00040 ) const = 0 ;
00041
00042 virtual void
00043 destroy_exception(
00044 UserFaultException* ex_type
00045 ) const = 0 ;
00046
00047 protected:
00048 TypeFactory() {}
00049
00050 private:
00051
00052 TypeFactory(const TypeFactory&);
00053 void operator=(const TypeFactory&);
00054 };
00055 }
00056
00057 #endif
00058