1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: idltype.hxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 #ifndef INCLUDED_CODEMAKER_SOURCE_IDLMAKER_IDLTYPE_HXX
32 #define INCLUDED_CODEMAKER_SOURCE_IDLMAKER_IDLTYPE_HXX
34 #include <codemaker/typemanager.hxx>
35 #include <codemaker/dependency.hxx>
61 CPPUTYPEDECL_ALLTYPES
,
62 CPPUTYPEDECL_NOINTERFACES
,
63 CPPUTYPEDECL_ONLYINTERFACES
72 IdlType(TypeReader
& typeReader
,
73 const ::rtl::OString
& typeName
,
74 const TypeManager
& typeMgr
,
75 const TypeDependency
& typeDependencies
);
79 virtual sal_Bool
dump(IdlOptions
* pOptions
) throw( CannotDumpException
);
80 virtual sal_Bool
dumpDependedTypes(IdlOptions
* pOptions
) throw( CannotDumpException
);
81 virtual sal_Bool
dumpHFile(FileStream
& o
) throw( CannotDumpException
) = 0;
83 virtual ::rtl::OString
dumpHeaderDefine(FileStream
& o
, sal_Char
* prefix
);
84 virtual void dumpDefaultHIncludes(FileStream
& o
);
85 virtual void dumpInclude(FileStream
& o
, const ::rtl::OString
& genTypeName
, const ::rtl::OString
& typeName
, sal_Char
* prefix
);
87 virtual void dumpDepIncludes(FileStream
& o
, const ::rtl::OString
& typeName
, sal_Char
* prefix
);
89 virtual void dumpNameSpace(FileStream
& o
, sal_Bool bOpen
= sal_True
, sal_Bool bFull
= sal_False
, const ::rtl::OString
& type
="");
91 virtual void dumpType(FileStream
& o
, const ::rtl::OString
& type
)
92 throw( CannotDumpException
);
93 ::rtl::OString
getBaseType(const ::rtl::OString
& type
);
94 void dumpIdlGetType(FileStream
& o
, const ::rtl::OString
& type
, sal_Bool bDecl
=sal_False
, IdlTypeDecl eDeclFlag
=CPPUTYPEDECL_ALLTYPES
);
95 BASETYPE
isBaseType(const ::rtl::OString
& type
);
97 void dumpConstantValue(FileStream
& o
, sal_uInt16 index
);
99 virtual sal_uInt32
getMemberCount();
100 virtual sal_uInt32
getInheritedMemberCount();
102 void inc(sal_uInt32 num
=4);
103 void dec(sal_uInt32 num
=4);
104 ::rtl::OString
indent();
105 ::rtl::OString
indent(sal_uInt32 num
);
107 virtual sal_uInt32
checkInheritedMemberCount(const TypeReader
* pReader
);
109 ::rtl::OString
checkSpecialIdlType(const ::rtl::OString
& type
);
110 ::rtl::OString
checkRealBaseType(const ::rtl::OString
& type
, sal_Bool bResolveTypeOnly
= sal_False
);
113 sal_uInt32 m_inheritedMemberCount
;
115 sal_uInt32 m_indentLength
;
116 ::rtl::OString m_typeName
;
117 ::rtl::OString m_name
;
119 TypeManager
& m_typeMgr
;
120 TypeDependency m_dependencies
;
123 class InterfaceType
: public IdlType
126 InterfaceType(TypeReader
& typeReader
,
127 const ::rtl::OString
& typeName
,
128 const TypeManager
& typeMgr
,
129 const TypeDependency
& typeDependencies
);
131 virtual ~InterfaceType();
133 sal_Bool
dumpHFile(FileStream
& o
) throw( CannotDumpException
);
135 void dumpAttributes(FileStream
& o
);
136 void dumpMethods(FileStream
& o
);
138 sal_uInt32
getMemberCount();
139 sal_uInt32
getInheritedMemberCount();
142 sal_uInt32
checkInheritedMemberCount(const TypeReader
* pReader
);
145 sal_uInt32 m_inheritedMemberCount
;
146 sal_Bool m_hasAttributes
;
147 sal_Bool m_hasMethods
;
150 class ModuleType
: public IdlType
153 ModuleType(TypeReader
& typeReader
,
154 const ::rtl::OString
& typeName
,
155 const TypeManager
& typeMgr
,
156 const TypeDependency
& typeDependencies
);
158 virtual ~ModuleType();
160 virtual sal_Bool
dump(IdlOptions
* pOptions
) throw( CannotDumpException
);
161 sal_Bool
dumpHFile(FileStream
& o
) throw( CannotDumpException
);
162 sal_Bool
hasConstants();
165 class ConstantsType
: public ModuleType
168 ConstantsType(TypeReader
& typeReader
,
169 const ::rtl::OString
& typeName
,
170 const TypeManager
& typeMgr
,
171 const TypeDependency
& typeDependencies
);
173 virtual ~ConstantsType();
175 virtual sal_Bool
dump(IdlOptions
* pOptions
) throw( CannotDumpException
);
178 class StructureType
: public IdlType
181 StructureType(TypeReader
& typeReader
,
182 const ::rtl::OString
& typeName
,
183 const TypeManager
& typeMgr
,
184 const TypeDependency
& typeDependencies
);
186 virtual ~StructureType();
188 sal_Bool
dumpHFile(FileStream
& o
) throw( CannotDumpException
);
190 void dumpSuperMember(FileStream
& o
, const ::rtl::OString
& super
);
193 class ExceptionType
: public IdlType
196 ExceptionType(TypeReader
& typeReader
,
197 const ::rtl::OString
& typeName
,
198 const TypeManager
& typeMgr
,
199 const TypeDependency
& typeDependencies
);
201 virtual ~ExceptionType();
203 sal_Bool
dumpHFile(FileStream
& o
) throw( CannotDumpException
);
205 void dumpSuperMember(FileStream
& o
, const ::rtl::OString
& super
);
208 class EnumType
: public IdlType
211 EnumType(TypeReader
& typeReader
,
212 const ::rtl::OString
& typeName
,
213 const TypeManager
& typeMgr
,
214 const TypeDependency
& typeDependencies
);
218 sal_Bool
dumpHFile(FileStream
& o
) throw( CannotDumpException
);
221 class TypeDefType
: public IdlType
224 TypeDefType(TypeReader
& typeReader
,
225 const ::rtl::OString
& typeName
,
226 const TypeManager
& typeMgr
,
227 const TypeDependency
& typeDependencies
);
229 virtual ~TypeDefType();
231 sal_Bool
dumpHFile(FileStream
& o
) throw( CannotDumpException
);
235 sal_Bool
produceType(const ::rtl::OString
& typeName
,
236 TypeManager
& typeMgr
,
237 TypeDependency
& typeDependencies
,
238 IdlOptions
* pOptions
)
239 throw( CannotDumpException
);
242 * This function returns a C++ scoped name, represents the namespace
243 * scoping of this type, e.g. com:.sun::star::uno::XInterface. If the scope of
244 * the type is equal scope, the relativ name will be used.
246 ::rtl::OString
scopedName(const ::rtl::OString
& scope
, const ::rtl::OString
& type
, sal_Bool bNoNameSpace
= sal_False
);
248 ::rtl::OString
scope(const ::rtl::OString
& scope
, const ::rtl::OString
& type
);
251 #endif // INCLUDED_CODEMAKER_SOURCE_IDLMAKER_IDLTYPE_HXX