summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2013-03-26 14:59:34 +0100
committerStephan Bergmann <sbergman@redhat.com>2013-03-27 09:36:54 +0100
commitbb1f0c667f8b38bf27818fe1608beb4295d9c429 (patch)
tree36e98fecb1fb3fed8e28155763d858620c70fce1
parentaaaeec55c6ca86a4871a59e058f80498e898b29b (diff)
Clean up codemaker/typemanager.hxx
Change-Id: I650efd6780070410eaf34993dd41ed1b8ada7c9a
-rw-r--r--codemaker/inc/codemaker/codemaker.hxx3
-rw-r--r--codemaker/inc/codemaker/dependencies.hxx7
-rw-r--r--codemaker/inc/codemaker/exceptiontree.hxx5
-rw-r--r--codemaker/inc/codemaker/typemanager.hxx104
-rw-r--r--codemaker/source/codemaker/codemaker.cxx4
-rw-r--r--codemaker/source/codemaker/dependencies.cxx4
-rw-r--r--codemaker/source/codemaker/exceptiontree.cxx5
-rw-r--r--codemaker/source/codemaker/typemanager.cxx127
-rw-r--r--codemaker/source/cppumaker/cppumaker.cxx25
-rw-r--r--codemaker/source/cppumaker/cpputype.cxx76
-rw-r--r--codemaker/source/cppumaker/cpputype.hxx29
-rw-r--r--codemaker/source/cppumaker/includes.cxx7
-rw-r--r--codemaker/source/cppumaker/includes.hxx5
-rw-r--r--codemaker/source/javamaker/javamaker.cxx17
-rw-r--r--codemaker/source/javamaker/javatype.cxx132
-rw-r--r--codemaker/source/javamaker/javatype.hxx8
-rw-r--r--unodevtools/Executable_skeletonmaker.mk1
-rw-r--r--unodevtools/inc/unodevtools/options.hxx7
-rw-r--r--unodevtools/inc/unodevtools/typemanager.hxx83
-rw-r--r--unodevtools/source/skeletonmaker/cppcompskeleton.cxx20
-rw-r--r--unodevtools/source/skeletonmaker/cpptypemaker.cxx36
-rw-r--r--unodevtools/source/skeletonmaker/javacompskeleton.cxx10
-rw-r--r--unodevtools/source/skeletonmaker/javatypemaker.cxx38
-rw-r--r--unodevtools/source/skeletonmaker/skeletoncommon.cxx42
-rw-r--r--unodevtools/source/skeletonmaker/skeletoncommon.hxx15
-rw-r--r--unodevtools/source/skeletonmaker/skeletoncpp.hxx26
-rw-r--r--unodevtools/source/skeletonmaker/skeletonjava.hxx24
-rw-r--r--unodevtools/source/skeletonmaker/skeletonmaker.cxx12
-rw-r--r--unodevtools/source/unodevtools/typemanager.cxx270
29 files changed, 354 insertions, 788 deletions
diff --git a/codemaker/inc/codemaker/codemaker.hxx b/codemaker/inc/codemaker/codemaker.hxx
index c7aebf8f23bc..a1c3a14eea6c 100644
--- a/codemaker/inc/codemaker/codemaker.hxx
+++ b/codemaker/inc/codemaker/codemaker.hxx
@@ -23,6 +23,7 @@
#include "sal/config.h"
#include "codemaker/unotype.hxx"
#include "registry/types.h"
+#include "rtl/ref.hxx"
#include "sal/types.h"
#include <vector>
@@ -38,7 +39,7 @@ namespace codemaker {
rtl::OString convertString(rtl::OUString const & string);
codemaker::UnoType::Sort decomposeAndResolve(
- TypeManager const & manager, rtl::OString const & type,
+ rtl::Reference< TypeManager > const & manager, rtl::OString const & type,
bool resolveTypedefs, bool allowVoid, bool allowExtraEntities,
RTTypeClass * typeClass, rtl::OString * name, sal_Int32 * rank,
std::vector< rtl::OString > * arguments);
diff --git a/codemaker/inc/codemaker/dependencies.hxx b/codemaker/inc/codemaker/dependencies.hxx
index b46e7f35d1c3..157939208e5b 100644
--- a/codemaker/inc/codemaker/dependencies.hxx
+++ b/codemaker/inc/codemaker/dependencies.hxx
@@ -20,6 +20,9 @@
#ifndef INCLUDED_CODEMAKER_DEPENDENCIES_HXX
#define INCLUDED_CODEMAKER_DEPENDENCIES_HXX
+#include "sal/config.h"
+
+#include "rtl/ref.hxx"
#include "rtl/string.hxx"
#include <boost/unordered_map.hpp>
@@ -58,7 +61,9 @@ public:
type, polymorphic struct type template, exception type, interface type,
typedef, module, constant group, service, or singleton
*/
- Dependencies(TypeManager const & manager, rtl::OString const & type);
+ Dependencies(
+ rtl::Reference< TypeManager > const & manager,
+ rtl::OString const & type);
~Dependencies();
diff --git a/codemaker/inc/codemaker/exceptiontree.hxx b/codemaker/inc/codemaker/exceptiontree.hxx
index e6fded6af3c8..fed0e5b9e4d7 100644
--- a/codemaker/inc/codemaker/exceptiontree.hxx
+++ b/codemaker/inc/codemaker/exceptiontree.hxx
@@ -21,6 +21,7 @@
#define INCLUDED_CODEMAKER_EXCEPTIONTREE_HXX
#include "codemaker/global.hxx"
+#include "rtl/ref.hxx"
#include "rtl/string.hxx"
#include <vector>
@@ -92,7 +93,9 @@ public:
if different calls to this member function use different, incompatible
type managers
*/
- void add(rtl::OString const & name, TypeManager const & manager)
+ void add(
+ rtl::OString const & name,
+ rtl::Reference< TypeManager > const & manager)
throw( CannotDumpException );
/**
diff --git a/codemaker/inc/codemaker/typemanager.hxx b/codemaker/inc/codemaker/typemanager.hxx
index 2024f8c42ddb..1b16115b85da 100644
--- a/codemaker/inc/codemaker/typemanager.hxx
+++ b/codemaker/inc/codemaker/typemanager.hxx
@@ -23,6 +23,7 @@
#include "codemaker/global.hxx"
#include "registry/registry.hxx"
#include "registry/types.h"
+#include "salhelper/simplereferenceobject.hxx"
#include <boost/unordered_map.hpp>
#include <list>
@@ -42,91 +43,10 @@ typedef ::boost::unordered_map
EqualString
> T2TypeClassMap;
-struct TypeManagerImpl
-{
- TypeManagerImpl()
- : m_refCount(0)
- {}
-
- sal_Int32 m_refCount;
-};
-
-class TypeManager
+class TypeManager : public salhelper::SimpleReferenceObject
{
public:
TypeManager();
- virtual ~TypeManager();
-
- TypeManager( const TypeManager& value )
- : m_pImpl( value.m_pImpl )
- {
- acquire();
- }
-
- TypeManager& operator = ( const TypeManager& value )
- {
- release();
- m_pImpl = value.m_pImpl;
- acquire();
- return *this;
- }
-
- virtual sal_Bool isValidType(const ::rtl::OString&) const
- { return sal_False; }
-
- virtual ::rtl::OString getTypeName(RegistryKey&) const
- { return ::rtl::OString(); }
-
- virtual RegistryKey getTypeKey(const ::rtl::OString&, sal_Bool * = 0 ) const
- { return RegistryKey(); }
- virtual RegistryKeyList getTypeKeys(const ::rtl::OString&) const
- { return RegistryKeyList(); }
- virtual typereg::Reader getTypeReader(
- const ::rtl::OString& name, sal_Bool * pIsExtraType = 0 ) const = 0;
- virtual typereg::Reader getTypeReader(RegistryKey& rTypeKey) const = 0;
- virtual RTTypeClass getTypeClass(const ::rtl::OString&) const
- { return RT_TYPE_INVALID; }
- virtual RTTypeClass getTypeClass(RegistryKey&) const
- { return RT_TYPE_INVALID; }
-
- virtual void setBase(const ::rtl::OString&) {}
- virtual ::rtl::OString getBase() const { return ::rtl::OString(); }
-
- virtual sal_Int32 getSize() const { return 0; }
-
- static sal_Bool isBaseType(const ::rtl::OString& name);
-protected:
- sal_Int32 acquire();
- sal_Int32 release();
-
-protected:
- TypeManagerImpl* m_pImpl;
-};
-
-struct RegistryTypeManagerImpl
-{
- RegistryTypeManagerImpl()
- : m_base("/")
- {}
-
- T2TypeClassMap m_t2TypeClass;
- RegistryList m_registries;
- RegistryList m_extra_registries;
- ::rtl::OString m_base;
-};
-
-class RegistryTypeManager : public TypeManager
-{
-public:
- RegistryTypeManager();
- virtual ~RegistryTypeManager();
-
- RegistryTypeManager( const RegistryTypeManager& value )
- : TypeManager(value)
- , m_pImpl( value.m_pImpl )
- {
- acquire();
- }
sal_Bool init(const StringVector& regFiles, const StringVector& extraFiles = StringVector() );
@@ -145,19 +65,23 @@ public:
RTTypeClass getTypeClass(RegistryKey& rTypeKey) const;
void setBase(const ::rtl::OString& base);
- ::rtl::OString getBase() const { return m_pImpl->m_base; }
+ ::rtl::OString getBase() const { return m_base; }
+
+ sal_Int32 getSize() const { return m_t2TypeClass.size(); }
+
+ static sal_Bool isBaseType(const ::rtl::OString& name);
+
+private:
+ virtual ~TypeManager();
- sal_Int32 getSize() const { return m_pImpl->m_t2TypeClass.size(); }
-protected:
RegistryKey searchTypeKey(
const ::rtl::OString& name, sal_Bool * pIsExtraType = 0 ) const;
void freeRegistries();
- void acquire();
- void release();
-
-protected:
- RegistryTypeManagerImpl* m_pImpl;
+ mutable T2TypeClassMap m_t2TypeClass;
+ RegistryList m_registries;
+ RegistryList m_extra_registries;
+ ::rtl::OString m_base;
};
#endif // INCLUDED_CODEMAKER_TYPEMANAGER_HXX
diff --git a/codemaker/source/codemaker/codemaker.cxx b/codemaker/source/codemaker/codemaker.cxx
index bf5b618076d2..b797a2c47358 100644
--- a/codemaker/source/codemaker/codemaker.cxx
+++ b/codemaker/source/codemaker/codemaker.cxx
@@ -63,7 +63,7 @@ rtl::OString convertString(rtl::OUString const & string) {
}
codemaker::UnoType::Sort decomposeAndResolve(
- TypeManager const & manager, rtl::OString const & type,
+ rtl::Reference< TypeManager > const & manager, rtl::OString const & type,
bool resolveTypedefs, bool allowVoid, bool allowExtraEntities,
RTTypeClass * typeClass, rtl::OString * name, sal_Int32 * rank,
std::vector< rtl::OString > * arguments)
@@ -95,7 +95,7 @@ codemaker::UnoType::Sort decomposeAndResolve(
return sort;
case codemaker::UnoType::SORT_COMPLEX:
- typereg::Reader reader(manager.getTypeReader(*name));
+ typereg::Reader reader(manager->getTypeReader(*name));
*typeClass = reader.getTypeClass();
switch (*typeClass) {
case RT_TYPE_ENUM:
diff --git a/codemaker/source/codemaker/dependencies.cxx b/codemaker/source/codemaker/dependencies.cxx
index f3baf1ce10b9..d920ac4e7119 100644
--- a/codemaker/source/codemaker/dependencies.cxx
+++ b/codemaker/source/codemaker/dependencies.cxx
@@ -42,7 +42,7 @@ struct Bad {};
}
Dependencies::Dependencies(
- TypeManager const & manager, rtl::OString const & type):
+ rtl::Reference< TypeManager > const & manager, rtl::OString const & type):
m_voidDependency(false), m_booleanDependency(false),
m_byteDependency(false), m_shortDependency(false),
m_unsignedShortDependency(false), m_longDependency(false),
@@ -52,7 +52,7 @@ Dependencies::Dependencies(
m_stringDependency(false), m_typeDependency(false), m_anyDependency(false),
m_sequenceDependency(false)
{
- typereg::Reader reader(manager.getTypeReader(type));
+ typereg::Reader reader(manager->getTypeReader(type));
m_valid = reader.isValid();
if (m_valid) {
// Not everything is checked for consistency, just things that are cheap
diff --git a/codemaker/source/codemaker/exceptiontree.cxx b/codemaker/source/codemaker/exceptiontree.cxx
index 8ec6f1f2e727..52f968493274 100644
--- a/codemaker/source/codemaker/exceptiontree.cxx
+++ b/codemaker/source/codemaker/exceptiontree.cxx
@@ -47,7 +47,8 @@ void ExceptionTreeNode::clearChildren() {
children.clear();
}
-void ExceptionTree::add(rtl::OString const & name, TypeManager const & manager)
+void ExceptionTree::add(
+ rtl::OString const & name, rtl::Reference< TypeManager > const & manager)
throw( CannotDumpException )
{
typedef std::vector< rtl::OString > OStringList;
@@ -59,7 +60,7 @@ void ExceptionTree::add(rtl::OString const & name, TypeManager const & manager)
break;
}
stringlist.push_back(n);
- typereg::Reader reader(manager.getTypeReader(n));
+ typereg::Reader reader(manager->getTypeReader(n));
if (!reader.isValid())
throw CannotDumpException(
::rtl::OString("Unknown type '" + n.replace('/', '.')
diff --git a/codemaker/source/codemaker/typemanager.cxx b/codemaker/source/codemaker/typemanager.cxx
index 4e53e5fe5af3..116684dbfb66 100644
--- a/codemaker/source/codemaker/typemanager.cxx
+++ b/codemaker/source/codemaker/typemanager.cxx
@@ -28,32 +28,6 @@ using ::rtl::OString;
using ::rtl::OStringToOUString;
using ::rtl::OUStringToOString;
-TypeManager::TypeManager()
-{
- m_pImpl = new TypeManagerImpl();
- acquire();
-}
-
-TypeManager::~TypeManager()
-{
- release();
-}
-
-sal_Int32 TypeManager::acquire()
-{
- return osl_atomic_increment(&m_pImpl->m_refCount);
-}
-
-sal_Int32 TypeManager::release()
-{
- sal_Int32 refCount = 0;
- if (0 == (refCount = osl_atomic_decrement(&m_pImpl->m_refCount)) )
- {
- delete m_pImpl;
- }
- return refCount;
-}
-
sal_Bool TypeManager::isBaseType(const ::rtl::OString& name)
{
if ( name == "short" )
@@ -90,33 +64,14 @@ sal_Bool TypeManager::isBaseType(const ::rtl::OString& name)
return sal_False;
}
-RegistryTypeManager::RegistryTypeManager()
-{
- m_pImpl = new RegistryTypeManagerImpl();
- acquire();
-}
+TypeManager::TypeManager() {}
-RegistryTypeManager::~RegistryTypeManager()
-{
- release();
-}
-
-void RegistryTypeManager::acquire()
-{
- TypeManager::acquire();
-}
-
-void RegistryTypeManager::release()
+TypeManager::~TypeManager()
{
- if (0 == TypeManager::release())
- {
- freeRegistries();
-
- delete m_pImpl;
- }
+ freeRegistries();
}
-sal_Bool RegistryTypeManager::init(
+sal_Bool TypeManager::init(
const StringVector& regFiles,
StringVector const & extraFiles )
{
@@ -129,7 +84,7 @@ sal_Bool RegistryTypeManager::init(
while (iter != regFiles.end())
{
if (!tmpReg.open( convertToFileUrl(*iter), REG_READONLY))
- m_pImpl->m_registries.push_back(new Registry(tmpReg));
+ m_registries.push_back(new Registry(tmpReg));
else
{
freeRegistries();
@@ -141,7 +96,7 @@ sal_Bool RegistryTypeManager::init(
while (iter != extraFiles.end())
{
if (!tmpReg.open( convertToFileUrl(*iter), REG_READONLY))
- m_pImpl->m_extra_registries.push_back(new Registry(tmpReg));
+ m_extra_registries.push_back(new Registry(tmpReg));
else
{
freeRegistries();
@@ -153,11 +108,11 @@ sal_Bool RegistryTypeManager::init(
return sal_True;
}
-::rtl::OString RegistryTypeManager::getTypeName(RegistryKey& rTypeKey) const
+::rtl::OString TypeManager::getTypeName(RegistryKey& rTypeKey) const
{
OString typeName = OUStringToOString(rTypeKey.getName(), RTL_TEXTENCODING_UTF8);
- if (m_pImpl->m_base.getLength() > 1)
+ if (m_base.getLength() > 1)
typeName = typeName.copy(typeName.indexOf('/', 1) + 1);
else
typeName = typeName.copy(1);
@@ -165,7 +120,7 @@ sal_Bool RegistryTypeManager::init(
return typeName;
}
-typereg::Reader RegistryTypeManager::getTypeReader(
+typereg::Reader TypeManager::getTypeReader(
const OString& name, sal_Bool * pIsExtraType ) const
{
typereg::Reader reader;
@@ -190,7 +145,7 @@ typereg::Reader RegistryTypeManager::getTypeReader(
return reader;
}
-typereg::Reader RegistryTypeManager::getTypeReader(RegistryKey& rTypeKey) const
+typereg::Reader TypeManager::getTypeReader(RegistryKey& rTypeKey) const
{
typereg::Reader reader;
@@ -214,11 +169,11 @@ typereg::Reader RegistryTypeManager::getTypeReader(RegistryKey& rTypeKey) const
}
-RTTypeClass RegistryTypeManager::getTypeClass(const OString& name) const
+RTTypeClass TypeManager::getTypeClass(const OString& name) const
{
- if (m_pImpl->m_t2TypeClass.count(name) > 0)
+ if (m_t2TypeClass.count(name) > 0)
{
- return m_pImpl->m_t2TypeClass[name];
+ return m_t2TypeClass[name];
} else
{
RegistryKey key(searchTypeKey(name));
@@ -240,7 +195,7 @@ RTTypeClass RegistryTypeManager::getTypeClass(const OString& name) const
rtl_freeMemory(pBuffer);
- m_pImpl->m_t2TypeClass[name] = ret;
+ m_t2TypeClass[name] = ret;
return ret;
}
rtl_freeMemory(pBuffer);
@@ -251,13 +206,13 @@ RTTypeClass RegistryTypeManager::getTypeClass(const OString& name) const
return RT_TYPE_INVALID;
}
-RTTypeClass RegistryTypeManager::getTypeClass(RegistryKey& rTypeKey) const
+RTTypeClass TypeManager::getTypeClass(RegistryKey& rTypeKey) const
{
OString name = getTypeName(rTypeKey);
- if (m_pImpl->m_t2TypeClass.count(name) > 0)
+ if (m_t2TypeClass.count(name) > 0)
{
- return m_pImpl->m_t2TypeClass[name];
+ return m_t2TypeClass[name];
} else
{
if (rTypeKey.isValid())
@@ -277,7 +232,7 @@ RTTypeClass RegistryTypeManager::getTypeClass(RegistryKey& rTypeKey) const
rtl_freeMemory(pBuffer);
- m_pImpl->m_t2TypeClass[name] = ret;
+ m_t2TypeClass[name] = ret;
return ret;
}
rtl_freeMemory(pBuffer);
@@ -288,39 +243,39 @@ RTTypeClass RegistryTypeManager::getTypeClass(RegistryKey& rTypeKey) const
return RT_TYPE_INVALID;
}
-void RegistryTypeManager::setBase(const OString& base)
+void TypeManager::setBase(const OString& base)
{
if (base.lastIndexOf('/') == (base.getLength() - 1))
- m_pImpl->m_base += base.copy(0, base.lastIndexOf('/') - 1);
+ m_base += base.copy(0, base.lastIndexOf('/') - 1);
else
- m_pImpl->m_base += base;
+ m_base += base;
}
-void RegistryTypeManager::freeRegistries()
+void TypeManager::freeRegistries()
{
- RegistryList::const_iterator iter = m_pImpl->m_registries.begin();
- while (iter != m_pImpl->m_registries.end())
+ RegistryList::const_iterator iter = m_registries.begin();
+ while (iter != m_registries.end())
{
delete *iter;
++iter;
}
- iter = m_pImpl->m_extra_registries.begin();
- while (iter != m_pImpl->m_extra_registries.end())
+ iter = m_extra_registries.begin();
+ while (iter != m_extra_registries.end())
{
delete *iter;
++iter;
}
}
-RegistryKey RegistryTypeManager::searchTypeKey(const OString& name_, sal_Bool * pIsExtraType )
+RegistryKey TypeManager::searchTypeKey(const OString& name_, sal_Bool * pIsExtraType )
const
{
- OUString name( OStringToOUString(m_pImpl->m_base + "/" + name_, RTL_TEXTENCODING_UTF8) );
+ OUString name( OStringToOUString(m_base + "/" + name_, RTL_TEXTENCODING_UTF8) );
RegistryKey key, rootKey;
- RegistryList::const_iterator iter = m_pImpl->m_registries.begin();
- while (iter != m_pImpl->m_registries.end())
+ RegistryList::const_iterator iter = m_registries.begin();
+ while (iter != m_registries.end())
{
if (!(*iter)->openRootKey(rootKey))
{
@@ -333,8 +288,8 @@ RegistryKey RegistryTypeManager::searchTypeKey(const OString& name_, sal_Bool *
}
++iter;
}
- iter = m_pImpl->m_extra_registries.begin();
- while (iter != m_pImpl->m_extra_registries.end())
+ iter = m_extra_registries.begin();
+ while (iter != m_extra_registries.end())
{
if (!(*iter)->openRootKey(rootKey))
{
@@ -351,24 +306,24 @@ RegistryKey RegistryTypeManager::searchTypeKey(const OString& name_, sal_Bool *
return key;
}
-RegistryKeyList RegistryTypeManager::getTypeKeys(const ::rtl::OString& name_) const
+RegistryKeyList TypeManager::getTypeKeys(const ::rtl::OString& name_) const
{
RegistryKeyList keyList= RegistryKeyList();
OString tmpName;
- if ( name_ == "/" || name_ == m_pImpl->m_base ) {
- tmpName = m_pImpl->m_base;
+ if ( name_ == "/" || name_ == m_base ) {
+ tmpName = m_base;
} else {
- if ( m_pImpl->m_base == "/" )
+ if ( m_base == "/" )
tmpName = name_;
else
- tmpName = m_pImpl->m_base + "/" + name_;
+ tmpName = m_base + "/" + name_;
}
OUString name( OStringToOUString(tmpName, RTL_TEXTENCODING_UTF8) );
RegistryKey key, rootKey;
- RegistryList::const_iterator iter = m_pImpl->m_registries.begin();
- while (iter != m_pImpl->m_registries.end())
+ RegistryList::const_iterator iter = m_registries.begin();
+ while (iter != m_registries.end())
{
if (!(*iter)->openRootKey(rootKey))
{
@@ -379,8 +334,8 @@ RegistryKeyList RegistryTypeManager::getTypeKeys(const ::rtl::OString& name_) co
}
++iter;
}
- iter = m_pImpl->m_extra_registries.begin();
- while (iter != m_pImpl->m_extra_registries.end())
+ iter = m_extra_registries.begin();
+ while (iter != m_extra_registries.end())
{
if (!(*iter)->openRootKey(rootKey))
{
diff --git a/codemaker/source/cppumaker/cppumaker.cxx b/codemaker/source/cppumaker/cppumaker.cxx
index 38b8cce2f00d..d18a952502e1 100644
--- a/codemaker/source/cppumaker/cppumaker.cxx
+++ b/codemaker/source/cppumaker/cppumaker.cxx
@@ -20,6 +20,7 @@
#include <stdio.h>
+#include "rtl/ref.hxx"
#include "sal/main.h"
#include "codemaker/typemanager.hxx"
@@ -40,17 +41,19 @@ void failed(rtl::OString const & typeName, CppuOptions * options) {
}
void produce(
- RegistryKey& rTypeKey, bool bIsExtraType, TypeManager const & typeMgr,
+ RegistryKey& rTypeKey, bool bIsExtraType,
+ rtl::Reference< TypeManager > const & typeMgr,
codemaker::GeneratedTypeSet & generated, CppuOptions * options)
{
if (!produceType(rTypeKey, bIsExtraType, typeMgr, generated, options)) {
- OString typeName = typeMgr.getTypeName(rTypeKey);
+ OString typeName = typeMgr->getTypeName(rTypeKey);
failed(typeName, options);
}
}
void produce(
- rtl::OString const & typeName, TypeManager const & typeMgr,
+ rtl::OString const & typeName,
+ rtl::Reference< TypeManager > const & typeMgr,
codemaker::GeneratedTypeSet & generated, CppuOptions * options)
{
if (!produceType(typeName, typeMgr, generated, options)) {
@@ -59,17 +62,17 @@ void produce(
}
void produceAllTypes(RegistryKey& rTypeKey, bool bIsExtraType,
- TypeManager const & typeMgr,
+ rtl::Reference< TypeManager > const & typeMgr,
codemaker::GeneratedTypeSet & generated,
CppuOptions* pOptions,
sal_Bool bFullScope)
throw( CannotDumpException )
{
- OString typeName = typeMgr.getTypeName(rTypeKey);
+ OString typeName = typeMgr->getTypeName(rTypeKey);
produce(rTypeKey, bIsExtraType, typeMgr, generated, pOptions);
- RegistryKeyList typeKeys = typeMgr.getTypeKeys(typeName);
+ RegistryKeyList typeKeys = typeMgr->getTypeKeys(typeName);
RegistryKeyList::const_iterator iter = typeKeys.begin();
RegistryKey key, subKey;
RegistryKeyArray subKeys;
@@ -100,7 +103,7 @@ void produceAllTypes(RegistryKey& rTypeKey, bool bIsExtraType,
}
void produceAllTypes(const OString& typeName,
- TypeManager const & typeMgr,
+ rtl::Reference< TypeManager > const & typeMgr,
codemaker::GeneratedTypeSet & generated,
CppuOptions* pOptions,
sal_Bool bFullScope)
@@ -108,7 +111,7 @@ void produceAllTypes(const OString& typeName,
{
produce(typeName, typeMgr, generated, pOptions);
- RegistryKeyList typeKeys = typeMgr.getTypeKeys(typeName);
+ RegistryKeyList typeKeys = typeMgr->getTypeKeys(typeName);
RegistryKeyList::const_iterator iter = typeKeys.begin();
RegistryKey key, subKey;
RegistryKeyArray subKeys;
@@ -156,9 +159,9 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
exit(99);
}
- RegistryTypeManager typeMgr;
+ rtl::Reference< TypeManager > typeMgr(new TypeManager);
- if (!typeMgr.init(options.getInputFiles(), options.getExtraInputFiles()))
+ if (!typeMgr->init(options.getInputFiles(), options.getExtraInputFiles()))
{
fprintf(stderr, "%s : init registries failed, check your registry files.\n", options.getProgramName().getStr());
exit(99);
@@ -166,7 +169,7 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
if (options.isValid("-B"))
{
- typeMgr.setBase(options.getOption("-B"));
+ typeMgr->setBase(options.getOption("-B"));
}
codemaker::GeneratedTypeSet generated;
diff --git a/codemaker/source/cppumaker/cpputype.cxx b/codemaker/source/cppumaker/cpputype.cxx
index 5513d24715be..b5e52681a598 100644
--- a/codemaker/source/cppumaker/cpputype.cxx
+++ b/codemaker/source/cppumaker/cpputype.cxx
@@ -27,6 +27,7 @@
#include "registry/reader.hxx"
#include "rtl/alloc.h"
+#include "rtl/ref.hxx"
#include "rtl/ustring.hxx"
#include "rtl/strbuf.hxx"
@@ -151,7 +152,7 @@ bool isBootstrapType(rtl::OString const & name) {
//*************************************************************************
CppuType::CppuType(typereg::Reader& typeReader,
const OString& typeName,
- const TypeManager& typeMgr)
+ rtl::Reference< TypeManager > const & typeMgr)
: m_inheritedMemberCount(0)
, m_cppuTypeLeak(false)
, m_cppuTypeDynamic(true)
@@ -422,7 +423,7 @@ void CppuType::addDefaultHIncludes(codemaker::cppumaker::Includes & includes)
{
//TODO: Only include what is really needed
includes.addCppuMacrosHxx();
- if (m_typeMgr.getTypeClass(m_typeName) == RT_TYPE_INTERFACE) {
+ if (m_typeMgr->getTypeClass(m_typeName) == RT_TYPE_INTERFACE) {
includes.addReference();
}
}
@@ -434,7 +435,7 @@ void CppuType::addDefaultHxxIncludes(codemaker::cppumaker::Includes & includes)
includes.addRtlInstanceHxx();
includes.addOslMutexHxx();
includes.addType();
- if (m_typeMgr.getTypeClass(m_typeName) == RT_TYPE_INTERFACE) {
+ if (m_typeMgr->getTypeClass(m_typeName) == RT_TYPE_INTERFACE) {
includes.addReference();
}
}
@@ -470,10 +471,10 @@ void CppuType::dumpInitializer(
break;
case codemaker::UnoType::SORT_COMPLEX:
- switch (m_typeMgr.getTypeClass(t)) {
+ switch (m_typeMgr->getTypeClass(t)) {
case RT_TYPE_ENUM:
{
- typereg::Reader reader(m_typeMgr.getTypeReader(t));
+ typereg::Reader reader(m_typeMgr->getTypeReader(t));
OSL_ASSERT(reader.isValid());
out << scopedCppName(t) << "_"
<< rtl::OUStringToOString(
@@ -879,7 +880,7 @@ sal_uInt32 CppuType::checkInheritedMemberCount(const typereg::Reader* pReader)
}
if (!superType.isEmpty())
{
- typereg::Reader aSuperReader(m_typeMgr.getTypeReader(superType));
+ typereg::Reader aSuperReader(m_typeMgr->getTypeReader(superType));
if ( aSuperReader.isValid() )
{
count = checkInheritedMemberCount(&aSuperReader);
@@ -923,7 +924,7 @@ OString CppuType::getTypeClass(const OString& type, sal_Bool bCStyle)
if (!type.isEmpty())
{
typeName = type;
- rtTypeClass = m_typeMgr.getTypeClass(typeName);
+ rtTypeClass = m_typeMgr->getTypeClass(typeName);
} else
{
typeName = m_typeName;
@@ -1004,7 +1005,7 @@ void CppuType::dumpType(FileStream& o, const OString& type,
codemaker::UnoType::decompose(
checkRealBaseType(type, true), &seqNum, &args));
- RTTypeClass typeClass = m_typeMgr.getTypeClass(relType);
+ RTTypeClass typeClass = m_typeMgr->getTypeClass(relType);
if (bConst) o << "const ";
@@ -1074,7 +1075,7 @@ void CppuType::dumpCppuGetType(FileStream& o, const OString& type, sal_Bool bDec
if (eDeclFlag == CPPUTYPEDECL_ONLYINTERFACES)
{
- if (m_typeMgr.getTypeClass(relType) == RT_TYPE_INTERFACE)
+ if (m_typeMgr->getTypeClass(relType) == RT_TYPE_INTERFACE)
{
o << indent() << "::cppu::UnoType< ";
dumpType(o, type, false, false, false, true);
@@ -1092,7 +1093,7 @@ void CppuType::dumpCppuGetType(FileStream& o, const OString& type, sal_Bool bDec
} else
{
if (eDeclFlag == CPPUTYPEDECL_NOINTERFACES &&
- m_typeMgr.getTypeClass(relType) == RT_TYPE_INTERFACE)
+ m_typeMgr->getTypeClass(relType) == RT_TYPE_INTERFACE)
return;
o << indent() << "::cppu::UnoType< ";
@@ -1146,7 +1147,7 @@ bool CppuType::passByReference(rtl::OString const & unoType) {
return true;
case codemaker::UnoType::SORT_COMPLEX:
- return m_typeMgr.getTypeClass(type) != RT_TYPE_ENUM;
+ return m_typeMgr->getTypeClass(type) != RT_TYPE_ENUM;
}
}
@@ -1156,12 +1157,12 @@ OString CppuType::resolveTypedefs(const OString& type) const
RegistryKey key;
RTTypeClass typeClass;
- sal_Bool isTypeDef = (m_typeMgr.getTypeClass(baseType) == RT_TYPE_TYPEDEF);
+ sal_Bool isTypeDef = (m_typeMgr->getTypeClass(baseType) == RT_TYPE_TYPEDEF);
typereg::Reader reader;
while (isTypeDef)
{
- reader = m_typeMgr.getTypeReader(baseType);
+ reader = m_typeMgr->getTypeReader(baseType);
if (reader.isValid())
{
@@ -1188,12 +1189,12 @@ OString CppuType::checkRealBaseType(const OString& type, sal_Bool bResolveTypeOn
RegistryKey key;
RTTypeClass typeClass;
- sal_Bool mustBeChecked = (m_typeMgr.getTypeClass(baseType) == RT_TYPE_TYPEDEF);
+ sal_Bool mustBeChecked = (m_typeMgr->getTypeClass(baseType) == RT_TYPE_TYPEDEF);
typereg::Reader reader;
while (mustBeChecked)
{
- reader = m_typeMgr.getTypeReader(baseType);
+ reader = m_typeMgr->getTypeReader(baseType);
if (reader.isValid())
{
@@ -1359,7 +1360,7 @@ void dumpDeprecation(FileStream & o, bool deprecated) {
InterfaceType::InterfaceType(typereg::Reader& typeReader,
const OString& typeName,
- const TypeManager& typeMgr)
+ rtl::Reference< TypeManager > const & typeMgr)
: CppuType(typeReader, typeName, typeMgr)
{
m_inheritedMemberCount = 0;
@@ -1865,7 +1866,9 @@ namespace {
class BaseOffset {
public:
- BaseOffset(TypeManager const & theManager, typereg::Reader const & reader);
+ BaseOffset(
+ rtl::Reference< TypeManager > const & theManager,
+ typereg::Reader const & reader);
sal_Int32 get() const { return offset; }
@@ -1874,13 +1877,14 @@ private:
void calculate(typereg::Reader const & reader);
- TypeManager const & manager;
+ rtl::Reference< TypeManager > manager;
std::set< rtl::OString > set;
sal_Int32 offset;
};
BaseOffset::BaseOffset(
- TypeManager const & theManager, typereg::Reader const & reader):
+ rtl::Reference< TypeManager > const & theManager,
+ typereg::Reader const & reader):
manager(theManager)
{
offset = 0;
@@ -1890,7 +1894,7 @@ BaseOffset::BaseOffset(
void BaseOffset::calculateBases(typereg::Reader const & reader) {
for (sal_Int16 i = 0; i < reader.getSuperTypeCount(); ++i) {
typereg::Reader super(
- manager.getTypeReader(
+ manager->getTypeReader(
rtl::OUStringToOString(
reader.getSuperTypeName(i), RTL_TEXTENCODING_UTF8)));
if (super.isValid()) {
@@ -2323,7 +2327,7 @@ sal_Int32 InterfaceType::dumpAttributeExceptionTypeNames(
//*************************************************************************
ConstantsType::ConstantsType(typereg::Reader& typeReader,
const OString& typeName,
- const TypeManager& typeMgr)
+ rtl::Reference< TypeManager > const & typeMgr)
: CppuType(typeReader, typeName, typeMgr)
{
}
@@ -2441,7 +2445,7 @@ sal_Bool ConstantsType::dumpHxxFile(
//*************************************************************************
ModuleType::ModuleType(typereg::Reader& typeReader,
const OString& typeName,
- const TypeManager& typeMgr)
+ rtl::Reference< TypeManager > const & typeMgr)
: ConstantsType(typeReader, typeName, typeMgr)
{
}
@@ -2481,7 +2485,7 @@ void dumpTypeParameterName(FileStream & out, rtl::OString const & name) {
StructureType::StructureType(typereg::Reader& typeReader,
const OString& typeName,
- const TypeManager& typeMgr)
+ rtl::Reference< TypeManager > const & typeMgr)
: CppuType(typeReader, typeName, typeMgr)
{
}
@@ -3086,7 +3090,7 @@ sal_Bool StructureType::dumpSuperMember(FileStream& o, const OString& superType,
if (!superType.isEmpty())
{
- typereg::Reader aSuperReader(m_typeMgr.getTypeReader(superType));
+ typereg::Reader aSuperReader(m_typeMgr->getTypeReader(superType));
if (aSuperReader.isValid())
{
@@ -3230,7 +3234,7 @@ void StructureType::dumpTemplateParameters(FileStream & out) const {
//*************************************************************************
ExceptionType::ExceptionType(typereg::Reader& typeReader,
const OString& typeName,
- const TypeManager& typeMgr)
+ rtl::Reference< TypeManager > const & typeMgr)
: CppuType(typeReader, typeName, typeMgr)
{
}
@@ -3527,7 +3531,7 @@ sal_Bool ExceptionType::dumpSuperMember(FileStream& o, const OString& superType,
if (!superType.isEmpty())
{
- typereg::Reader aSuperReader(m_typeMgr.getTypeReader(superType));
+ typereg::Reader aSuperReader(m_typeMgr->getTypeReader(superType));
if (aSuperReader.isValid())
{
@@ -3580,7 +3584,7 @@ sal_Bool ExceptionType::dumpSuperMember(FileStream& o, const OString& superType,
//*************************************************************************
EnumType::EnumType(typereg::Reader& typeReader,
const OString& typeName,
- const TypeManager& typeMgr)
+ rtl::Reference< TypeManager > const & typeMgr)
: CppuType(typeReader, typeName, typeMgr)
{
}
@@ -3767,7 +3771,7 @@ void EnumType::dumpComprehensiveGetCppuType(FileStream& o)
//*************************************************************************
TypeDefType::TypeDefType(typereg::Reader& typeReader,
const OString& typeName,
- const TypeManager& typeMgr)
+ rtl::Reference< TypeManager > const & typeMgr)
: CppuType(typeReader, typeName, typeMgr)
{
}
@@ -4208,7 +4212,7 @@ void ServiceType::dumpCatchClauses(
//*************************************************************************
bool SingletonType::isInterfaceBased() {
- return (m_typeMgr.getTypeClass(
+ return (m_typeMgr->getTypeClass(
rtl::OUStringToOString(
m_reader.getSuperTypeName(0), RTL_TEXTENCODING_UTF8)))
== RT_TYPE_INTERFACE;
@@ -4285,19 +4289,19 @@ sal_Bool SingletonType::dumpHxxFile(
// produceType
//*************************************************************************
bool produceType(const OString& typeName,
- TypeManager const & typeMgr,
+ rtl::Reference< TypeManager > const & typeMgr,
codemaker::GeneratedTypeSet & generated,
CppuOptions* pOptions)
throw( CannotDumpException )
{
- if (typeName == "/" || typeName == typeMgr.getBase() ||
+ if (typeName == "/" || typeName == typeMgr->getBase() ||
TypeManager::isBaseType(typeName) || generated.contains(typeName))
{
return true;
}
sal_Bool bIsExtraType = sal_False;
- typereg::Reader reader(typeMgr.getTypeReader(typeName, &bIsExtraType));
+ typereg::Reader reader(typeMgr->getTypeReader(typeName, &bIsExtraType));
if (bIsExtraType) {
generated.add(typeName);
return true;
@@ -4419,14 +4423,14 @@ bool produceType(const OString& typeName,
}
bool produceType(RegistryKey& rTypeKey, bool bIsExtraType,
- TypeManager const & typeMgr,
+ rtl::Reference< TypeManager > const & typeMgr,
codemaker::GeneratedTypeSet & generated,
CppuOptions* pOptions)
throw( CannotDumpException )
{
- OString typeName = typeMgr.getTypeName(rTypeKey);
+ OString typeName = typeMgr->getTypeName(rTypeKey);
- if (typeName == "/" ||typeName == typeMgr.getBase() ||
+ if (typeName == "/" ||typeName == typeMgr->getBase() ||
TypeManager::isBaseType(typeName) || generated.contains(typeName))
{
return true;
@@ -4437,7 +4441,7 @@ bool produceType(RegistryKey& rTypeKey, bool bIsExtraType,
return true;
}
- typereg::Reader reader(typeMgr.getTypeReader(rTypeKey));
+ typereg::Reader reader(typeMgr->getTypeReader(rTypeKey));
if (!reader.isValid()) {
return false;
}
diff --git a/codemaker/source/cppumaker/cpputype.hxx b/codemaker/source/cppumaker/cpputype.hxx
index b80b3d822e60..09d0e5130ffa 100644
--- a/codemaker/source/cppumaker/cpputype.hxx
+++ b/codemaker/source/cppumaker/cpputype.hxx
@@ -26,6 +26,7 @@
#include "codemaker/commoncpp.hxx"
#include "registry/reader.hxx"
#include "registry/types.h"
+#include "rtl/ref.hxx"
#include "rtl/string.hxx"
namespace rtl { class OUString; }
@@ -50,7 +51,7 @@ class CppuType
public:
CppuType(typereg::Reader& typeReader,
const ::rtl::OString& typeName,
- const TypeManager& typeMgr);
+ rtl::Reference< TypeManager > const & typeMgr);
virtual ~CppuType();
@@ -144,7 +145,7 @@ protected:
::rtl::OString m_typeName;
::rtl::OString m_name;
typereg::Reader m_reader;
- TypeManager const & m_typeMgr;
+ rtl::Reference< TypeManager > m_typeMgr;
codemaker::Dependencies m_dependencies;
private:
@@ -157,7 +158,7 @@ class InterfaceType : public CppuType
public:
InterfaceType(typereg::Reader& typeReader,
const ::rtl::OString& typeName,
- const TypeManager& typeMgr);
+ rtl::Reference< TypeManager > const & typeMgr);
virtual ~InterfaceType();
@@ -218,7 +219,7 @@ class ConstantsType : public CppuType
public:
ConstantsType(typereg::Reader& typeReader,
const ::rtl::OString& typeName,
- const TypeManager& typeMgr);
+ rtl::Reference< TypeManager > const & typeMgr);
virtual ~ConstantsType();
@@ -235,7 +236,7 @@ class ModuleType : public ConstantsType
public:
ModuleType(typereg::Reader& typeReader,
const ::rtl::OString& typeName,
- const TypeManager& typeMgr);
+ rtl::Reference< TypeManager > const & typeMgr);
virtual ~ModuleType();
@@ -248,7 +249,7 @@ class StructureType : public CppuType
public:
StructureType(typereg::Reader& typeReader,
const ::rtl::OString& typeName,
- const TypeManager& typeMgr);
+ rtl::Reference< TypeManager > const & typeMgr);
virtual ~StructureType();
@@ -286,7 +287,7 @@ class ExceptionType : public CppuType
public:
ExceptionType(typereg::Reader& typeReader,
const ::rtl::OString& typeName,
- const TypeManager& typeMgr);
+ rtl::Reference< TypeManager > const & typeMgr);
virtual ~ExceptionType();
@@ -302,7 +303,7 @@ class EnumType : public CppuType
public:
EnumType(typereg::Reader& typeReader,
const ::rtl::OString& typeName,
- const TypeManager& typeMgr);
+ rtl::Reference< TypeManager > const & typeMgr);
virtual ~EnumType();
@@ -319,7 +320,7 @@ class TypeDefType : public CppuType
public:
TypeDefType(typereg::Reader& typeReader,
const ::rtl::OString& typeName,
- const TypeManager& typeMgr);
+ rtl::Reference< TypeManager > const & typeMgr);
virtual ~TypeDefType();
@@ -332,7 +333,7 @@ class ConstructiveType: public CppuType {
public:
ConstructiveType(
typereg::Reader & reader, rtl::OString const & name,
- TypeManager const & manager):
+ rtl::Reference< TypeManager > const & manager):
CppuType(reader, name, manager) {}
virtual sal_Bool dumpHFile(
@@ -347,7 +348,7 @@ class ServiceType: public ConstructiveType {
public:
ServiceType(
typereg::Reader & reader, rtl::OString const & name,
- TypeManager const & manager):
+ rtl::Reference< TypeManager > const & manager):
ConstructiveType(reader, name, manager) {}
bool isSingleInterfaceBased();
@@ -371,7 +372,7 @@ class SingletonType: public ConstructiveType {
public:
SingletonType(
typereg::Reader & reader, rtl::OString const & name,
- TypeManager const & manager):
+ rtl::Reference< TypeManager > const & manager):
ConstructiveType(reader, name, manager) {}
bool isInterfaceBased();
@@ -382,13 +383,13 @@ public:
};
bool produceType(const ::rtl::OString& typeName,
- TypeManager const & typeMgr,
+ rtl::Reference< TypeManager > const & typeMgr,
codemaker::GeneratedTypeSet & generated,
CppuOptions* pOptions)
throw( CannotDumpException );
bool produceType(RegistryKey& typeName, bool bIsExtraType,
- TypeManager const & typeMgr,
+ rtl::Reference< TypeManager > const & typeMgr,
codemaker::GeneratedTypeSet & generated,
CppuOptions* pOptions)
throw( CannotDumpException );
diff --git a/codemaker/source/cppumaker/includes.cxx b/codemaker/source/cppumaker/includes.cxx
index 9ee0eb54fd3b..0b0f83b869b7 100644
--- a/codemaker/source/cppumaker/includes.cxx
+++ b/codemaker/source/cppumaker/includes.cxx
@@ -28,6 +28,7 @@
#include "codemaker/unotype.hxx"
#include "osl/diagnose.h"
+#include "rtl/ref.hxx"
#include "rtl/string.hxx"
#include "rtl/ustring.hxx"
#include "sal/types.h"
@@ -37,8 +38,8 @@
using codemaker::cppumaker::Includes;
Includes::Includes(
- TypeManager const & manager, codemaker::Dependencies const & dependencies,
- bool hpp):
+ rtl::Reference< TypeManager > const & manager,
+ codemaker::Dependencies const & dependencies, bool hpp):
m_manager(manager), m_map(dependencies.getMap()), m_hpp(hpp),
m_includeCassert(false), m_includeAny(dependencies.hasAnyDependency()),
m_includeReference(false),
@@ -275,7 +276,7 @@ void Includes::dumpInclude(
}
bool Includes::isInterfaceType(rtl::OString const & registryType) const {
- return m_manager.getTypeClass(registryType) == RT_TYPE_INTERFACE;
+ return m_manager->getTypeClass(registryType) == RT_TYPE_INTERFACE;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/codemaker/source/cppumaker/includes.hxx b/codemaker/source/cppumaker/includes.hxx
index dafc659211a4..8fdf44589844 100644
--- a/codemaker/source/cppumaker/includes.hxx
+++ b/codemaker/source/cppumaker/includes.hxx
@@ -21,6 +21,7 @@
#define INCLUDED_CODEMAKER_SOURCE_CPPUMAKER_INCLUDES_HXX
#include "codemaker/dependencies.hxx"
+#include "rtl/ref.hxx"
#include "rtl/ustring.hxx"
class FileStream;
@@ -31,7 +32,7 @@ namespace codemaker { namespace cppumaker {
class Includes {
public:
Includes(
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
codemaker::Dependencies const & dependencies, bool hpp);
~Includes();
@@ -70,7 +71,7 @@ private:
bool isInterfaceType(rtl::OString const & registryType) const;
- TypeManager const & m_manager;
+ rtl::Reference< TypeManager > m_manager;
codemaker::Dependencies::Map m_map;
bool m_hpp;
bool m_includeCassert;
diff --git a/codemaker/source/javamaker/javamaker.cxx b/codemaker/source/javamaker/javamaker.cxx
index 182eb2d6c13b..549913f9177c 100644
--- a/codemaker/source/javamaker/javamaker.cxx
+++ b/codemaker/source/javamaker/javamaker.cxx
@@ -20,6 +20,7 @@
#include <stdio.h>
+#include "rtl/ref.hxx"
#include "sal/main.h"
#include "codemaker/typemanager.hxx"
@@ -30,13 +31,13 @@
using ::rtl::OUString;
using ::rtl::OString;
sal_Bool produceAllTypes(RegistryKey& rTypeKey, sal_Bool bIsExtraType,
- TypeManager const & typeMgr,
+ rtl::Reference< TypeManager > const & typeMgr,
codemaker::GeneratedTypeSet & generated,
JavaOptions* pOptions,
sal_Bool bFullScope)
throw( CannotDumpException )
{
- OString typeName = typeMgr.getTypeName(rTypeKey);
+ OString typeName = typeMgr->getTypeName(rTypeKey);
if (!produceType(rTypeKey, bIsExtraType, typeMgr, generated, pOptions))
{
@@ -46,7 +47,7 @@ sal_Bool produceAllTypes(RegistryKey& rTypeKey, sal_Bool bIsExtraType,
exit(99);
}
- RegistryKeyList typeKeys = typeMgr.getTypeKeys(typeName);
+ RegistryKeyList typeKeys = typeMgr->getTypeKeys(typeName);
RegistryKeyList::const_iterator iter = typeKeys.begin();
RegistryKey key, subKey;
RegistryKeyArray subKeys;
@@ -82,7 +83,7 @@ sal_Bool produceAllTypes(RegistryKey& rTypeKey, sal_Bool bIsExtraType,
}
sal_Bool produceAllTypes(const OString& typeName,
- TypeManager const & typeMgr,
+ rtl::Reference< TypeManager > const & typeMgr,
codemaker::GeneratedTypeSet & generated,
JavaOptions* pOptions,
sal_Bool bFullScope)
@@ -96,7 +97,7 @@ sal_Bool produceAllTypes(const OString& typeName,
exit(99);
}
- RegistryKeyList typeKeys = typeMgr.getTypeKeys(typeName);
+ RegistryKeyList typeKeys = typeMgr->getTypeKeys(typeName);
RegistryKeyList::const_iterator iter = typeKeys.begin();
RegistryKey key, subKey;
RegistryKeyArray subKeys;
@@ -147,9 +148,9 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
exit(99);
}
- RegistryTypeManager typeMgr;
+ rtl::Reference< TypeManager > typeMgr(new TypeManager);
- if (!typeMgr.init(options.getInputFiles(), options.getExtraInputFiles()))
+ if (!typeMgr->init(options.getInputFiles(), options.getExtraInputFiles()))
{
fprintf(stderr, "%s : init registries failed, check your registry files.\n", options.getProgramName().getStr());
exit(99);
@@ -157,7 +158,7 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
if (options.isValid("-B"))
{
- typeMgr.setBase(options.getOption("-B"));
+ typeMgr->setBase(options.getOption("-B"));
}
try
diff --git a/codemaker/source/javamaker/javatype.cxx b/codemaker/source/javamaker/javatype.cxx
index 247d5eb8647e..61366192a04f 100644
--- a/codemaker/source/javamaker/javatype.cxx
+++ b/codemaker/source/javamaker/javatype.cxx
@@ -35,6 +35,7 @@
#include "registry/reader.hxx"
#include "registry/refltype.hxx"
#include "registry/types.h"
+#include "rtl/ref.hxx"
#include "rtl/strbuf.hxx"
#include "rtl/string.h"
#include "rtl/string.hxx"
@@ -58,7 +59,7 @@ namespace {
// helper function for createUnoName
void appendUnoName(
- TypeManager const & manager, rtl::OString const & nucleus, sal_Int32 rank,
+ rtl::Reference< TypeManager > const & manager, rtl::OString const & nucleus, sal_Int32 rank,
std::vector< rtl::OString > const & arguments, rtl::OStringBuffer * buffer)
{
OSL_ASSERT(rank >= 0 && buffer != 0);
@@ -91,7 +92,7 @@ void appendUnoName(
// type, polymorphic struct type template, or interface type, decomposed into
// nucleus, rank, and arguments) into a core UNO type name:
rtl::OString createUnoName(
- TypeManager const & manager, rtl::OString const & nucleus, sal_Int32 rank,
+ rtl::Reference< TypeManager > const & manager, rtl::OString const & nucleus, sal_Int32 rank,
std::vector< rtl::OString > const & arguments)
{
rtl::OStringBuffer buf;
@@ -138,14 +139,15 @@ struct PolymorphicUnoType {
};
SpecialType translateUnoTypeToDescriptor(
- TypeManager const & manager, rtl::OString const & type, bool array,
- bool classType, Dependencies * dependencies,
+ rtl::Reference< TypeManager > const & manager, rtl::OString const & type,
+ bool array, bool classType, Dependencies * dependencies,
rtl::OStringBuffer * descriptor, rtl::OStringBuffer * signature,
bool * needsSignature, PolymorphicUnoType * polymorphicUnoType);
SpecialType translateUnoTypeToDescriptor(
- TypeManager const & manager, codemaker::UnoType::Sort sort,
- RTTypeClass typeClass, rtl::OString const & nucleus, sal_Int32 rank,
+ rtl::Reference< TypeManager > const & manager,
+ codemaker::UnoType::Sort sort, RTTypeClass typeClass,
+ rtl::OString const & nucleus, sal_Int32 rank,
std::vector< rtl::OString > const & arguments, bool array, bool classType,
Dependencies * dependencies, rtl::OStringBuffer * descriptor,
rtl::OStringBuffer * signature, bool * needsSignature,
@@ -258,8 +260,8 @@ SpecialType translateUnoTypeToDescriptor(
}
SpecialType translateUnoTypeToDescriptor(
- TypeManager const & manager, rtl::OString const & type, bool array,
- bool classType, Dependencies * dependencies,
+ rtl::Reference< TypeManager > const & manager, rtl::OString const & type,
+ bool array, bool classType, Dependencies * dependencies,
rtl::OStringBuffer * descriptor, rtl::OStringBuffer * signature,
bool * needsSignature, PolymorphicUnoType * polymorphicUnoType)
{
@@ -277,7 +279,7 @@ SpecialType translateUnoTypeToDescriptor(
}
SpecialType getFieldDescriptor(
- TypeManager const & manager, Dependencies * dependencies,
+ rtl::Reference< TypeManager > const & manager, Dependencies * dependencies,
rtl::OString const & type, rtl::OString * descriptor,
rtl::OString * signature, PolymorphicUnoType * polymorphicUnoType)
{
@@ -302,8 +304,9 @@ SpecialType getFieldDescriptor(
class MethodDescriptor {
public:
MethodDescriptor(
- TypeManager const & manager, Dependencies * dependencies,
- rtl::OString const & returnType, SpecialType * specialReturnType,
+ rtl::Reference< TypeManager > const & manager,
+ Dependencies * dependencies, rtl::OString const & returnType,
+ SpecialType * specialReturnType,
PolymorphicUnoType * polymorphicUnoType);
SpecialType addParameter(
@@ -317,7 +320,7 @@ public:
rtl::OString getSignature() const;
private:
- TypeManager const & m_manager;
+ rtl::Reference< TypeManager > m_manager;
Dependencies * m_dependencies;
rtl::OStringBuffer m_descriptorStart;
rtl::OString m_descriptorEnd;
@@ -327,7 +330,7 @@ private:
};
MethodDescriptor::MethodDescriptor(
- TypeManager const & manager, Dependencies * dependencies,
+ rtl::Reference< TypeManager > const & manager, Dependencies * dependencies,
rtl::OString const & returnType, SpecialType * specialReturnType,
PolymorphicUnoType * polymorphicUnoType):
m_manager(manager), m_dependencies(dependencies), m_needsSignature(false)
@@ -663,11 +666,12 @@ void addTypeInfo(
}
typedef void (* handleUnoTypeRegistryEntityFunction)(
- TypeManager const & manager, JavaOptions /*TODO const*/ & options,
- typereg::Reader const & reader, Dependencies * dependencies);
+ rtl::Reference< TypeManager > const & manager,
+ JavaOptions /*TODO const*/ & options, typereg::Reader const & reader,
+ Dependencies * dependencies);
void handleEnumType(
- SAL_UNUSED_PARAMETER TypeManager const &,
+ SAL_UNUSED_PARAMETER rtl::Reference< TypeManager > const &,
JavaOptions /*TODO const*/ & options, typereg::Reader const & reader,
SAL_UNUSED_PARAMETER Dependencies *)
{
@@ -838,7 +842,7 @@ void handleEnumType(
}
void addField(
- TypeManager const & manager, Dependencies * dependencies,
+ rtl::Reference< TypeManager > const & manager, Dependencies * dependencies,
ClassFile * classFile, std::vector< TypeInfo > * typeInfo,
sal_Int32 typeParameterIndex, rtl::OString const & type,
rtl::OString const & name, sal_Int32 index)
@@ -864,10 +868,10 @@ void addField(
}
sal_uInt16 addFieldInit(
- TypeManager const & manager, rtl::OString const & className,
- rtl::OString const & fieldName, bool typeParameter,
- rtl::OString const & fieldType, Dependencies * dependencies,
- ClassFile::Code * code)
+ rtl::Reference< TypeManager > const & manager,
+ rtl::OString const & className, rtl::OString const & fieldName,
+ bool typeParameter, rtl::OString const & fieldType,
+ Dependencies * dependencies, ClassFile::Code * code)
{
OSL_ASSERT(dependencies != 0 && code != 0);
if (typeParameter) {
@@ -905,7 +909,7 @@ sal_uInt16 addFieldInit(
case RT_TYPE_ENUM:
{
code->loadLocalReference(0);
- typereg::Reader reader(manager.getTypeReader(nucleus));
+ typereg::Reader reader(manager->getTypeReader(nucleus));
if (reader.getFieldCount() == 0) {
throw CannotDumpException("Bad type information"); //TODO
}
@@ -981,8 +985,8 @@ sal_uInt16 addFieldInit(
}
sal_uInt16 addLoadLocal(
- TypeManager const & manager, ClassFile::Code * code, sal_uInt16 * index,
- bool typeParameter, rtl::OString const & type, bool any,
+ rtl::Reference< TypeManager > const & manager, ClassFile::Code * code,
+ sal_uInt16 * index, bool typeParameter, rtl::OString const & type, bool any,
Dependencies * dependencies)
{
OSL_ASSERT(
@@ -1321,13 +1325,13 @@ sal_uInt16 addLoadLocal(
}
void addBaseArguments(
- TypeManager const & manager, Dependencies * dependencies,
+ rtl::Reference< TypeManager > const & manager, Dependencies * dependencies,
MethodDescriptor * methodDescriptor, ClassFile::Code * code,
RTTypeClass typeClass, rtl::OString const & type, sal_uInt16 * index)
{
OSL_ASSERT(
dependencies != 0 && methodDescriptor != 0 && code != 0 && index != 0);
- typereg::Reader reader(manager.getTypeReader(type));
+ typereg::Reader reader(manager->getTypeReader(type));
if (!reader.isValid() || reader.getTypeClass() != typeClass
|| codemaker::convertString(reader.getTypeName()) != type
|| reader.getMethodCount() != 0 || reader.getReferenceCount() != 0)
@@ -1373,7 +1377,7 @@ void addBaseArguments(
}
sal_uInt16 addDirectArgument(
- TypeManager const & manager, Dependencies * dependencies,
+ rtl::Reference< TypeManager > const & manager, Dependencies * dependencies,
MethodDescriptor * methodDescriptor, ClassFile::Code * code,
sal_uInt16 * index, rtl::OString const & className,
rtl::OString const & fieldName, bool typeParameter,
@@ -1397,8 +1401,9 @@ sal_uInt16 addDirectArgument(
}
void handleAggregatingType(
- TypeManager const & manager, JavaOptions /*TODO const*/ & options,
- typereg::Reader const & reader, Dependencies * dependencies)
+ rtl::Reference< TypeManager > const & manager,
+ JavaOptions /*TODO const*/ & options, typereg::Reader const & reader,
+ Dependencies * dependencies)
{
OSL_ASSERT(dependencies != 0);
if (reader.getMethodCount() != 0)
@@ -1615,9 +1620,10 @@ void handleAggregatingType(
}
void createExceptionsAttribute(
- TypeManager const & manager, typereg::Reader const & reader,
- sal_uInt16 methodIndex, Dependencies * dependencies,
- std::vector< rtl::OString > * exceptions, codemaker::ExceptionTree * tree)
+ rtl::Reference< TypeManager > const & manager,
+ typereg::Reader const & reader, sal_uInt16 methodIndex,
+ Dependencies * dependencies, std::vector< rtl::OString > * exceptions,
+ codemaker::ExceptionTree * tree)
{
OSL_ASSERT(dependencies != 0 && exceptions != 0);
sal_uInt16 n = reader.getMethodExceptionCount(methodIndex);
@@ -1634,8 +1640,9 @@ void createExceptionsAttribute(
}
void handleInterfaceType(
- TypeManager const & manager, JavaOptions /*TODO const*/ & options,
- typereg::Reader const & reader, Dependencies * dependencies)
+ rtl::Reference< TypeManager > const & manager,
+ JavaOptions /*TODO const*/ & options, typereg::Reader const & reader,
+ Dependencies * dependencies)
{
OSL_ASSERT(dependencies != 0);
@@ -1855,7 +1862,7 @@ void handleInterfaceType(
}
void handleTypedef(
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
SAL_UNUSED_PARAMETER JavaOptions /*TODO const*/ &,
typereg::Reader const & reader, Dependencies * dependencies)
{
@@ -1895,9 +1902,9 @@ void handleTypedef(
}
void addConstant(
- TypeManager const & manager, typereg::Reader const & reader,
- bool publishable, sal_uInt16 index, Dependencies * dependencies,
- ClassFile * classFile)
+ rtl::Reference< TypeManager > const & manager,
+ typereg::Reader const & reader, bool publishable, sal_uInt16 index,
+ Dependencies * dependencies, ClassFile * classFile)
{
OSL_ASSERT(dependencies != 0 && classFile != 0);
RTFieldAccess flags = reader.getFieldFlags(index);
@@ -2010,8 +2017,9 @@ void addConstant(
}
void handleConstantGroup(
- TypeManager const & manager, JavaOptions /*TODO const*/ & options,
- typereg::Reader const & reader, Dependencies * dependencies)
+ rtl::Reference< TypeManager > const & manager,
+ JavaOptions /*TODO const*/ & options, typereg::Reader const & reader,
+ Dependencies * dependencies)
{
OSL_ASSERT(dependencies != 0);
if (reader.getSuperTypeCount() != 0 || reader.getMethodCount() != 0
@@ -2037,8 +2045,9 @@ void handleConstantGroup(
}
void handleModule(
- TypeManager const & manager, JavaOptions /*TODO const*/ & options,
- typereg::Reader const & reader, Dependencies * dependencies)
+ rtl::Reference< TypeManager > const & manager,
+ JavaOptions /*TODO const*/ & options, typereg::Reader const & reader,
+ Dependencies * dependencies)
{
OSL_ASSERT(dependencies != 0);
if (reader.getSuperTypeCount() != 0 || reader.getMethodCount() != 0
@@ -2084,11 +2093,12 @@ void addExceptionHandlers(
}
void addConstructor(
- TypeManager const & manager, rtl::OString const & realJavaBaseName,
- rtl::OString const & unoName, rtl::OString const & className,
- typereg::Reader const & reader, sal_uInt16 methodIndex,
- rtl::OString const & methodName, rtl::OString const & returnType,
- bool defaultConstructor, Dependencies * dependencies, ClassFile * classFile)
+ rtl::Reference< TypeManager > const & manager,
+ rtl::OString const & realJavaBaseName, rtl::OString const & unoName,
+ rtl::OString const & className, typereg::Reader const & reader,
+ sal_uInt16 methodIndex, rtl::OString const & methodName,
+ rtl::OString const & returnType, bool defaultConstructor,
+ Dependencies * dependencies, ClassFile * classFile)
{
OSL_ASSERT(dependencies != 0 && classFile != 0);
MethodDescriptor desc(manager, dependencies, returnType, 0, 0);
@@ -2230,8 +2240,9 @@ void addConstructor(
}
void handleService(
- TypeManager const & manager, JavaOptions /*TODO const*/ & options,
- typereg::Reader const & reader, Dependencies * dependencies)
+ rtl::Reference< TypeManager > const & manager,
+ JavaOptions /*TODO const*/ & options, typereg::Reader const & reader,
+ Dependencies * dependencies)
{
OSL_ASSERT(dependencies != 0);
sal_uInt16 superTypes = reader.getSuperTypeCount();
@@ -2347,8 +2358,9 @@ void handleService(
}
void handleSingleton(
- TypeManager const & manager, JavaOptions /*TODO const*/ & options,
- typereg::Reader const & reader, Dependencies * dependencies)
+ rtl::Reference< TypeManager > const & manager,
+ JavaOptions /*TODO const*/ & options, typereg::Reader const & reader,
+ Dependencies * dependencies)
{
OSL_ASSERT(dependencies != 0);
if (reader.getSuperTypeCount() != 1 || reader.getFieldCount() != 0
@@ -2359,7 +2371,7 @@ void handleSingleton(
}
rtl::OString base(codemaker::convertString(reader.getSuperTypeName(0)));
rtl::OString realJavaBaseName(base.replace('/', '.'));
- switch (manager.getTypeReader(base).getTypeClass()) {
+ switch (manager->getTypeReader(base).getTypeClass()) {
case RT_TYPE_INTERFACE:
break;
@@ -2470,16 +2482,16 @@ void handleSingleton(
}
bool produceType(
- rtl::OString const & type, TypeManager const & manager,
+ rtl::OString const & type, rtl::Reference< TypeManager > const & manager,
codemaker::GeneratedTypeSet & generated, JavaOptions * options)
{
OSL_ASSERT(options != 0);
- if (type == "/" || type == manager.getBase() || generated.contains(type))
+ if (type == "/" || type == manager->getBase() || generated.contains(type))
{
return true;
}
sal_Bool extra = sal_False;
- typereg::Reader reader(manager.getTypeReader(type, &extra));
+ typereg::Reader reader(manager->getTypeReader(type, &extra));
if (extra) {
generated.add(type);
return true;
@@ -2540,17 +2552,19 @@ bool produceType(
}
bool produceType(
- RegistryKey & rTypeKey, bool bIsExtraType, TypeManager const & manager,
+ RegistryKey & rTypeKey, bool bIsExtraType,
+ rtl::Reference< TypeManager > const & manager,
codemaker::GeneratedTypeSet & generated, JavaOptions * options)
{
- ::rtl::OString typeName = manager.getTypeName(rTypeKey);
+ ::rtl::OString typeName = manager->getTypeName(rTypeKey);
OSL_ASSERT(options != 0);
- if (typeName == "/" || typeName == manager.getBase() || generated.contains(typeName))
+ if (typeName == "/" || typeName == manager->getBase()
+ || generated.contains(typeName))
{
return true;
}
- typereg::Reader reader(manager.getTypeReader(rTypeKey));
+ typereg::Reader reader(manager->getTypeReader(rTypeKey));
if (bIsExtraType) {
generated.add(typeName);
return true;
diff --git a/codemaker/source/javamaker/javatype.hxx b/codemaker/source/javamaker/javatype.hxx
index c1da979b359f..5161628d8b82 100644
--- a/codemaker/source/javamaker/javatype.hxx
+++ b/codemaker/source/javamaker/javatype.hxx
@@ -20,6 +20,10 @@
#ifndef INCLUDED_CODEMAKER_SOURCE_JAVAMAKER_JAVATYPE_HXX
#define INCLUDED_CODEMAKER_SOURCE_JAVAMAKER_JAVATYPE_HXX
+#include "sal/config.h"
+
+#include "rtl/ref.hxx"
+
namespace codemaker { class GeneratedTypeSet; }
namespace rtl { class OString; }
class JavaOptions;
@@ -27,10 +31,10 @@ class TypeManager;
class RegistryKey;
bool produceType(
- rtl::OString const & type, TypeManager const & manager,
+ rtl::OString const & type, rtl::Reference< TypeManager > const & manager,
codemaker::GeneratedTypeSet & generated, JavaOptions * pOptions);
-bool produceType(RegistryKey& typeName, bool bIsExtraType, TypeManager const & typeMgr,
+bool produceType(RegistryKey& typeName, bool bIsExtraType, rtl::Reference< TypeManager > const & typeMgr,
codemaker::GeneratedTypeSet & generated,
JavaOptions* pOptions);
diff --git a/unodevtools/Executable_skeletonmaker.mk b/unodevtools/Executable_skeletonmaker.mk
index 433ba38b85ff..1d00f3bcf978 100644
--- a/unodevtools/Executable_skeletonmaker.mk
+++ b/unodevtools/Executable_skeletonmaker.mk
@@ -54,7 +54,6 @@ $(eval $(call gb_Executable_use_static_libraries,uno-skeletonmaker,\
$(eval $(call gb_Executable_add_exception_objects,uno-skeletonmaker,\
unodevtools/source/unodevtools/options \
unodevtools/source/unodevtools/typeblob \
- unodevtools/source/unodevtools/typemanager \
unodevtools/source/skeletonmaker/skeletonmaker \
unodevtools/source/skeletonmaker/skeletoncommon \
unodevtools/source/skeletonmaker/javatypemaker \
diff --git a/unodevtools/inc/unodevtools/options.hxx b/unodevtools/inc/unodevtools/options.hxx
index a321bc9db026..7c1a9c1d5236 100644
--- a/unodevtools/inc/unodevtools/options.hxx
+++ b/unodevtools/inc/unodevtools/options.hxx
@@ -20,11 +20,10 @@
#ifndef INCLUDED_UNODEVTOOLS_OPTIONS_HXX
#define INCLUDED_UNODEVTOOLS_OPTIONS_HXX
-#include <rtl/ustrbuf.hxx>
+#include "sal/config.h"
-namespace com { namespace sun { namespace star { namespace uno {
-class RuntimeException;
-} } } }
+#include <com/sun/star/uno/RuntimeException.hpp>
+#include <rtl/ustrbuf.hxx>
namespace unodevtools {
diff --git a/unodevtools/inc/unodevtools/typemanager.hxx b/unodevtools/inc/unodevtools/typemanager.hxx
deleted file mode 100644
index c2807762cec2..000000000000
--- a/unodevtools/inc/unodevtools/typemanager.hxx
+++ /dev/null
@@ -1,83 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_UNODEVTOOLS_TYPEMANAGER_HXX
-#define INCLUDED_UNODEVTOOLS_TYPEMANAGER_HXX
-
-#include <codemaker/typemanager.hxx>
-#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
-
-#include <boost/unordered_map.hpp>
-#include <vector>
-
-class RegistryKey;
-
-namespace typereg { class Reader; }
-
-typedef boost::unordered_map
-<
- ::rtl::OString, // Typename
- RTTypeClass, // TypeClass
- HashString,
- EqualString
-> T2TypeClassMap;
-
-namespace unodevtools {
-
-struct UnoTypeManagerImpl
-{
- UnoTypeManagerImpl() {}
-
- T2TypeClassMap m_t2TypeClass;
- ::com::sun::star::uno::Reference<
- ::com::sun::star::container::XHierarchicalNameAccess> m_tdmgr;
-};
-
-class UnoTypeManager : public TypeManager
-{
-public:
- UnoTypeManager();
- ~UnoTypeManager();
-
- UnoTypeManager( const UnoTypeManager& value )
- : TypeManager(value)
- , m_pImpl( value.m_pImpl )
- {}
-
- sal_Bool init(const ::std::vector< ::rtl::OUString > registries);
-
- sal_Bool isValidType(const ::rtl::OString& name) const;
- ::rtl::OString getTypeName(RegistryKey& rTypeKey) const;
- typereg::Reader getTypeReader(
- const ::rtl::OString& name, sal_Bool * pIsExtraType = 0 ) const;
- typereg::Reader getTypeReader(RegistryKey& rTypeKey) const;
- RTTypeClass getTypeClass(const ::rtl::OString& name) const;
- RTTypeClass getTypeClass(RegistryKey& rTypeKey) const;
-
-protected:
- void release();
-
- UnoTypeManagerImpl* m_pImpl;
-};
-
-}
-
-#endif // _UNODEVTOOLS_TYPEMANAGER_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/unodevtools/source/skeletonmaker/cppcompskeleton.cxx b/unodevtools/source/skeletonmaker/cppcompskeleton.cxx
index 8f42cd4d575a..5604962bce0a 100644
--- a/unodevtools/source/skeletonmaker/cppcompskeleton.cxx
+++ b/unodevtools/source/skeletonmaker/cppcompskeleton.cxx
@@ -499,7 +499,7 @@ void generateXDispatchProvider(std::ostream& o,
void generateAddinConstructorAndHelper(std::ostream& o,
ProgramOptions const & options,
- TypeManager const & manager, const OString & classname,
+ rtl::Reference< TypeManager > const & manager, const OString & classname,
const boost::unordered_set< OString, OStringHash >& interfaces)
{
o << classname << "::" << classname
@@ -575,7 +575,7 @@ void generateAddinConstructorAndHelper(std::ostream& o,
void generateMemberInitialization(std::ostream& o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
AttributeInfo const & members)
{
if (!members.empty()) {
@@ -602,7 +602,7 @@ void generateMemberInitialization(std::ostream& o,
void generateMemberDeclaration(std::ostream& o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
AttributeInfo const & members)
{
for (AttributeInfo::const_iterator i(members.begin());
@@ -617,7 +617,7 @@ void generateMemberDeclaration(std::ostream& o,
OString generateClassDefinition(std::ostream& o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
OString const & classname,
boost::unordered_set< OString, OStringHash > const & interfaces,
AttributeInfo const & properties,
@@ -705,7 +705,7 @@ OString generateClassDefinition(std::ostream& o,
codemaker::GeneratedTypeSet generated;
while (it != interfaces.end())
{
- typereg::Reader reader(manager.getTypeReader((*it).replace('.','/')));
+ typereg::Reader reader(manager->getTypeReader((*it).replace('.','/')));
printMethods(o, options, manager, reader, generated, "", "", " ",
true, propertyhelper);
++it;
@@ -880,7 +880,7 @@ void generateXServiceInfoBodies(std::ostream& o,
void generateMethodBodies(std::ostream& o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
boost::unordered_set< OString, OStringHash > const & interfaces,
OString const & classname,
OString const & comphelpernamespace,
@@ -895,7 +895,7 @@ void generateMethodBodies(std::ostream& o,
generateXServiceInfoBodies(o, name, comphelpernamespace);
generated.add(*iter);
} else {
- typereg::Reader reader(manager.getTypeReader((*iter).replace('.','/')));
+ typereg::Reader reader(manager->getTypeReader((*iter).replace('.','/')));
printMethods(o, options, manager, reader, generated, "_",
name, "", true, propertyhelper);
}
@@ -905,7 +905,7 @@ void generateMethodBodies(std::ostream& o,
void generateQueryInterface(std::ostream& o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
const boost::unordered_set< OString, OStringHash >& interfaces,
OString const & parentname,
OString const & classname,
@@ -954,7 +954,7 @@ void generateQueryInterface(std::ostream& o,
}
void generateSkeleton(ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
std::vector< OString > const & types)
{
// special handling of calc add-ins
@@ -1093,7 +1093,7 @@ void generateSkeleton(ProgramOptions const & options,
}
void generateCalcAddin(ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
std::vector< OString > const & types)
{
boost::unordered_set< OString, OStringHash > interfaces;
diff --git a/unodevtools/source/skeletonmaker/cpptypemaker.cxx b/unodevtools/source/skeletonmaker/cpptypemaker.cxx
index e95b5039934f..640d0545464d 100644
--- a/unodevtools/source/skeletonmaker/cpptypemaker.cxx
+++ b/unodevtools/source/skeletonmaker/cpptypemaker.cxx
@@ -28,7 +28,7 @@ using namespace ::codemaker::cpp;
namespace skeletonmaker { namespace cpp {
void printType(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
codemaker::UnoType::Sort sort, RTTypeClass typeClass,
OString const & name, sal_Int32 rank,
std::vector< OString > const & arguments, short referenceType,
@@ -63,7 +63,7 @@ void printType(std::ostream & o,
if (defaultvalue && referenceType == 16) {
if (typeClass == RT_TYPE_ENUM) {
- typereg::Reader reader(manager.getTypeReader(name));
+ typereg::Reader reader(manager->getTypeReader(name));
o << name.copy(name.lastIndexOf('/'))
<< "_"
<< codemaker::convertString(reader.getFieldName(0));
@@ -122,7 +122,7 @@ void printType(std::ostream & o,
}
void printType(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
OString const & type, short referenceType, bool defaultvalue)
{
RTTypeClass typeClass;
@@ -137,7 +137,7 @@ void printType(std::ostream & o,
}
bool printConstructorParameters(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader, typereg::Reader const & outerReader,
std::vector< OString > const & arguments)
{
@@ -145,7 +145,7 @@ bool printConstructorParameters(std::ostream & o,
if (reader.getSuperTypeCount() != 0) {
OString super(
codemaker::convertString(reader.getSuperTypeName(0)));
- typereg::Reader superReader(manager.getTypeReader(super));
+ typereg::Reader superReader(manager->getTypeReader(super));
if (!superReader.isValid())
throw CannotDumpException("Bad type library entity " + super);
@@ -186,7 +186,7 @@ bool printConstructorParameters(std::ostream & o,
}
void printConstructor(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
std::vector< OString > const & arguments)
{
@@ -199,7 +199,7 @@ void printConstructor(std::ostream & o,
}
void printMethodParameters(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader, sal_uInt16 method, bool previous,
bool withtype)
{
@@ -235,7 +235,7 @@ void printMethodParameters(std::ostream & o,
}
void printExceptionSpecification(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader, sal_uInt16 method)
{
o << ((options.shortnames) ? " throw (css::uno::RuntimeException" :
@@ -367,7 +367,7 @@ void generateXDispatchProvider(std::ostream& o,
void printMethods(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader, codemaker::GeneratedTypeSet & generated,
OString const & delegate, OString const & classname,
OString const & indentation, bool defaultvalue,
@@ -456,7 +456,7 @@ void printMethods(std::ostream & o,
if (options.all || defaultvalue) {
for (sal_uInt16 i = 0; i < reader.getSuperTypeCount(); ++i) {
typereg::Reader super(
- manager.getTypeReader(
+ manager->getTypeReader(
codemaker::convertString(
reader.getSuperTypeName(i))));
if (!super.isValid()) {
@@ -642,7 +642,7 @@ void printMethods(std::ostream & o,
}
void printConstructionMethods(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader)
{
for (sal_uInt16 i = 0; i < reader.getMethodCount(); ++i) {
@@ -671,7 +671,7 @@ void printConstructionMethods(std::ostream & o,
}
void printServiceMembers(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader, OString const & type,
OString const & delegate)
{
@@ -709,7 +709,7 @@ void printServiceMembers(std::ostream & o,
}
void printMapsToCppType(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
codemaker::UnoType::Sort sort, RTTypeClass typeClass,
OString const & name, sal_Int32 rank,
std::vector< OString > const & arguments, const char * cppTypeSort)
@@ -728,7 +728,7 @@ void printMapsToCppType(std::ostream & o,
}
void generateDocumentation(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
OString const & type, OString const & delegate)
{
if (type.indexOf('/') >= 0)
@@ -760,7 +760,7 @@ void generateDocumentation(std::ostream & o,
} else if (sort != codemaker::UnoType::SORT_COMPLEX) {
o << " simple type";
} else {
- typereg::Reader reader(manager.getTypeReader(name));
+ typereg::Reader reader(manager->getTypeReader(name));
if (!reader.isValid())
throw CannotDumpException("Bad type library entity " + name);
@@ -803,7 +803,7 @@ void generateDocumentation(std::ostream & o,
break;
case RT_TYPE_SINGLETON:
- if ((manager.getTypeReader(
+ if ((manager->getTypeReader(
codemaker::convertString(
reader.getSuperTypeName(0))).getTypeClass())
== RT_TYPE_INTERFACE)
@@ -839,7 +839,7 @@ void generateDocumentation(std::ostream & o,
o << '\n';
}
} else {
- typereg::Reader reader(manager.getTypeReader(name));
+ typereg::Reader reader(manager->getTypeReader(name));
if (!reader.isValid())
throw CannotDumpException("Bad type library entity " + name);
@@ -933,7 +933,7 @@ void generateDocumentation(std::ostream & o,
case RT_TYPE_SINGLETON:
if (reader.getSuperTypeCount() > 0 &&
- ((manager.getTypeReader(
+ ((manager->getTypeReader(
codemaker::convertString(
reader.getSuperTypeName(0))).
getTypeClass()) == RT_TYPE_INTERFACE) )
diff --git a/unodevtools/source/skeletonmaker/javacompskeleton.cxx b/unodevtools/source/skeletonmaker/javacompskeleton.cxx
index 4ddaf595622d..6110e9c57704 100644
--- a/unodevtools/source/skeletonmaker/javacompskeleton.cxx
+++ b/unodevtools/source/skeletonmaker/javacompskeleton.cxx
@@ -503,7 +503,7 @@ void generateXDispatchProviderBodies(std::ostream& o, ProgramOptions const & opt
void generateMethodBodies(std::ostream& o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
const boost::unordered_set< OString, OStringHash >& interfaces,
const OString& indentation, bool usepropertymixin)
{
@@ -559,7 +559,7 @@ void generateMethodBodies(std::ostream& o,
continue;
}
}
- typereg::Reader reader(manager.getTypeReader(type.replace('.','/')));
+ typereg::Reader reader(manager->getTypeReader(type.replace('.','/')));
printMethods(o, options, manager, reader, generated, "_",
indentation, true, usepropertymixin);
}
@@ -575,7 +575,7 @@ static const char* propcomment=
void generateAddinConstructorAndHelper(std::ostream& o,
ProgramOptions const & options,
- TypeManager const & manager, const OString & classname,
+ rtl::Reference< TypeManager > const & manager, const OString & classname,
const boost::unordered_set< OString, OStringHash >& services,
const boost::unordered_set< OString, OStringHash >& interfaces)
{
@@ -720,7 +720,7 @@ void generateAddinConstructorAndHelper(std::ostream& o,
void generateClassDefinition(std::ostream& o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
const OString & classname,
const boost::unordered_set< OString, OStringHash >& services,
const boost::unordered_set< OString, OStringHash >& interfaces,
@@ -840,7 +840,7 @@ void generateClassDefinition(std::ostream& o,
}
void generateSkeleton(ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
std::vector< OString > const & types)
{
boost::unordered_set< OString, OStringHash > interfaces;
diff --git a/unodevtools/source/skeletonmaker/javatypemaker.cxx b/unodevtools/source/skeletonmaker/javatypemaker.cxx
index 7e7f86c3825c..155bd0517dc2 100644
--- a/unodevtools/source/skeletonmaker/javatypemaker.cxx
+++ b/unodevtools/source/skeletonmaker/javatypemaker.cxx
@@ -27,12 +27,12 @@ using namespace ::rtl;
namespace skeletonmaker { namespace java {
void printType(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
OString const & type, bool referenceType,
bool defaultvalue);
void printType(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
codemaker::UnoType::Sort sort, RTTypeClass typeClass,
OString const & name, sal_Int32 rank,
std::vector< OString > const & arguments, bool referenceType,
@@ -115,7 +115,7 @@ void printType(std::ostream & o,
}
void printType(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
OString const & type, bool referenceType, bool defaultvalue)
{
RTTypeClass typeClass;
@@ -130,7 +130,7 @@ void printType(std::ostream & o,
}
bool printConstructorParameters(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader, typereg::Reader const & outerReader,
std::vector< OString > const & arguments)
{
@@ -138,7 +138,7 @@ bool printConstructorParameters(std::ostream & o,
if ( reader.getSuperTypeCount() != 0 ) {
OString super(
codemaker::convertString(reader.getSuperTypeName(0)));
- typereg::Reader superReader(manager.getTypeReader(super));
+ typereg::Reader superReader(manager->getTypeReader(super));
if ( !superReader.isValid() ) {
throw CannotDumpException("Bad type library entity " + super);
}
@@ -180,7 +180,7 @@ bool printConstructorParameters(std::ostream & o,
}
void printConstructor(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
std::vector< OString > const & arguments)
{
@@ -191,7 +191,7 @@ void printConstructor(std::ostream & o,
}
void printMethodParameters(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader, sal_uInt16 method, bool previous,
bool withtype)
{
@@ -226,7 +226,7 @@ void printMethodParameters(std::ostream & o,
}
void printExceptionSpecification(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader, sal_uInt16 method)
{
if ( reader.getMethodExceptionCount(method) > 0 ) {
@@ -345,7 +345,7 @@ void generateXFastPropertySetBodies(std::ostream& o);
void generateXPropertyAccessBodies(std::ostream& o);
void printMethods(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
codemaker::GeneratedTypeSet & generated,
OString const & delegate, OString const & indentation,
@@ -384,7 +384,7 @@ void printMethods(std::ostream & o,
if ( options.all || defaultvalue ) {
for (sal_uInt16 i = 0; i < reader.getSuperTypeCount(); ++i) {
typereg::Reader super(
- manager.getTypeReader(
+ manager->getTypeReader(
codemaker::convertString(
reader.getSuperTypeName(i))));
if ( !super.isValid() ) {
@@ -544,7 +544,7 @@ void printMethods(std::ostream & o,
}
void printConstructionMethods(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader)
{
for ( sal_uInt16 i = 0; i < reader.getMethodCount(); ++i ) {
@@ -569,11 +569,11 @@ void printConstructionMethods(std::ostream & o,
}
void generateDocumentation(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
OString const & type);
void printServiceMembers(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader, OString const & type,
OString const & delegate)
{
@@ -608,7 +608,7 @@ void printServiceMembers(std::ostream & o,
}
void printMapsToJavaType(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
codemaker::UnoType::Sort sort, RTTypeClass typeClass,
OString const & name, sal_Int32 rank,
std::vector< OString > const & arguments, const char * javaTypeSort)
@@ -628,7 +628,7 @@ void printMapsToJavaType(std::ostream & o,
}
void generateDocumentation(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
OString const & type, OString const & delegate)
{
if ( type.indexOf('/') >= 0 ) {
@@ -658,7 +658,7 @@ void generateDocumentation(std::ostream & o,
} else if ( sort != codemaker::UnoType::SORT_COMPLEX ) {
o << " simple type";
} else {
- typereg::Reader reader(manager.getTypeReader(name));
+ typereg::Reader reader(manager->getTypeReader(name));
if ( !reader.isValid() ) {
throw CannotDumpException("Bad type library entity " + name);
}
@@ -702,7 +702,7 @@ void generateDocumentation(std::ostream & o,
break;
case RT_TYPE_SINGLETON:
- if ( (manager.getTypeReader(
+ if ( (manager->getTypeReader(
codemaker::convertString(
reader.getSuperTypeName(0))).getTypeClass())
== RT_TYPE_INTERFACE )
@@ -736,7 +736,7 @@ void generateDocumentation(std::ostream & o,
options, manager, sort, typeClass, name, rank, arguments, 0);
o << '\n';
} else {
- typereg::Reader reader(manager.getTypeReader(name));
+ typereg::Reader reader(manager->getTypeReader(name));
if ( !reader.isValid() ) {
throw CannotDumpException("Bad type library entity " + name);
}
@@ -820,7 +820,7 @@ void generateDocumentation(std::ostream & o,
case RT_TYPE_SINGLETON:
if ( reader.getSuperTypeCount() > 0 &&
- ((manager.getTypeReader(
+ ((manager->getTypeReader(
codemaker::convertString(
reader.getSuperTypeName(0))).getTypeClass())
== RT_TYPE_INTERFACE) ) {
diff --git a/unodevtools/source/skeletonmaker/skeletoncommon.cxx b/unodevtools/source/skeletonmaker/skeletoncommon.cxx
index e32fda26e030..1b63edaccdab 100644
--- a/unodevtools/source/skeletonmaker/skeletoncommon.cxx
+++ b/unodevtools/source/skeletonmaker/skeletoncommon.cxx
@@ -91,7 +91,7 @@ bool getOutputStream(ProgramOptions const & options,
}
codemaker::UnoType::Sort decomposeResolveAndCheck(
- TypeManager const & manager, OString const & type,
+ rtl::Reference< TypeManager > const & manager, OString const & type,
bool resolveTypedefs, bool allowVoid, bool allowExtraEntities,
RTTypeClass * typeClass, OString * name, sal_Int32 * rank,
std::vector< OString > * arguments)
@@ -125,7 +125,7 @@ bool containsAttribute(AttributeInfo& attributes, OString const & attrname)
}
// collect attributes including inherited attributes
-void checkAttributes(TypeManager const & manager,
+void checkAttributes(rtl::Reference< TypeManager > const & manager,
const typereg::Reader& reader,
AttributeInfo& attributes,
boost::unordered_set< OString, OStringHash >& propinterfaces)
@@ -140,7 +140,7 @@ void checkAttributes(TypeManager const & manager,
}
for ( sal_uInt16 i = 0; i < reader.getSuperTypeCount(); ++i ) {
- typereg::Reader supertype(manager.getTypeReader(
+ typereg::Reader supertype(manager->getTypeReader(
codemaker::convertString(
reader.getSuperTypeName(i))));
if ( !supertype.isValid() ) {
@@ -167,7 +167,7 @@ void checkAttributes(TypeManager const & manager,
}
}
-void checkType(TypeManager const & manager,
+void checkType(rtl::Reference< TypeManager > const & manager,
OString const & type,
boost::unordered_set< OString, OStringHash >& interfaceTypes,
boost::unordered_set< OString, OStringHash >& serviceTypes,
@@ -175,7 +175,7 @@ void checkType(TypeManager const & manager,
{
OString binType(type.replace('.', '/'));
- typereg::Reader reader(manager.getTypeReader(binType));
+ typereg::Reader reader(manager->getTypeReader(binType));
if ( !reader.isValid() ) {
throw CannotDumpException("Bad type library entity " + binType);
}
@@ -205,7 +205,7 @@ void checkType(TypeManager const & manager,
if ( interfaceTypes.find(supername) == interfaceTypes.end() ) {
interfaceTypes.insert(supername);
- typereg::Reader supertype(manager.getTypeReader(
+ typereg::Reader supertype(manager->getTypeReader(
codemaker::convertString(
reader.getSuperTypeName(0))));
if ( !supertype.isValid() ) {
@@ -288,7 +288,7 @@ void checkDefaultInterfaces(
}
}
-bool checkServiceProperties(TypeManager const & manager,
+bool checkServiceProperties(rtl::Reference< TypeManager > const & manager,
const typereg::Reader & reader)
{
if ( reader.getFieldCount() > 0 )
@@ -298,7 +298,7 @@ bool checkServiceProperties(TypeManager const & manager,
for ( sal_uInt16 i = 0; i < reader.getReferenceCount(); ++i ) {
if ( reader.getReferenceSort(i) == RT_REF_EXPORTS ) {
typereg::Reader refreader(
- manager.getTypeReader(
+ manager->getTypeReader(
codemaker::convertString(reader.getReferenceTypeName(i))));
if ( checkServiceProperties(manager, refreader) )
@@ -312,7 +312,7 @@ bool checkServiceProperties(TypeManager const & manager,
OString checkPropertyHelper(
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
const boost::unordered_set< OString, OStringHash >& services,
const boost::unordered_set< OString, OStringHash >& interfaces,
AttributeInfo& attributes,
@@ -331,13 +331,13 @@ OString checkPropertyHelper(
bool oldStyleWithProperties = false;
while ( iter != end ) {
- typereg::Reader reader(manager.getTypeReader((*iter).replace('.', '/')));
+ typereg::Reader reader(manager->getTypeReader((*iter).replace('.', '/')));
if ( !services.empty() ) {
if ( options.supportpropertysetmixin && reader.getSuperTypeCount() > 0 )
{
typereg::Reader supertype(
- manager.getTypeReader(
+ manager->getTypeReader(
codemaker::convertString(
reader.getSuperTypeName(0))));
if ( !supertype.isValid() ) {
@@ -371,7 +371,7 @@ OString checkPropertyHelper(
return (oldStyleWithProperties ? "_" : "");
}
-bool checkXComponentSupport(TypeManager const & manager,
+bool checkXComponentSupport(rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader)
{
static OUString s( "com/sun/star/lang/XComponent");
@@ -380,7 +380,7 @@ bool checkXComponentSupport(TypeManager const & manager,
for ( sal_uInt16 i = 0; i < reader.getSuperTypeCount(); ++i ) {
typereg::Reader super(
- manager.getTypeReader(
+ manager->getTypeReader(
codemaker::convertString(
reader.getSuperTypeName(i))));
if ( !super.isValid() ) {
@@ -399,7 +399,7 @@ bool checkXComponentSupport(TypeManager const & manager,
// if XComponent is directly specified, return true and remove it from the
// supported interfaces list
-bool checkXComponentSupport(TypeManager const & manager,
+bool checkXComponentSupport(rtl::Reference< TypeManager > const & manager,
boost::unordered_set< OString, OStringHash >& interfaces)
{
if ( interfaces.empty() )
@@ -412,7 +412,7 @@ bool checkXComponentSupport(TypeManager const & manager,
interfaces.erase("com.sun.star.lang.XComponent");
return true;
}
- typereg::Reader reader(manager.getTypeReader((*iter).replace('.', '/')));
+ typereg::Reader reader(manager->getTypeReader((*iter).replace('.', '/')));
if ( checkXComponentSupport(manager, reader) )
return true;
++iter;
@@ -465,7 +465,7 @@ sal_uInt16 checkAdditionalPropertyFlags(typereg::Reader const & reader,
// This function checks if the specified types for parameters and return
// types are allowed add-in types, for more info see the com.sun.star.sheet.AddIn
// service description
-bool checkAddinType(TypeManager const & manager,
+bool checkAddinType(rtl::Reference< TypeManager > const & manager,
OString const & type, bool & bLastAny,
bool & bHasXPropertySet, bool bIsReturn)
{
@@ -515,7 +515,7 @@ bool checkAddinType(TypeManager const & manager,
return false;
}
-void checkAddInTypes(TypeManager const & manager,
+void checkAddInTypes(rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader)
{
OString sType(codemaker::convertString(reader.getTypeName()).replace('/', '.'));
@@ -568,7 +568,7 @@ void checkAddInTypes(TypeManager const & manager,
void generateFunctionParamterMap(std::ostream& o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
::codemaker::GeneratedTypeSet & generated,
bool bFirst)
@@ -590,7 +590,7 @@ void generateFunctionParamterMap(std::ostream& o,
for ( sal_uInt16 i = 0; i < reader.getSuperTypeCount(); ++i ) {
typereg::Reader super(
- manager.getTypeReader(
+ manager->getTypeReader(
codemaker::convertString(
reader.getSuperTypeName(i))));
if ( !super.isValid() ) {
@@ -669,14 +669,14 @@ void generateFunctionParamterMap(std::ostream& o,
void generateFunctionParameterMap(std::ostream& o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
const boost::unordered_set< OString, OStringHash >& interfaces)
{
::codemaker::GeneratedTypeSet generated;
bool bFirst = true;
boost::unordered_set< OString, OStringHash >::const_iterator iter = interfaces.begin();
while ( iter != interfaces.end() ) {
- typereg::Reader reader(manager.getTypeReader((*iter).replace('.','/')));
+ typereg::Reader reader(manager->getTypeReader((*iter).replace('.','/')));
if (!reader.isValid()) {
throw CannotDumpException(
"Bad type library entity "
diff --git a/unodevtools/source/skeletonmaker/skeletoncommon.hxx b/unodevtools/source/skeletonmaker/skeletoncommon.hxx
index 93a27c65f8e9..8fc3951c39d6 100644
--- a/unodevtools/source/skeletonmaker/skeletoncommon.hxx
+++ b/unodevtools/source/skeletonmaker/skeletoncommon.hxx
@@ -19,6 +19,9 @@
#ifndef INCLUDED_UNODEVTOOLS_SOURCE_SKELETONMAKER_SKELETONCOMMON_HXX
#define INCLUDED_UNODEVTOOLS_SOURCE_SKELETONMAKER_SKELETONCOMMON_HXX
+#include "sal/config.h"
+
+#include "rtl/ref.hxx"
#include "rtl/string.hxx"
#include "registry/reader.hxx"
#include "codemaker/typemanager.hxx"
@@ -95,12 +98,12 @@ bool getOutputStream(ProgramOptions const & options,
rtl::OString & tmpSourceFileName);
codemaker::UnoType::Sort decomposeResolveAndCheck(
- TypeManager const & manager, rtl::OString const & type,
+ rtl::Reference< TypeManager > const & manager, rtl::OString const & type,
bool resolveTypedefs, bool allowVoid, bool allowExtraEntities,
RTTypeClass * typeClass, rtl::OString * name, sal_Int32 * rank,
std::vector< rtl::OString > * arguments);
-void checkType(TypeManager const & manager,
+void checkType(rtl::Reference< TypeManager > const & manager,
rtl::OString const & type,
boost::unordered_set< rtl::OString, rtl::OStringHash >& interfaceTypes,
boost::unordered_set< rtl::OString, rtl::OStringHash >& serviceTypes,
@@ -112,7 +115,7 @@ void checkDefaultInterfaces(
const rtl::OString & propertyhelper);
rtl::OString checkPropertyHelper(
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
const boost::unordered_set< rtl::OString, rtl::OStringHash >& services,
const boost::unordered_set< rtl::OString, rtl::OStringHash >& interfaces,
AttributeInfo& attributes,
@@ -127,7 +130,7 @@ rtl::OString checkPropertyHelper(
@param reader a registry type reader of an interface defining
calc add-in functions
*/
-void checkAddInTypes(TypeManager const & manager,
+void checkAddInTypes(rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader);
@@ -141,7 +144,7 @@ void checkAddInTypes(TypeManager const & manager,
@return true if XComponent have to be supported
*/
-bool checkXComponentSupport(TypeManager const & manager,
+bool checkXComponentSupport(rtl::Reference< TypeManager > const & manager,
boost::unordered_set< rtl::OString, rtl::OStringHash >& interfaces);
@@ -151,7 +154,7 @@ sal_uInt16 checkAdditionalPropertyFlags(typereg::Reader const & reader,
void generateFunctionParameterMap(std::ostream& o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
const boost::unordered_set< ::rtl::OString, ::rtl::OStringHash >& interfaces);
}
diff --git a/unodevtools/source/skeletonmaker/skeletoncpp.hxx b/unodevtools/source/skeletonmaker/skeletoncpp.hxx
index 3d05e4339029..3ce20d13ab64 100644
--- a/unodevtools/source/skeletonmaker/skeletoncpp.hxx
+++ b/unodevtools/source/skeletonmaker/skeletoncpp.hxx
@@ -34,21 +34,21 @@ namespace skeletonmaker { namespace cpp {
// 8 = default construction for example for return types, means "return <type>();"
// 16 = default member initialization in a constructor
void printType(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
codemaker::UnoType::Sort sort, RTTypeClass typeClass,
rtl::OString const & name, sal_Int32 rank,
std::vector< rtl::OString > const & arguments,
short referenceType, bool defaultvalue=false);
void printType(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
rtl::OString const & type, short referenceType,
bool defaultvalue=false);
bool printConstructorParameters(std::ostream & o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
typereg::Reader const & outerReader,
std::vector< rtl::OString > const & arguments);
@@ -56,14 +56,14 @@ bool printConstructorParameters(std::ostream & o,
void printConstructor(std::ostream & o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
std::vector< rtl::OString > const & arguments);
void printMethodParameters(std::ostream & o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
sal_uInt16 method, bool previous,
bool withtype);
@@ -71,13 +71,13 @@ void printMethodParameters(std::ostream & o,
void printExceptionSpecification(std::ostream & o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
sal_uInt16 method);
void printMethods(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
codemaker::GeneratedTypeSet & generated,
rtl::OString const & delegate,
@@ -89,13 +89,13 @@ void printMethods(std::ostream & o,
void printConstructionMethods(std::ostream & o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader);
void printServiceMembers(std::ostream & o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
rtl::OString const & type,
rtl::OString const & delegate);
@@ -103,7 +103,7 @@ void printServiceMembers(std::ostream & o,
void printMapsToCppType(std::ostream & o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
codemaker::UnoType::Sort sort,
RTTypeClass typeClass,
rtl::OString const & name,
@@ -114,17 +114,17 @@ void printMapsToCppType(std::ostream & o,
void generateDocumentation(std::ostream & o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
rtl::OString const & type,
rtl::OString const & delegate);
void generateSkeleton(ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
std::vector< rtl::OString > const & types);
void generateCalcAddin(ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
std::vector< rtl::OString > const & types);
} }
diff --git a/unodevtools/source/skeletonmaker/skeletonjava.hxx b/unodevtools/source/skeletonmaker/skeletonjava.hxx
index 5bfae4b01138..41da0e06223c 100644
--- a/unodevtools/source/skeletonmaker/skeletonjava.hxx
+++ b/unodevtools/source/skeletonmaker/skeletonjava.hxx
@@ -27,44 +27,44 @@
namespace skeletonmaker { namespace java {
void printType(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
codemaker::UnoType::Sort sort, RTTypeClass typeClass,
rtl::OString const & name, sal_Int32 rank,
std::vector< rtl::OString > const & arguments,
bool referenceType, bool defaultvalue=false);
void printType(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
rtl::OString const & type, bool referenceType,
bool defaultvalue=false);
bool printConstructorParameters(std::ostream & o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
typereg::Reader const & outerReader,
std::vector< rtl::OString > const & arguments);
void printConstructor(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
std::vector< rtl::OString > const & arguments);
void printMethodParameters(std::ostream & o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
sal_uInt16 method, bool previous,
bool withtype);
void printExceptionSpecification(std::ostream & o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
sal_uInt16 method);
void printMethods(std::ostream & o,
- ProgramOptions const & options, TypeManager const & manager,
+ ProgramOptions const & options, rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
codemaker::GeneratedTypeSet & generated,
rtl::OString const & delegate,
@@ -74,19 +74,19 @@ void printMethods(std::ostream & o,
void printConstructionMethods(std::ostream & o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader);
void printServiceMembers(std::ostream & o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
typereg::Reader const & reader,
rtl::OString const & type,
rtl::OString const & delegate);
void printMapsToJavaType(std::ostream & o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
codemaker::UnoType::Sort sort,
RTTypeClass typeClass,
rtl::OString const & name, sal_Int32 rank,
@@ -95,11 +95,11 @@ void printMapsToJavaType(std::ostream & o,
void generateDocumentation(std::ostream & o,
ProgramOptions const & options,
- TypeManager const & manager,
+ rtl::Reference< TypeManager > const & manager,
rtl::OString const & type,
rtl::OString const & delegate);
-void generateSkeleton(ProgramOptions const & options, TypeManager const & manager, std::vector< rtl::OString > const & types);
+void generateSkeleton(ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, std::vector< rtl::OString > const & types);
} }
diff --git a/unodevtools/source/skeletonmaker/skeletonmaker.cxx b/unodevtools/source/skeletonmaker/skeletonmaker.cxx
index 4884bd4f69ad..42eb62c81329 100644
--- a/unodevtools/source/skeletonmaker/skeletonmaker.cxx
+++ b/unodevtools/source/skeletonmaker/skeletonmaker.cxx
@@ -18,10 +18,10 @@
*/
#include <iostream>
+#include "codemaker/typemanager.hxx"
#include "sal/main.h"
#include "rtl/process.h"
#include "rtl/ustrbuf.hxx"
-#include "unodevtools/typemanager.hxx"
#include "unodevtools/options.hxx"
#include "skeletonjava.hxx"
#include "skeletoncpp.hxx"
@@ -143,7 +143,7 @@ SAL_IMPLEMENT_MAIN()
}
ProgramOptions options;
- std::vector< OUString > registries;
+ std::vector< OString > registries;
std::vector< OString > types;
OString delegate;
@@ -243,7 +243,7 @@ SAL_IMPLEMENT_MAIN()
continue;
}
if ( readOption( &sOption, "l", &nPos, arg) ) {
- registries.push_back(sOption);
+ registries.push_back(OUStringToOString(sOption, RTL_TEXTENCODING_UTF8));
continue;
}
if ( readOption( &sOption, "t", &nPos, arg) ) {
@@ -274,7 +274,7 @@ SAL_IMPLEMENT_MAIN()
buf.append(arg);
buf.append("\"!");
throw RuntimeException(buf.makeStringAndClear(),
- Reference< XInterface >());
+ css::uno::Reference< XInterface >());
}
if ( types.empty() && options.componenttype != 3) {
@@ -284,8 +284,8 @@ SAL_IMPLEMENT_MAIN()
exit(EXIT_FAILURE);
}
- UnoTypeManager manager;
- if ( !manager.init(registries) ) {
+ rtl::Reference< TypeManager > manager(new TypeManager);
+ if ( !manager->init(registries) ) {
std::cerr
<< ("\nError: Using the binary type libraries failed, check the -L"
" options\n");
diff --git a/unodevtools/source/unodevtools/typemanager.cxx b/unodevtools/source/unodevtools/typemanager.cxx
deleted file mode 100644
index c25bcac9964c..000000000000
--- a/unodevtools/source/unodevtools/typemanager.cxx
+++ /dev/null
@@ -1,270 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include "unodevtools/typemanager.hxx"
-
-#include "rtl/alloc.h"
-#include "registry/reader.hxx"
-#include "cppuhelper/bootstrap.hxx"
-
-#include "com/sun/star/container/XSet.hpp"
-#include "com/sun/star/reflection/XTypeDescription.hpp"
-#include "com/sun/star/registry/XSimpleRegistry.hpp"
-#include "com/sun/star/uno/XComponentContext.hpp"
-
-using namespace ::rtl;
-using namespace ::cppu;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::registry;
-using namespace ::com::sun::star::reflection;
-
-namespace unodevtools {
-
-static RTTypeClass mapTypeClass(TypeClass typeclass) {
- switch(typeclass) {
- case TypeClass_ENUM:
- return RT_TYPE_ENUM;
- case TypeClass_TYPEDEF:
- return RT_TYPE_TYPEDEF;
- case TypeClass_STRUCT:
- return RT_TYPE_STRUCT;
- case TypeClass_UNION:
- return RT_TYPE_UNION;
- case TypeClass_EXCEPTION:
- return RT_TYPE_EXCEPTION;
- case TypeClass_INTERFACE:
- return RT_TYPE_INTERFACE;
- case TypeClass_SERVICE:
- return RT_TYPE_SERVICE;
- case TypeClass_MODULE:
- return RT_TYPE_MODULE;
- case TypeClass_CONSTANTS:
- return RT_TYPE_CONSTANTS;
- case TypeClass_SINGLETON:
- return RT_TYPE_SINGLETON;
- default:
- break;
- }
- return RT_TYPE_INVALID;
-}
-
-
-UnoTypeManager::UnoTypeManager()
-{
- m_pImpl = new UnoTypeManagerImpl();
- acquire();
-}
-
-UnoTypeManager::~UnoTypeManager()
-{
- release();
-}
-
-void UnoTypeManager::release()
-{
- if (0 == TypeManager::release())
- delete m_pImpl;
-}
-
-sal_Bool UnoTypeManager::init(
- const ::std::vector< ::rtl::OUString > registries)
-{
- Reference< XComponentContext > xContext=
- defaultBootstrap_InitialComponentContext();
-
- if ( !xContext.is() ) {
- OUString msg(
- "internal UNO problem, can't create initial UNO component context");
- throw RuntimeException( msg, Reference< XInterface >());
- }
- Any a = xContext->getValueByName(
- OUString(
- "/singletons/com.sun.star.reflection.theTypeDescriptionManager"));
-
- a >>= m_pImpl->m_tdmgr;
-
- if ( !m_pImpl->m_tdmgr.is() ) {
- OUString msg("internal UNO problem, can't get TypeDescriptionManager");
- throw RuntimeException( msg, Reference< XInterface >());
- }
-
- if ( !registries.empty() ) {
-
- Reference< XMultiComponentFactory > xServiceManager(
- xContext->getServiceManager() );
- if ( !xServiceManager.is() ) {
- OUString msg("internal UNO problem, can't get ServiceManager");
- throw RuntimeException( msg, Reference< XInterface >());
- }
-
- Sequence<Any> seqArgs(registries.size());
-
- std::vector< OUString >::const_iterator iter = registries.begin();
- int i = 0;
- while ( iter != registries.end() )
- {
- Reference< XSimpleRegistry > xReg(
- xServiceManager->createInstanceWithContext(
- OUString("com.sun.star.registry.SimpleRegistry"),
- xContext), UNO_QUERY);
- xReg->open(convertToFileUrl(
- OUStringToOString(*iter, RTL_TEXTENCODING_UTF8)),
- sal_True, sal_False);
-
- seqArgs[i++] = makeAny(xReg);
- ++iter;
- }
-
- Reference< XHierarchicalNameAccess > xTDProvider(
- xServiceManager->createInstanceWithArgumentsAndContext(
- OUString("com.sun.star.reflection.TypeDescriptionProvider"),
- seqArgs, xContext),
- UNO_QUERY);
- if ( !xTDProvider.is() ) {
- OUString msg("internal UNO problem, can't create local"
- " type description provider");
- throw RuntimeException( msg, Reference< XInterface >());
- }
-
- a = makeAny(xTDProvider);
- Reference< XSet > xSet(m_pImpl->m_tdmgr, UNO_QUERY);
- xSet->insert(a);
- }
-
- return sal_True;
-}
-
-sal_Bool UnoTypeManager::isValidType(const ::rtl::OString& name) const
-{
- return m_pImpl->m_tdmgr->hasByHierarchicalName(
- OStringToOUString(name, RTL_TEXTENCODING_UTF8));
-}
-
-OString UnoTypeManager::getTypeName(RegistryKey& rTypeKey) const
-{
- OString typeName = OUStringToOString(rTypeKey.getName(), RTL_TEXTENCODING_UTF8);
- static OString sBase("/UCR");
- if (typeName.indexOf(sBase) == 0) {
- typeName = typeName.copy(typeName.indexOf('/', 1) + 1);
- } else {
- typeName = typeName.copy(1);
- }
- return typeName;
-}
-
-// extern
-void* getTypeBlob(Reference< XHierarchicalNameAccess > xTDmgr,
- const OString& typeName, sal_uInt32* pBlob);
-
-typereg::Reader UnoTypeManager::getTypeReader(
- const OString& name, sal_Bool * /*pIsExtraType*/ ) const
-{
- typereg::Reader reader;
-
- void* pBlob = NULL;
- sal_uInt32 blobsize = 0;
-
- if ( (pBlob = getTypeBlob(m_pImpl->m_tdmgr, name, &blobsize)) != NULL )
- reader = typereg::Reader(pBlob, blobsize, sal_True, TYPEREG_VERSION_1);
-
- if ( pBlob )
- rtl_freeMemory(pBlob);
-
- return reader;
-}
-
-typereg::Reader UnoTypeManager::getTypeReader(RegistryKey& rTypeKey) const
-{
- typereg::Reader reader;
-
- if (rTypeKey.isValid()) {
- RegValueType valueType;
- sal_uInt32 valueSize;
-
- if (!rTypeKey.getValueInfo(OUString(), &valueType, &valueSize)) {
- sal_uInt8* pBuffer = (sal_uInt8*)rtl_allocateMemory(valueSize);
- if ( !rTypeKey.getValue(OUString(), pBuffer) ) {
- reader = typereg::Reader(
- pBuffer, valueSize, true, TYPEREG_VERSION_1);
- }
- rtl_freeMemory(pBuffer);
- }
- }
- return reader;
-}
-
-
-RTTypeClass UnoTypeManager::getTypeClass(const OString& name) const
-{
- if ( m_pImpl->m_t2TypeClass.count(name) > 0 ) {
- return m_pImpl->m_t2TypeClass[name];
- } else {
- Reference< XTypeDescription > xTD;
- Any a = m_pImpl->m_tdmgr->getByHierarchicalName(
- OStringToOUString(name, RTL_TEXTENCODING_UTF8));
- a >>= xTD;
-
- if ( xTD.is() ) {
- RTTypeClass tc = mapTypeClass(xTD->getTypeClass());
- if (tc != RT_TYPE_INVALID)
- m_pImpl->m_t2TypeClass[name] = tc;
- return tc;
- }
- }
-
- return RT_TYPE_INVALID;
-}
-
-RTTypeClass UnoTypeManager::getTypeClass(RegistryKey& rTypeKey) const
-{
- OString name = getTypeName(rTypeKey);
-
- if ( m_pImpl->m_t2TypeClass.count(name) > 0 ) {
- return m_pImpl->m_t2TypeClass[name];
- } else {
- if ( rTypeKey.isValid() ) {
- RegValueType valueType;
- sal_uInt32 valueSize;
-
- if ( !rTypeKey.getValueInfo(OUString(), &valueType, &valueSize) ) {
- sal_uInt8* pBuffer = (sal_uInt8*)rtl_allocateMemory(valueSize);
- if ( !rTypeKey.getValue(OUString(), pBuffer) ) {
- typereg::Reader reader(
- pBuffer, valueSize, false, TYPEREG_VERSION_1);
-
- RTTypeClass ret = reader.getTypeClass();
-
- rtl_freeMemory(pBuffer);
-
- m_pImpl->m_t2TypeClass[name] = ret;
- return ret;
- }
- rtl_freeMemory(pBuffer);
- }
- }
- }
-
- return RT_TYPE_INVALID;
-}
-
-} // end of namespace unodevtools
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */