summaryrefslogtreecommitdiff
path: root/codemaker
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 /codemaker
parentaaaeec55c6ca86a4871a59e058f80498e898b29b (diff)
Clean up codemaker/typemanager.hxx
Change-Id: I650efd6780070410eaf34993dd41ed1b8ada7c9a
Diffstat (limited to 'codemaker')
-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
16 files changed, 238 insertions, 320 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);