summaryrefslogtreecommitdiff
path: root/registry/source/reflread.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'registry/source/reflread.cxx')
-rw-r--r--registry/source/reflread.cxx105
1 files changed, 82 insertions, 23 deletions
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: */