00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _factory_library_impl_hh
00019 #define _factory_library_impl_hh
00020
00021 #include <map.h>
00022 #include <string>
00023
00024 #include "AllupS.h"
00025
00026 #include "HeyParser.hh"
00027
00028 #include "factory_library.h"
00029 #include "ltdl.h"
00030
00031
00032
00033
00034
00035
00036
00037 class FactoryLibrary_ltdl : public virtual POA_edu::utah::pces::FactoryLibrary
00038 {
00039
00040 public:
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 static edu::utah::pces::FactoryLibrary_ptr OpenLibrary(const char *name)
00052 throw (edu::utah::pces::NoSuchLibrary,
00053 CORBA::SystemException);
00054
00055
00056
00057
00058 virtual ~FactoryLibrary_ltdl(void);
00059
00060
00061 virtual char *Name(void)
00062 throw (CORBA::SystemException);
00063
00064
00065 virtual CORBA::Long Hey(const edu::utah::pces::ArgV &args,
00066 CORBA::String_out o,
00067 CORBA::String_out e)
00068 throw (CORBA::SystemException);
00069
00070 private:
00071
00072
00073
00074
00075 static map<string, FactoryLibrary_ltdl *> open_libraries;
00076
00077
00078
00079
00080 static CORBA::ORB_var orb;
00081
00082
00083
00084
00085
00086
00087
00088
00089 FactoryLibrary_ltdl(const char *name,
00090 lt_dlhandle library,
00091 factory_method_t fm);
00092
00093
00094
00095
00096 CORBA::String_var fl_Name;
00097
00098
00099
00100
00101 unsigned int fl_OpenCount;
00102
00103
00104
00105
00106 lt_dlhandle fl_Library;
00107
00108
00109
00110
00111 factory_method_t fl_Method;
00112
00113 };
00114
00115 #endif