#ifndef __PORBIT_INTERFACES_H__ #define __PORBIT_INTERFACES_H__ #include #include "porbit-perl.h" typedef struct _PORBitIfaceInfo PORBitIfaceInfo; /* Encapsulates knowledge about a particular interface */ struct _PORBitIfaceInfo { char *pkg; CORBA_InterfaceDef_FullInterfaceDescription *desc; /* Information for servers */ CORBA_unsigned_long class_id; PortableServer_ClassInfo class_info; }; /* Given either a pointer to an IR object, or a repository ID, load * the definition of the IR object from the repository. _orb optionally * gives the orb to resolve the initial InterfaceRepository in * if iface is not specified */ PORBitIfaceInfo *porbit_load_contained (CORBA_Contained container, const char *id, CORBA_Environment *ev); /* Look up interface information for a given repoid */ PORBitIfaceInfo *porbit_find_interface_description (const char *repo_id); /* Store a new interface into the type system, desc will be used or freed. */ PORBitIfaceInfo *porbit_init_interface (CORBA_InterfaceDef_FullInterfaceDescription *desc, const char *package_name, CORBA_Environment *ev); /* Initialize a constant. Assumes ownership of SV's refcount */ void porbit_init_constant (const char *pkgname, const char *name, SV *sv); /* Find or create a TypeCode object for the given ID */ CORBA_TypeCode porbit_find_typecode (const char *id); /* Store a TypeCode object for the given repoid */ void porbit_store_typecode (const char *repoid, CORBA_TypeCode tc); /* Remove a TypeCode object for the given repoid */ void porbit_remove_typecode (const char *repoid); /* Initialize interface descriptions for the standard types */ void porbit_init_interfaces (void); /* Initialize typecodes for the standard types */ void porbit_init_typecodes (void); #define PORBIT_REPOID_KEY "_repoid" #define PORBIT_OFFSET 0x10000000 #define PORBIT_OPERATION_BASE 0 #define PORBIT_GETTER_BASE (PORBIT_OPERATION_BASE + PORBIT_OFFSET) #define PORBIT_SETTER_BASE (PORBIT_GETTER_BASE + PORBIT_OFFSET) #endif /* __PORBIT_INTERFACES_H__ */