diff options
author | Rüdiger Timm <rt@openoffice.org> | 2004-03-30 15:53:39 +0000 |
---|---|---|
committer | Rüdiger Timm <rt@openoffice.org> | 2004-03-30 15:53:39 +0000 |
commit | b8b12644dc812bc5f69eb4e6618f6c16a2caaa61 (patch) | |
tree | eb0b16700e4388ac27874d3d68445679983e860f /codemaker | |
parent | 5e74619eab6683913134a850deb4232c20d4d630 (diff) |
INTEGRATION: CWS sb14 (1.2.98); FILE MERGED
2004/03/15 15:59:11 sb 1.2.98.5: #i21150# Added support for extended interface attributes.
2004/03/12 14:17:18 sb 1.2.98.4: #i21150# Adapted to modified registry type reader.
2004/03/09 15:02:38 sb 1.2.98.3: #i21150# Constructing Java and C++ code for services and singletons.
2004/03/05 12:31:22 sb 1.2.98.2: #i21150# Added support for service constructors to javamaker.
2004/02/19 14:04:19 sb 1.2.98.1: #i21150# Generate Java classes for single-interface--based services and interface-based singletons.
Diffstat (limited to 'codemaker')
-rw-r--r-- | codemaker/source/javamaker/javatype.hxx | 105 |
1 files changed, 66 insertions, 39 deletions
diff --git a/codemaker/source/javamaker/javatype.hxx b/codemaker/source/javamaker/javatype.hxx index c374c118c8ff..1743f2940192 100644 --- a/codemaker/source/javamaker/javatype.hxx +++ b/codemaker/source/javamaker/javatype.hxx @@ -2,9 +2,9 @@ * * $RCSfile: javatype.hxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: jsc $ $Date: 2001-03-13 12:04:26 $ + * last change: $Author: rt $ $Date: 2004-03-30 16:53:39 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -70,27 +70,12 @@ #include <codemaker/dependency.hxx> #endif -enum BASETYPE -{ - BT_INVALID, - BT_VOID, - BT_ANY, - BT_TYPE, - BT_BOOLEAN, - BT_CHAR, - BT_STRING, - BT_FLOAT, - BT_DOUBLE, - BT_OCTET, - BT_BYTE, - BT_SHORT, - BT_LONG, - BT_HYPER, - BT_UNSIGNED_SHORT, - BT_UNSIGNED_LONG, - BT_UNSIGNED_HYPER -}; +#include "codemaker/options.hxx" + +#include "registry/reader.hxx" +#include "registry/types.h" +namespace codemaker { struct ExceptionTreeNode; } enum JavaTypeDecl { @@ -107,6 +92,7 @@ static const sal_Int32 UIT_ONEWAY = 0x00000010; static const sal_Int32 UIT_CONST = 0x00000020; static const sal_Int32 UIT_ANY = 0x00000040; static const sal_Int32 UIT_INTERFACE = 0x00000080; +static const sal_Int32 UIT_BOUND = 0x00000100; enum UnoTypeInfo { @@ -162,7 +148,7 @@ class FileStream; class JavaType { public: - JavaType(TypeReader& typeReader, + JavaType(typereg::Reader& typeReader, const ::rtl::OString& typeName, const TypeManager& typeMgr, const TypeDependency& typeDependencies); @@ -170,25 +156,19 @@ public: virtual ~JavaType(); virtual sal_Bool dump(JavaOptions* pOptions) throw( CannotDumpException ); - virtual sal_Bool dumpDependedTypes(JavaOptions* pOptions) throw( CannotDumpException ); + void dumpDependedTypes(JavaOptions * options); virtual sal_Bool dumpFile(FileStream& o) throw( CannotDumpException ) { return sal_True; } void dumpPackage(FileStream& o, sal_Bool bFullScope = sal_False); - virtual void dumpDepImports(FileStream& o, const ::rtl::OString& typeName); - virtual void dumpType(FileStream& o, const ::rtl::OString& type) throw( CannotDumpException ); - ::rtl::OString getBaseType(const ::rtl::OString& type); void dumpTypeInit(FileStream& o, const ::rtl::OString& name, const ::rtl::OString& type); - BASETYPE isBaseType(const ::rtl::OString& type); sal_Bool isUnsigned(const ::rtl::OString& type); sal_Bool isAny(const ::rtl::OString& type); sal_Bool isInterface(const ::rtl::OString& type); void dumpConstantValue(FileStream& o, sal_uInt16 index); - sal_uInt32 getMemberCount(); - // only used for structs and exceptions sal_Bool dumpMemberConstructor(FileStream& o); sal_Bool dumpInheritedMembers( FileStream& o, const ::rtl::OString& type, @@ -201,14 +181,19 @@ public: ::rtl::OString indent(); ::rtl::OString indent(sal_uInt32 num); protected: - ::rtl::OString checkSpecialJavaType(const ::rtl::OString& type); + rtl::OString resolveTypedefs(rtl::OString const & unoType); + + rtl::OString unfoldType(rtl::OString const & unoType, sal_Int32 * rank = 0); + ::rtl::OString checkRealBaseType(const ::rtl::OString& type); + virtual rtl::OString translateTypeName() { return m_typeName; } + protected: sal_uInt32 m_indentLength; ::rtl::OString m_typeName; ::rtl::OString m_name; - TypeReader m_reader; + typereg::Reader m_reader; TypeManager& m_typeMgr; TypeDependency m_dependencies; }; @@ -216,7 +201,7 @@ protected: class InterfaceType : public JavaType { public: - InterfaceType(TypeReader& typeReader, + InterfaceType(typereg::Reader& typeReader, const ::rtl::OString& typeName, const TypeManager& typeMgr, const TypeDependency& typeDependencies); @@ -229,12 +214,18 @@ public: void dumpMethods(FileStream& o, UnoInfoList* pUnoInfos); void dumpUnoInfo(FileStream& o, const UnoInfo& unoInfo, sal_Int32 * index); + +private: + void dumpExceptionSpecification(FileStream & out, sal_uInt16 methodIndex); + + void dumpAttributeExceptionSpecification( + FileStream & out, rtl::OUString const & name, RTMethodMode sort); }; class ModuleType : public JavaType { public: - ModuleType(TypeReader& typeReader, + ModuleType(typereg::Reader& typeReader, const ::rtl::OString& typeName, const TypeManager& typeMgr, const TypeDependency& typeDependencies); @@ -248,7 +239,7 @@ public: class ConstantsType : public JavaType { public: - ConstantsType(TypeReader& typeReader, + ConstantsType(typereg::Reader& typeReader, const ::rtl::OString& typeName, const TypeManager& typeMgr, const TypeDependency& typeDependencies); @@ -261,7 +252,7 @@ public: class StructureType : public JavaType { public: - StructureType(TypeReader& typeReader, + StructureType(typereg::Reader& typeReader, const ::rtl::OString& typeName, const TypeManager& typeMgr, const TypeDependency& typeDependencies); @@ -274,7 +265,7 @@ public: class ExceptionType : public JavaType { public: - ExceptionType(TypeReader& typeReader, + ExceptionType(typereg::Reader& typeReader, const ::rtl::OString& typeName, const TypeManager& typeMgr, const TypeDependency& typeDependencies); @@ -288,7 +279,7 @@ public: class EnumType : public JavaType { public: - EnumType(TypeReader& typeReader, + EnumType(typereg::Reader& typeReader, const ::rtl::OString& typeName, const TypeManager& typeMgr, const TypeDependency& typeDependencies); @@ -301,7 +292,7 @@ public: class TypeDefType : public JavaType { public: - TypeDefType(TypeReader& typeReader, + TypeDefType(typereg::Reader& typeReader, const ::rtl::OString& typeName, const TypeManager& typeMgr, const TypeDependency& typeDependencies); @@ -311,6 +302,42 @@ public: sal_Bool dump(JavaOptions* pOptions) throw( CannotDumpException ); }; +class ServiceType: public JavaType { +public: + ServiceType( + typereg::Reader & reader, rtl::OString const & name, + TypeManager const & manager, TypeDependency const & dependencies): + JavaType(reader, name, manager, dependencies) {} + + bool isSingleInterfaceBased(); + + virtual sal_Bool dumpFile(FileStream & out) throw (CannotDumpException); + +private: + virtual rtl::OString translateTypeName(); + + void dumpCatchClauses( + FileStream & out, codemaker::ExceptionTreeNode const * node); + + void dumpAny( + FileStream & out, rtl::OString const & javaExpression, + rtl::OString const & unoType); +}; + +class SingletonType: public JavaType { +public: + SingletonType( + typereg::Reader & reader, rtl::OString const & name, + TypeManager const & manager, TypeDependency const & dependencies): + JavaType(reader, name, manager, dependencies) {} + + bool isInterfaceBased(); + + virtual sal_Bool dumpFile(FileStream & out) throw (CannotDumpException); + +private: + virtual rtl::OString translateTypeName(); +}; sal_Bool produceType(const ::rtl::OString& typeName, TypeManager& typeMgr, |