From a843c457044acc3155b0d3c49534e78569c69d96 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Fri, 3 Jul 2015 11:11:14 +0200 Subject: Remove RegistryTypeReader_Api indirection Change-Id: I43710d057043a258ec9ab94bca0703434098e6c9 --- registry/source/reflread.cxx | 105 +++++++++++++++++++++------ registry/source/reflread.hxx | 167 ++++--------------------------------------- 2 files changed, 96 insertions(+), 176 deletions(-) (limited to 'registry') diff --git a/registry/source/reflread.cxx b/registry/source/reflread.cxx index 33343e2f8dce..15e3f2f50841 100644 --- a/registry/source/reflread.cxx +++ b/registry/source/reflread.cxx @@ -1741,31 +1741,90 @@ void TYPEREG_CALLTYPE typereg_reader_getSuperTypeName( rtl_uString_new(pSuperTypeName); } -RegistryTypeReader_Api* TYPEREG_CALLTYPE initRegistryTypeReader_Api() -{ - static RegistryTypeReader_Api aApi= {0,0,0,0,0,0,0,0,0,0,0,0,0}; - if (!aApi.acquire) - { - aApi.createEntry = &createEntry; - aApi.acquire = &typereg_reader_acquire; - aApi.release = &typereg_reader_release; - aApi.getTypeClass = &typereg_reader_getTypeClass; - aApi.getTypeName = &typereg_reader_getTypeName; - aApi.getSuperTypeName = &getSuperTypeName; - aApi.getFieldCount = &getFieldCount; - aApi.getFieldName = &typereg_reader_getFieldName; - aApi.getFieldType = &typereg_reader_getFieldTypeName; - aApi.getFieldAccess = &typereg_reader_getFieldFlags; - aApi.getFieldConstValue = &getFieldConstValue; - aApi.getFieldDoku = &typereg_reader_getFieldDocumentation; - aApi.getFieldFileName = &typereg_reader_getFieldFileName; - - return (&aApi); - } - else +RegistryTypeReader::RegistryTypeReader(const sal_uInt8* buffer, + sal_uInt32 bufferLen, + bool copyData) + : m_hImpl(NULL) +{ + m_hImpl = createEntry(buffer, bufferLen, copyData); +} + +RegistryTypeReader::RegistryTypeReader(const RegistryTypeReader& toCopy) + : m_hImpl(toCopy.m_hImpl) +{ typereg_reader_acquire(m_hImpl); } + + +RegistryTypeReader::~RegistryTypeReader() +{ typereg_reader_release(m_hImpl); } + +RegistryTypeReader& RegistryTypeReader::operator == (const RegistryTypeReader& toAssign) +{ + if (m_hImpl != toAssign.m_hImpl) { - return (&aApi); + typereg_reader_release(m_hImpl); + m_hImpl = toAssign.m_hImpl; + typereg_reader_acquire(m_hImpl); } + + return *this; +} + +RTTypeClass RegistryTypeReader::getTypeClass() const +{ return typereg_reader_getTypeClass(m_hImpl); } + +rtl::OUString RegistryTypeReader::getTypeName() const +{ + rtl::OUString sRet; + typereg_reader_getTypeName(m_hImpl, &sRet.pData); + return sRet; +} + +rtl::OUString RegistryTypeReader::getSuperTypeName() const +{ + rtl::OUString sRet; + ::getSuperTypeName(m_hImpl, &sRet.pData); + return sRet; +} + +sal_uInt32 RegistryTypeReader::getFieldCount() const +{ return ::getFieldCount(m_hImpl); } + +rtl::OUString RegistryTypeReader::getFieldName( sal_uInt16 index ) const +{ + rtl::OUString sRet; + typereg_reader_getFieldName(m_hImpl, &sRet.pData, index); + return sRet; +} + +rtl::OUString RegistryTypeReader::getFieldType( sal_uInt16 index ) const +{ + rtl::OUString sRet; + typereg_reader_getFieldTypeName(m_hImpl, &sRet.pData, index); + return sRet; +} + +RTFieldAccess RegistryTypeReader::getFieldAccess( sal_uInt16 index ) const +{ return typereg_reader_getFieldFlags(m_hImpl, index); } + +RTConstValue RegistryTypeReader::getFieldConstValue( sal_uInt16 index ) const +{ + RTConstValue ret; + ret.m_type = ::getFieldConstValue(m_hImpl, index, &ret.m_value); + return ret; +} + +rtl::OUString RegistryTypeReader::getFieldDoku( sal_uInt16 index ) const +{ + rtl::OUString sRet; + typereg_reader_getFieldDocumentation(m_hImpl, &sRet.pData, index); + return sRet; +} + +rtl::OUString RegistryTypeReader::getFieldFileName( sal_uInt16 index ) const +{ + rtl::OUString sRet; + typereg_reader_getFieldFileName(m_hImpl, &sRet.pData, index); + return sRet; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/registry/source/reflread.hxx b/registry/source/reflread.hxx index 5d6fc0c22c69..a4f3b9feb515 100644 --- a/registry/source/reflread.hxx +++ b/registry/source/reflread.hxx @@ -27,50 +27,10 @@ /// Implememetation handle typedef void* TypeReaderImpl; -/**************************************************************************** - - C-Api - -*****************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - -/** specifies a collection of function pointers which represents the complete registry type reader C-API. - - This funtions pointers are used by the C++ wrapper to call the C-API. -*/ -struct RegistryTypeReader_Api -{ - TypeReaderImpl (TYPEREG_CALLTYPE *createEntry) (const sal_uInt8*, sal_uInt32, bool); - void (TYPEREG_CALLTYPE *acquire) (TypeReaderImpl); - void (TYPEREG_CALLTYPE *release) (TypeReaderImpl); - RTTypeClass (TYPEREG_CALLTYPE *getTypeClass) (TypeReaderImpl); - void (TYPEREG_CALLTYPE *getTypeName) (TypeReaderImpl, rtl_uString**); - void (TYPEREG_CALLTYPE *getSuperTypeName) (TypeReaderImpl, rtl_uString**); - sal_uInt32 (TYPEREG_CALLTYPE *getFieldCount) (TypeReaderImpl); - void (TYPEREG_CALLTYPE *getFieldName) (TypeReaderImpl, rtl_uString**, sal_uInt16); - void (TYPEREG_CALLTYPE *getFieldType) (TypeReaderImpl, rtl_uString**, sal_uInt16); - RTFieldAccess (TYPEREG_CALLTYPE *getFieldAccess) (TypeReaderImpl, sal_uInt16); - RTValueType (TYPEREG_CALLTYPE *getFieldConstValue) (TypeReaderImpl, sal_uInt16, RTConstValueUnion*); - void (TYPEREG_CALLTYPE *getFieldDoku) (TypeReaderImpl, rtl_uString**, sal_uInt16); - void (TYPEREG_CALLTYPE *getFieldFileName) (TypeReaderImpl, rtl_uString**, sal_uInt16); -}; - -/** the API initialization function. -*/ -RegistryTypeReader_Api* TYPEREG_CALLTYPE initRegistryTypeReader_Api(); - -#ifdef __cplusplus -} -#endif - /** RegistryTypeReades reads a binary type blob. This class provides the necessary functions to read type information for all kinds of types of a type blob. - The class is inline and use a C-Api. @deprecated use typereg::Reader instead @@ -87,18 +47,18 @@ public: The block can be copied to ensure that the data is valid for the lifetime of this instance. */ - inline RegistryTypeReader(const sal_uInt8* buffer, + RegistryTypeReader(const sal_uInt8* buffer, sal_uInt32 bufferLen, bool copyData); /// Copy constructcor - inline RegistryTypeReader(const RegistryTypeReader& toCopy); + RegistryTypeReader(const RegistryTypeReader& toCopy); /// Destructor. The Destructor frees the data block if the copyData flag was TRUE. - inline ~RegistryTypeReader(); + ~RegistryTypeReader(); /// Assign operator - inline RegistryTypeReader& operator == (const RegistryTypeReader& toAssign); + RegistryTypeReader& operator == (const RegistryTypeReader& toAssign); /** returns the typeclass of the type represented by this blob. @@ -106,158 +66,59 @@ public: This function will always return the type class without the internal RT_TYPE_PUBLISHED flag set. */ - inline RTTypeClass getTypeClass() const; + RTTypeClass getTypeClass() const; /** returns the full qualified name of the type. */ - inline rtl::OUString getTypeName() const; + rtl::OUString getTypeName() const; /** returns the full qualified name of the supertype. */ - inline rtl::OUString getSuperTypeName() const; + rtl::OUString getSuperTypeName() const; /** returns the number of fields (attributes/properties, enum values or number of constants in a module). */ - inline sal_uInt32 getFieldCount() const; + sal_uInt32 getFieldCount() const; /** returns the name of the field specified by index. */ - inline rtl::OUString getFieldName( sal_uInt16 index ) const; + rtl::OUString getFieldName( sal_uInt16 index ) const; /** returns the full qualified name of the field specified by index. */ - inline rtl::OUString getFieldType( sal_uInt16 index ) const; + rtl::OUString getFieldType( sal_uInt16 index ) const; /** returns the access mode of the field specified by index. */ - inline RTFieldAccess getFieldAccess( sal_uInt16 index ) const; + RTFieldAccess getFieldAccess( sal_uInt16 index ) const; /** returns the value of the field specified by index. This function returns the value of an enum value or of a constant. */ - inline RTConstValue getFieldConstValue( sal_uInt16 index ) const; + RTConstValue getFieldConstValue( sal_uInt16 index ) const; /** returns the documentation string for the field specified by index. Each field of a type can have their own documentation. */ - inline rtl::OUString getFieldDoku( sal_uInt16 index ) const; + rtl::OUString getFieldDoku( sal_uInt16 index ) const; /** returns the IDL filename of the field specified by index. The IDL filename of a field can differ from the filename of the ype itself because modules and also constants can be defined in different IDL files. */ - inline rtl::OUString getFieldFileName( sal_uInt16 index ) const; + rtl::OUString getFieldFileName( sal_uInt16 index ) const; protected: - /// stores the registry type reader Api. - const RegistryTypeReader_Api* m_pApi; /// stores the handle of an implementation class TypeReaderImpl m_hImpl; }; - - -inline RegistryTypeReader::RegistryTypeReader(const sal_uInt8* buffer, - sal_uInt32 bufferLen, - bool copyData) - : m_pApi(initRegistryTypeReader_Api()) - , m_hImpl(NULL) - { - m_hImpl = m_pApi->createEntry(buffer, bufferLen, copyData); - } - - -inline RegistryTypeReader::RegistryTypeReader(const RegistryTypeReader& toCopy) - : m_pApi(toCopy.m_pApi) - , m_hImpl(toCopy.m_hImpl) - { m_pApi->acquire(m_hImpl); } - - -inline RegistryTypeReader::~RegistryTypeReader() - { m_pApi->release(m_hImpl); } - -inline RegistryTypeReader& RegistryTypeReader::operator == (const RegistryTypeReader& toAssign) -{ - if (m_hImpl != toAssign.m_hImpl) - { - m_pApi->release(m_hImpl); - m_hImpl = toAssign.m_hImpl; - m_pApi->acquire(m_hImpl); - } - - return *this; -} - - - - - - - -inline RTTypeClass RegistryTypeReader::getTypeClass() const - { return m_pApi->getTypeClass(m_hImpl); } - -inline rtl::OUString RegistryTypeReader::getTypeName() const - { - rtl::OUString sRet; - m_pApi->getTypeName(m_hImpl, &sRet.pData); - return sRet; - } - -inline rtl::OUString RegistryTypeReader::getSuperTypeName() const - { - rtl::OUString sRet; - m_pApi->getSuperTypeName(m_hImpl, &sRet.pData); - return sRet; - } - -inline sal_uInt32 RegistryTypeReader::getFieldCount() const - { return m_pApi->getFieldCount(m_hImpl); } - -inline rtl::OUString RegistryTypeReader::getFieldName( sal_uInt16 index ) const - { - rtl::OUString sRet; - m_pApi->getFieldName(m_hImpl, &sRet.pData, index); - return sRet; - } - -inline rtl::OUString RegistryTypeReader::getFieldType( sal_uInt16 index ) const - { - rtl::OUString sRet; - m_pApi->getFieldType(m_hImpl, &sRet.pData, index); - return sRet; - } - -inline RTFieldAccess RegistryTypeReader::getFieldAccess( sal_uInt16 index ) const - { return m_pApi->getFieldAccess(m_hImpl, index); } - -inline RTConstValue RegistryTypeReader::getFieldConstValue( sal_uInt16 index ) const - { - RTConstValue ret; - ret.m_type = m_pApi->getFieldConstValue(m_hImpl, index, &ret.m_value); - return ret; - } - -inline rtl::OUString RegistryTypeReader::getFieldDoku( sal_uInt16 index ) const - { - rtl::OUString sRet; - m_pApi->getFieldDoku(m_hImpl, &sRet.pData, index); - return sRet; - } - -inline rtl::OUString RegistryTypeReader::getFieldFileName( sal_uInt16 index ) const - { - rtl::OUString sRet; - m_pApi->getFieldFileName(m_hImpl, &sRet.pData, index); - return sRet; - } - #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit