summaryrefslogtreecommitdiff
path: root/ext/satellite/typemanager.h
blob: 07d0523ac9ad3c771a342c285d2c3b9248ef8a5b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/*
   +----------------------------------------------------------------------+
   | PHP Version 4                                                        |
   +----------------------------------------------------------------------+
   | Copyright (c) 1997-2002 The PHP Group                                |
   +----------------------------------------------------------------------+
   | This source file is subject to version 2.02 of the PHP license,      |
   | that is bundled with this package in the file LICENSE, and is        |
   | available at through the world-wide-web at                           |
   | http://www.php.net/license/2_02.txt.                                 |
   | If you did not receive a copy of the PHP license and are unable to   |
   | obtain it through the world-wide-web, please send a note to          |
   | license@php.net so we can mail you a copy immediately.               |
   +----------------------------------------------------------------------+
   | Author: David Eriksson <david@2good.com>                            |
   +----------------------------------------------------------------------+
 */

/*
 * $Id$
 * vim: syntax=c tabstop=2 shiftwidth=2
 */

#ifndef __typemanager_h__
#define __typemanager_h__

#include <orb/orbit.h>

typedef struct _TypeManager TypeManager;
typedef struct _InterfaceType InterfaceType;
typedef struct _StructType StructType;
typedef struct _EnumType EnumType;
typedef struct _ExceptionType ExceptionType;
typedef struct _OperationType OperationType;
typedef struct _AttributeType AttributeType;
typedef struct _MemberType MemberType;
typedef struct _ParameterType ParameterType;
typedef struct _EnumMemberType EnumMemberType;

/* type manager */
CORBA_boolean TypeManager_Init(const char * pIdlDirectory);
CORBA_boolean TypeManager_Shutdown();

CORBA_boolean TypeManager_LoadFile(const char * pFilename);
InterfaceType * TypeManager_FindInterface(/*TypeManager * pTypeManager, */
		const char * pRepositoryId);
StructType * TypeManager_FindStruct(/*TypeManager * pTypeManager, */
		const char * pRepositoryId);
EnumType * TypeManager_FindEnum(/*TypeManager * pTypeManager, */
		const char * pRepositoryId);
ExceptionType * TypeManager_FindException(/*TypeManager * pTypeManager, */
		const char * pRepositoryId);

/* interface */
OperationType * InterfaceType_FindOperation(InterfaceType * pInterface, 
		const char * name);
AttributeType * InterfaceType_FindAttribute(InterfaceType * pInterface, 
		const char * name);

/* operation */
ParameterType * OperationType_GetFirstParameter(OperationType * pOperation);
CORBA_TypeCode OperationType_GetReturnType(OperationType * pOperation);
char * OperationType_GetName(OperationType * pOperation);
CORBA_TypeCode * OperationType_GetExceptionList(OperationType * pOperation);

/* parameter */
CORBA_boolean ParameterType_GetNext(ParameterType * pParameter);
int ParameterType_GetPassingMode(ParameterType * pParameter);
CORBA_TypeCode ParameterType_GetType(ParameterType * pParameter);
CORBA_boolean ParameterType_IsValid(ParameterType * pParameter);

/* attribute */
char * AttributeType_GetName(AttributeType * pAttribute);
CORBA_TypeCode AttributeType_GetType(AttributeType * pAttribute);
CORBA_boolean AttributeType_IsReadonly(AttributeType * pAttribute);
CORBA_boolean AttributeType_IsValid(AttributeType * pAttribute);

/* struct */
MemberType * StructType_GetFirstMember(StructType * pStruct);
char * StructType_GetRepositoryId(StructType * pStruct);

/* exception */
MemberType * ExceptionType_GetFirstMember(ExceptionType * pException);
char * ExceptionType_GetRepositoryId(ExceptionType * pException);
CORBA_TypeCode ExceptionType_GetTypeCode(ExceptionType * pException);

/* member */
CORBA_boolean MemberType_GetNext(MemberType * pMember);
char * MemberType_GetName(MemberType * pMember);
CORBA_TypeCode MemberType_GetType(MemberType * pMember);
CORBA_boolean MemberType_IsValid(MemberType * pMember);

/* enum */
EnumMemberType * EnumType_GetFirstMember(EnumType * pEnum);
CORBA_boolean EnumMemberType_GetNext(EnumMemberType * pEnumMember);
CORBA_boolean EnumMemberType_IsValid(EnumMemberType * pEnumMember);
char * EnumMemberType_GetName(EnumMemberType * pEnumMember);
char * EnumType_GetRepositoryId(EnumType * pEnum);

/* release types */
void AttributeType_release(AttributeType * pMember);
void EnumMemberType_release(EnumMemberType * pMember);
void ExceptionType_release(ExceptionType * pException);
void InterfaceType_release(InterfaceType * pInterface);
void MemberType_release(MemberType * pMember);
void OperationType_release(OperationType * pOperation);
void ParameterType_release(ParameterType * pParameter);
void StructType_release(StructType * pStruct);
void TypeCodeList_release(CORBA_TypeCode * p_typecodes);

#endif /* __typemanager_h__ */