diff options
Diffstat (limited to 'rdbmaker/inc/codemaker')
-rw-r--r-- | rdbmaker/inc/codemaker/dependency.hxx | 150 | ||||
-rw-r--r-- | rdbmaker/inc/codemaker/global.hxx | 140 | ||||
-rw-r--r-- | rdbmaker/inc/codemaker/options.hxx | 89 | ||||
-rw-r--r-- | rdbmaker/inc/codemaker/registry.hxx | 211 | ||||
-rw-r--r-- | rdbmaker/inc/codemaker/typemanager.hxx | 164 |
5 files changed, 0 insertions, 754 deletions
diff --git a/rdbmaker/inc/codemaker/dependency.hxx b/rdbmaker/inc/codemaker/dependency.hxx deleted file mode 100644 index 11d80df0b..000000000 --- a/rdbmaker/inc/codemaker/dependency.hxx +++ /dev/null @@ -1,150 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _CODEMAKER_DEPENDENCY_HXX_ -#define _CODEMAKER_DEPENDENCY_HXX_ - -#include <boost/unordered_map.hpp> -#include <registry/registry.hxx> -#include <registry/reflread.hxx> -#include <codemaker/typemanager.hxx> -#include <codemaker/global.hxx> -#include <osl/diagnose.h> - -#define TYPEUSE_NORMAL 0x0001 -#define TYPEUSE_SUPER 0x0002 -#define TYPEUSE_MEMBER 0x0004 -#define TYPEUSE_INPARAM 0x0008 -#define TYPEUSE_OUTPARAM 0x0010 -#define TYPEUSE_INOUTPARAM 0x0020 -#define TYPEUSE_RETURN 0x0040 -#define TYPEUSE_EXCEPTION 0x0080 -#define TYPEUSE_SCOPE 0x0100 - -/** - * Flag shows the state of the code generation. If the Flag is set - * the code for this type is generated. - */ -#define CODEGEN_DEFAULT 0x0001 - -struct TypeUsing -{ - TypeUsing(const ::rtl::OString& type, sal_uInt16 use) - : m_type(type) - , m_use(use) - {} - - ::rtl::OString m_type; - sal_uInt16 m_use; - - sal_Bool operator == (const TypeUsing & typeUsing) const - { - OSL_ASSERT(0); - return m_type == typeUsing.m_type && m_use == typeUsing.m_use; - } -}; - -struct LessTypeUsing -{ - sal_Bool operator()(const TypeUsing& tuse1, const TypeUsing& tuse2) const - { - return (tuse1.m_type < tuse2.m_type); - } -}; - -typedef ::std::set< TypeUsing, LessTypeUsing > TypeUsingSet; - - -typedef ::boost::unordered_map -< - ::rtl::OString, - TypeUsingSet, - HashString, - EqualString -> DependencyMap; - -typedef ::boost::unordered_map -< - ::rtl::OString, - sal_uInt16, - HashString, - EqualString -> GenerationMap; - -struct TypeDependencyImpl -{ - TypeDependencyImpl() - : m_refCount(0) - {} - - sal_Int32 m_refCount; - DependencyMap m_dependencies; - GenerationMap m_generatedTypes; -}; - -class TypeDependency -{ -public: - TypeDependency(); - ~TypeDependency(); - - TypeDependency( const TypeDependency& value ) - : m_pImpl( value.m_pImpl ) - { - acquire(); - } - - TypeDependency& operator = ( const TypeDependency& value ) - { - release(); - m_pImpl = value.m_pImpl; - acquire(); - return *this; - } - - sal_Bool insert(const ::rtl::OString& type, const ::rtl::OString& depend, sal_uInt16); - TypeUsingSet getDependencies(const ::rtl::OString& type); - sal_Bool hasDependencies(const ::rtl::OString& type); - - void setGenerated(const ::rtl::OString& type, sal_uInt16 genFlag=CODEGEN_DEFAULT); - sal_Bool isGenerated(const ::rtl::OString& type, sal_uInt16 genFlag=CODEGEN_DEFAULT); - - sal_Int32 getSize() { return m_pImpl->m_generatedTypes.size(); } -protected: - void acquire(); - void release(); - -protected: - TypeDependencyImpl* m_pImpl; -}; - -sal_Bool checkTypeDependencies(TypeManager& typeMgr, TypeDependency& dependencies, const ::rtl::OString& type, sal_Bool bDepend = sal_False); - -#endif // _CODEMAKER_DEPENDENCY_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/rdbmaker/inc/codemaker/global.hxx b/rdbmaker/inc/codemaker/global.hxx deleted file mode 100644 index 5f37495e5..000000000 --- a/rdbmaker/inc/codemaker/global.hxx +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _CODEMAKER_GLOBAL_HXX_ -#define _CODEMAKER_GLOBAL_HXX_ - -#include <list> -#include <vector> -#include <set> - -#include <stdio.h> -#include <rtl/ustring.hxx> -#include <rtl/strbuf.hxx> - -struct EqualString -{ - sal_Bool operator()(const ::rtl::OString& str1, const ::rtl::OString& str2) const - { - return (str1 == str2); - } -}; - -struct HashString -{ - size_t operator()(const ::rtl::OString& str) const - { - return str.hashCode(); - } -}; - -struct LessString -{ - sal_Bool operator()(const ::rtl::OString& str1, const ::rtl::OString& str2) const - { - return (str1 < str2); - } -}; - -#if defined(_MSC_VER) && _MSC_VER < 1200 -typedef ::std::new_alloc NewAlloc; -#endif - - -typedef ::std::list< ::rtl::OString > StringList; -typedef ::std::vector< ::rtl::OString > StringVector; -typedef ::std::set< ::rtl::OString, LessString > StringSet; - -::rtl::OString makeTempName(); - -const ::rtl::OString inGlobalSet(const ::rtl::OUString & r); - -::rtl::OUString convertToFileUrl(const ::rtl::OString& fileName); - -//************************************************************************* -// FileStream -//************************************************************************* -enum FileAccessMode -{ - FAM_READ, // "r" - FAM_WRITE, // "w" - FAM_APPEND, // "a" - FAM_READWRITE_EXIST, // "r+" - FAM_READWRITE, // "w+" - FAM_READAPPEND // "a+" -}; - -class FileStream //: public ofstream -{ -public: - FileStream(); - virtual ~FileStream(); - - sal_Bool isValid(); - - void open(const ::rtl::OString& name, FileAccessMode nMode = FAM_READWRITE); - void close(); - - ::rtl::OString getName() { return m_name; } - - // friend functions - friend FileStream &operator<<(FileStream& o, sal_uInt32 i) - { fprintf(o.m_pFile, "%lu", sal::static_int_cast< unsigned long >(i)); - return o; - } - friend FileStream &operator<<(FileStream& o, char const * s) - { fprintf(o.m_pFile, "%s", s); - return o; - } - friend FileStream &operator<<(FileStream& o, ::rtl::OString* s) - { fprintf(o.m_pFile, "%s", s->getStr()); - return o; - } - friend FileStream &operator<<(FileStream& o, const ::rtl::OString& s) - { fprintf(o.m_pFile, "%s", s.getStr()); - return o; - } - friend FileStream &operator<<(FileStream& o, ::rtl::OStringBuffer* s) - { fprintf(o.m_pFile, "%s", s->getStr()); - return o; - } - friend FileStream &operator<<(FileStream& o, const ::rtl::OStringBuffer& s) - { fprintf(o.m_pFile, "%s", s.getStr()); - return o; - } - -protected: - const sal_Char* checkAccessMode(FileAccessMode mode); - - FILE* m_pFile; - ::rtl::OString m_name; -}; - -#endif // _CODEMAKER_GLOBAL_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/rdbmaker/inc/codemaker/options.hxx b/rdbmaker/inc/codemaker/options.hxx deleted file mode 100644 index f0e5462a1..000000000 --- a/rdbmaker/inc/codemaker/options.hxx +++ /dev/null @@ -1,89 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _CODEMAKER_OPTIONS_HXX_ -#define _CODEMAKER_OPTIONS_HXX_ - -#include <boost/unordered_map.hpp> -#include <codemaker/global.hxx> - -typedef ::boost::unordered_map -< - ::rtl::OString, - ::rtl::OString, - HashString, - EqualString -> OptionMap; - -class CannotDumpException -{ -public: - CannotDumpException(const ::rtl::OString& msg) - : m_message(msg) {} - - ::rtl::OString m_message; -}; - - -class IllegalArgument -{ -public: - IllegalArgument(const ::rtl::OString& msg) - : m_message(msg) {} - - ::rtl::OString m_message; -}; - - -class Options -{ -public: - Options(); - virtual ~Options(); - - virtual sal_Bool initOptions(int ac, char* av[], sal_Bool bCmdFile=sal_False) - throw( IllegalArgument ) = 0; - - virtual ::rtl::OString prepareHelp() = 0; - - const ::rtl::OString& getProgramName() const; - sal_Bool isValid(const ::rtl::OString& option); - const ::rtl::OString getOption(const ::rtl::OString& option) - throw( IllegalArgument ); - - const StringVector& getInputFiles(); - -protected: - ::rtl::OString m_program; - StringVector m_inputFiles; - OptionMap m_options; -}; - -#endif // _CODEMAKER_OPTIONS_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/rdbmaker/inc/codemaker/registry.hxx b/rdbmaker/inc/codemaker/registry.hxx deleted file mode 100644 index 6c89a49e3..000000000 --- a/rdbmaker/inc/codemaker/registry.hxx +++ /dev/null @@ -1,211 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _CODEMAKER_REGISTRY_HXX_ -#define _CODEMAKER_REGISTRY_HXX_ - -#include <rtl/alloc.h> -#include <osl/interlck.h> -#include <registry/registry.hxx> -#include "registry/reader.hxx" -#include "registry/version.h" -#include <codemaker/options.hxx> - -struct TypeReader_Impl -{ - TypeReader_Impl(const sal_uInt8* buffer, - sal_uInt32 bufferLen, - sal_Bool copyData) - : m_refCount(0) - , m_copyData(copyData) - , m_blopSize(bufferLen) - , m_pBlop(buffer) - { - if (copyData) - { - m_pBlop = (sal_uInt8*)rtl_allocateMemory(bufferLen); - rtl_copyMemory((void*)m_pBlop, buffer, bufferLen); - } else - { - m_blopSize = bufferLen; - m_pBlop = buffer; - } - - m_pReader = new typereg::Reader( - m_pBlop, m_blopSize, false, TYPEREG_VERSION_1); - } - - ~TypeReader_Impl() - { - if (m_copyData && m_pReader) - { - delete m_pReader; - } - } - - sal_Int32 m_refCount; - sal_Bool m_copyData; - sal_Int32 m_blopSize; - const sal_uInt8* m_pBlop; - typereg::Reader* m_pReader; -}; - -class TypeReader -{ -/* - inline TypeReader(const RegistryTypeReader_Api* pApi, - const sal_uInt8* buffer, - sal_uInt32 bufferLen, - sal_Bool copyData); -*/ -public: - inline TypeReader() - : m_pImpl(NULL) - {} - - inline TypeReader( const sal_uInt8* buffer, - sal_uInt32 bufferLen, - sal_Bool copyData) - { - m_pImpl = new TypeReader_Impl(buffer, bufferLen, copyData); - acquire(); - } - - inline TypeReader(const TypeReader& toCopy) - : m_pImpl(toCopy.m_pImpl) - { - acquire(); - } - - inline ~TypeReader() - { - release(); - } - - inline void acquire() - { - if (m_pImpl) - osl_incrementInterlockedCount(&m_pImpl->m_refCount); - } - - inline void release() - { - if (m_pImpl && 0 == osl_decrementInterlockedCount(&m_pImpl->m_refCount)) - { - delete m_pImpl; - } - } - - inline TypeReader& operator = ( const TypeReader& value ) - { - release(); - m_pImpl = value.m_pImpl; - acquire(); - return *this; - } - - inline sal_Bool isValid() const - { - if (m_pImpl) - return m_pImpl->m_pReader->isValid(); - else - return sal_False; - } - - inline RTTypeClass getTypeClass() const - { return m_pImpl->m_pReader->getTypeClass(); } - inline const ::rtl::OString getTypeName() const - { return inGlobalSet( m_pImpl->m_pReader->getTypeName() ); } - inline sal_uInt16 getSuperTypeCount() const - { return m_pImpl->m_pReader->getSuperTypeCount(); } - inline const ::rtl::OString getSuperTypeName(sal_uInt16 index) const - { return inGlobalSet( m_pImpl->m_pReader->getSuperTypeName(index) ); } - inline const ::rtl::OString getDoku() const - { return inGlobalSet( m_pImpl->m_pReader->getDocumentation() ); } - inline const ::rtl::OString getFileName() const - { return inGlobalSet( m_pImpl->m_pReader->getFileName() ); } - inline sal_uInt32 getFieldCount() const - { return m_pImpl->m_pReader->getFieldCount(); } - inline const ::rtl::OString getFieldName( sal_uInt16 index ) const - { return inGlobalSet( m_pImpl->m_pReader->getFieldName(index) ); } - inline const ::rtl::OString getFieldType( sal_uInt16 index ) const - { return inGlobalSet( m_pImpl->m_pReader->getFieldTypeName(index) ); } - inline RTFieldAccess getFieldAccess( sal_uInt16 index ) const - { return m_pImpl->m_pReader->getFieldFlags(index); } - inline RTConstValue getFieldConstValue( sal_uInt16 index ) const - { return m_pImpl->m_pReader->getFieldValue(index); } - inline const ::rtl::OString getFieldDoku( sal_uInt16 index ) const - { return inGlobalSet( m_pImpl->m_pReader->getFieldDocumentation(index) ); } - inline const ::rtl::OString getFieldFileName( sal_uInt16 index ) const - { return inGlobalSet( m_pImpl->m_pReader->getFieldFileName(index) ); } - inline sal_uInt32 getMethodCount() const - { return m_pImpl->m_pReader->getMethodCount(); } - inline const ::rtl::OString getMethodName( sal_uInt16 index ) const - { return inGlobalSet( m_pImpl->m_pReader->getMethodName(index) ); } - inline sal_uInt32 getMethodParamCount( sal_uInt16 index ) const - { return m_pImpl->m_pReader->getMethodParameterCount(index); } - inline const ::rtl::OString getMethodParamType( sal_uInt16 index, sal_uInt16 paramIndex ) const - { return inGlobalSet( m_pImpl->m_pReader->getMethodParameterTypeName(index,paramIndex) ); } - inline const ::rtl::OString getMethodParamName( sal_uInt16 index, sal_uInt16 paramIndex ) const - { return inGlobalSet( m_pImpl->m_pReader->getMethodParameterName(index,paramIndex) ); } - inline RTParamMode getMethodParamMode( sal_uInt16 index, sal_uInt16 paramIndex ) const - { return m_pImpl->m_pReader->getMethodParameterFlags(index,paramIndex); } - inline sal_uInt32 getMethodExcCount( sal_uInt16 index ) const - { return m_pImpl->m_pReader->getMethodExceptionCount(index); } - inline const ::rtl::OString getMethodExcType( sal_uInt16 index, sal_uInt16 excIndex ) const - { return inGlobalSet( m_pImpl->m_pReader->getMethodExceptionTypeName(index,excIndex) ); } - inline const ::rtl::OString getMethodReturnType( sal_uInt16 index ) const - { return inGlobalSet( m_pImpl->m_pReader->getMethodReturnTypeName(index) ); } - inline RTMethodMode getMethodMode( sal_uInt16 index ) const - { return m_pImpl->m_pReader->getMethodFlags(index); } - inline const ::rtl::OString getMethodDoku( sal_uInt16 index ) const - { return inGlobalSet( m_pImpl->m_pReader->getMethodDocumentation(index) ); } - - inline sal_uInt32 getReferenceCount() const - { return m_pImpl->m_pReader->getReferenceCount(); } - inline const ::rtl::OString getReferenceName( sal_uInt16 index ) const - { return inGlobalSet( m_pImpl->m_pReader->getReferenceTypeName(index) ); } - inline RTReferenceType getReferenceType( sal_uInt16 index ) const - { return m_pImpl->m_pReader->getReferenceSort(index); } - inline const ::rtl::OString getReferenceDoku( sal_uInt16 index ) const - { return inGlobalSet( m_pImpl->m_pReader->getReferenceDocumentation(index) ); } - - inline sal_uInt32 getBlopSize() const - { return m_pImpl->m_blopSize; } - - inline const sal_uInt8* getBlop() const - { return m_pImpl->m_pBlop; } - -private: - TypeReader_Impl* m_pImpl; -}; - - -#endif // _CODEMAKER_REGISTRY_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/rdbmaker/inc/codemaker/typemanager.hxx b/rdbmaker/inc/codemaker/typemanager.hxx deleted file mode 100644 index 9e231ebb8..000000000 --- a/rdbmaker/inc/codemaker/typemanager.hxx +++ /dev/null @@ -1,164 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#include <boost/unordered_map.hpp> - -#ifndef _CODEMAKER_TYPEMANAGER_HXX_ -#define _CODEMAKER_TYPEMANAGER_HXX_ -#include <codemaker/registry.hxx> - -typedef ::std::list< Registry* > RegistryList; - -typedef ::boost::unordered_map -< - ::rtl::OString, // Typename - RTTypeClass, // TypeClass - HashString, - EqualString -> T2TypeClassMap; - -struct TypeManagerImpl -{ - TypeManagerImpl() - : m_refCount(0) - {} - - sal_Int32 m_refCount; -}; - -class TypeManager -{ -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 init(sal_Bool /*bMerge*/, const StringVector& /*regFiles*/) - { return sal_False; } - virtual sal_Bool init(const ::rtl::OString& /*registryName*/) - { return sal_False; } - - virtual sal_Bool isValidType(const ::rtl::OString& /*name*/) - { return sal_False; } - - virtual RegistryKey getTypeKey(const ::rtl::OString& /*name*/) - { return RegistryKey(); } - virtual TypeReader getTypeReader(const ::rtl::OString& /*name*/) - { return TypeReader(); } - virtual RTTypeClass getTypeClass(const ::rtl::OString& /*name*/) - { return RT_TYPE_INVALID; } - - virtual void setBase(const ::rtl::OString& /*base*/) {} - virtual ::rtl::OString getBase() { return ::rtl::OString(); } - - virtual sal_Int32 getSize() { return 0; } - -protected: - sal_Int32 acquire(); - sal_Int32 release(); - -protected: - TypeManagerImpl* m_pImpl; -}; - -struct RegistryTypeManagerImpl -{ - RegistryTypeManagerImpl() - : m_pMergedRegistry(NULL) - , m_base("/") - , m_isMerged(sal_False) - {} - - T2TypeClassMap m_t2TypeClass; - RegistryList m_registries; - Registry* m_pMergedRegistry; - ::rtl::OString m_base; - sal_Bool m_isMerged; -}; - -class RegistryTypeManager : public TypeManager -{ -public: - RegistryTypeManager(); - virtual ~RegistryTypeManager(); - - RegistryTypeManager( const RegistryTypeManager& value ) - : TypeManager(value) - , m_pImpl( value.m_pImpl ) - { - acquire(); - } -/* - RegistryTypeManager& operator = ( const RegistryTypeManager& value ) - { - release(); - m_pImpl = value.m_pImpl; - acquire(); - return *this; - } -*/ - using TypeManager::init; - sal_Bool init(sal_Bool bMerge, const StringVector& regFiles); - - sal_Bool isValidType(const ::rtl::OString& name) - { return searchTypeKey(name).isValid(); } - RegistryKey getTypeKey(const ::rtl::OString& name) - { return searchTypeKey(name); } - TypeReader getTypeReader(const ::rtl::OString& name); - RTTypeClass getTypeClass(const ::rtl::OString& name); - - void setBase(const ::rtl::OString& base); - ::rtl::OString getBase() { return m_pImpl->m_base; } - - sal_Int32 getSize() { return m_pImpl->m_t2TypeClass.size(); } -protected: - RegistryKey searchTypeKey(const ::rtl::OString& name); - void freeRegistries(); - - void acquire(); - void release(); - -protected: - RegistryTypeManagerImpl* m_pImpl; -}; - -#endif // _CODEMAKER_TYPEMANAGER_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |