diff options
Diffstat (limited to 'store/inc/store')
-rw-r--r-- | store/inc/store/store.h | 413 | ||||
-rw-r--r-- | store/inc/store/store.hxx | 611 | ||||
-rw-r--r-- | store/inc/store/types.h | 169 |
3 files changed, 1193 insertions, 0 deletions
diff --git a/store/inc/store/store.h b/store/inc/store/store.h new file mode 100644 index 000000000000..b4d6626d9d1f --- /dev/null +++ b/store/inc/store/store.h @@ -0,0 +1,413 @@ +/* -*- 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 _STORE_STORE_H_ +#define _STORE_STORE_H_ + +#include <store/types.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** Handle opaque type. + */ +typedef void* storeHandle; + + +/** Acquire a Handle. + @param Handle [in] the Handle. + @return store_E_None upon success + */ +storeError SAL_CALL store_acquireHandle ( + storeHandle Handle +) SAL_THROW_EXTERN_C(); + + +/** Release a Handle. + @param Handle [in] the Handle. + @return store_E_None upon success, + store_E_InvalidHandle otherwise. + */ +storeError SAL_CALL store_releaseHandle ( + storeHandle Handle +) SAL_THROW_EXTERN_C(); + + + +/** File Handle opaque type. + */ +typedef void* storeFileHandle; + + +/** Open a temporary file in memory. + @param nPageSize [in] the creation page size, + integer multiple of minimum page size. + @param phFile [out] the File Handle. + @return store_E_None upon success + */ +storeError SAL_CALL store_createMemoryFile ( + sal_uInt16 nPageSize, + storeFileHandle *phFile +) SAL_THROW_EXTERN_C(); + + +/** Open a file. + @param pFilename [in] the filename as URL or system path. + @param eAccessMode [in] the access mode. + store_AccessCreate truncate existing and create, + store_AccessReadCreate create not existing, + store_AccessReadWrite write existing, + store_AccessReadOnly never modifies. + @param nPageSize [in] the creation page size, + integer multiple of minimum page size. + @param phFile [out] the File Handle. + @return store_E_None upon success + */ +storeError SAL_CALL store_openFile ( + rtl_uString *pFilename, + storeAccessMode eAccessMode, + sal_uInt16 nPageSize, + storeFileHandle *phFile +) SAL_THROW_EXTERN_C(); + + +/** Close a file. + @param hFile [in] the File Handle. + @return store_E_None upon success, + store_E_InvalidHandle otherwise. + */ +storeError SAL_CALL store_closeFile ( + storeFileHandle hFile +) SAL_THROW_EXTERN_C(); + + +/** Flush a file. + @param hFile [in] the File Handle. + @return store_E_None upon success + */ +storeError SAL_CALL store_flushFile ( + storeFileHandle hFile +) SAL_THROW_EXTERN_C(); + + +/** Get the number of referers to a file. + @param hFile [in] the File Handle. + @param pnRefCount [out] number of open directories and streams. + @return store_E_None upon success + */ +storeError SAL_CALL store_getFileRefererCount ( + storeFileHandle hFile, + sal_uInt32 *pnRefCount +) SAL_THROW_EXTERN_C(); + + +/** Get the size of a file. + @param hFile [in] the File Handle. + @param pnSize [out] the file size in bytes. + @return store_E_None upon success + */ +storeError SAL_CALL store_getFileSize ( + storeFileHandle hFile, + sal_uInt32 *pnSize +) SAL_THROW_EXTERN_C(); + + +/** Recover and Compact a file into another file. + @see store_openFile() + + @param pSrcFilename [in] opened with store_AccessReadOnly. + @param pDstFilename [in] created with store_AccessCreate. + @return store_E_None upon success + */ +storeError SAL_CALL store_rebuildFile ( + rtl_uString *pSrcFilename, + rtl_uString *pDstFilename +) SAL_THROW_EXTERN_C(); + + + +/** Directory Handle opaque type. + */ +typedef void* storeDirectoryHandle; + + +/** Open a directory. + @see store_openFile() + + @param hFile [in] the File Handle. + @param pPath [in] the directory path. + @param pName [in] the directory name. + @param eAccessMode [in] the access mode. + @param phDirectory [out] the Directory Handle. + @return store_E_None upon success + */ +storeError SAL_CALL store_openDirectory ( + storeFileHandle hFile, + rtl_uString *pPath, + rtl_uString *pName, + storeAccessMode eAccessMode, + storeDirectoryHandle *phDirectory +) SAL_THROW_EXTERN_C(); + + +/** Close a directory. + @param hDirectory [in] the Directory Handle. + @return store_E_None upon success, + store_E_InvalidHandle otherwise. + */ +storeError SAL_CALL store_closeDirectory ( + storeDirectoryHandle hDirectory +) SAL_THROW_EXTERN_C(); + + +/** Find first directory entry. + @param hDirectory [in] the Directory Handle. + @param pFindData [out] the Find Data structure. + @return store_E_None upon success, + store_E_NoMoreFile upon end of iteration. + */ +storeError SAL_CALL store_findFirst ( + storeDirectoryHandle hDirectory, + storeFindData *pFindData +) SAL_THROW_EXTERN_C(); + + +/** Find next directory entry. + @param hDirectory [in] the Directory Handle. + @param pFindData [out] the Find Data structure. + @return store_E_None upon success, + store_E_NoMoreFile upon end of iteration. + */ +storeError SAL_CALL store_findNext ( + storeDirectoryHandle hDirectory, + storeFindData *pFindData +) SAL_THROW_EXTERN_C(); + + + +/** Stream Handle opaque type. + */ +typedef void* storeStreamHandle; + + +/** Open a stream. + @see store_openFile() + + @param hFile [in] the File Handle. + @param pPath [in] the stream path. + @param pName [in] the stream name. + @param eAccessMode [in] the access mode. + @param phStrm [out] the Stream Handle. + @return store_E_None upon success + */ +storeError SAL_CALL store_openStream ( + storeFileHandle hFile, + rtl_uString *pPath, + rtl_uString *pName, + storeAccessMode eMode, + storeStreamHandle *phStrm +) SAL_THROW_EXTERN_C(); + + +/** Close a stream. + @param hStrm [in] the Stream Handle. + @return store_E_None upon success, + store_E_InvalidHandle otherwise. + */ +storeError SAL_CALL store_closeStream ( + storeStreamHandle hStrm +) SAL_THROW_EXTERN_C(); + + +/** Read from a stream. + @param hStrm [in] the Stream Handle. + @param nOffset [in] the offset of the first byte to read. + @param pBuffer [out] the buffer. + @param nBytes [in] the number of bytes to read. + @param pnDone [out] the number of bytes actually read. + @return store_E_None upon success + */ +storeError SAL_CALL store_readStream ( + storeStreamHandle hStrm, + sal_uInt32 nOffset, + void *pBuffer, + sal_uInt32 nBytes, + sal_uInt32 *pnDone +) SAL_THROW_EXTERN_C(); + + +/** Write to a stream. + @param hStrm [in] the Stream Handle. + @param nOffset [in] the offset of the first byte to write. + @param pBuffer [in] the buffer. + @param nBytes [in] the number of bytes to write. + @param pnDone [out] the number of bytes actually written. + @return store_E_None upon success + */ +storeError SAL_CALL store_writeStream ( + storeStreamHandle hStrm, + sal_uInt32 nOffset, + const void *pBuffer, + sal_uInt32 nBytes, + sal_uInt32 *pnDone +) SAL_THROW_EXTERN_C(); + + +/** Flush a stream. + @param hStrm [in] the Stream Handle. + @return store_E_None upon success + */ +storeError SAL_CALL store_flushStream ( + storeStreamHandle hStrm +) SAL_THROW_EXTERN_C(); + + +/** Get the size of a stream. + @param hStrm [in] the Stream Handle. + @param pnSize [out] the stream size in bytes. + @return store_E_None upon success + */ +storeError SAL_CALL store_getStreamSize ( + storeStreamHandle hStrm, + sal_uInt32 *pnSize +) SAL_THROW_EXTERN_C(); + + +/** Set the size of a stream. + @param hStrm [in] the Stream Handle. + @param nSize [in] the new stream size in bytes. + @return store_E_None upon success + */ +storeError SAL_CALL store_setStreamSize ( + storeStreamHandle hStrm, + sal_uInt32 nSize +) SAL_THROW_EXTERN_C(); + + + +/** Set attributes of a file entry. + @param hFile [in] the File Handle. + @param pPath [in] the entry path. + @param pName [in] the entry name. + @param nMask1 [in] the attributes to be cleared. + @param nMask2 [in] the attributes to be set. + @param pnAttrib [out] the resulting attributes, may be NULL. + @return store_E_None upon success + */ +storeError SAL_CALL store_attrib ( + storeFileHandle hFile, + rtl_uString *pPath, + rtl_uString *pName, + sal_uInt32 nMask1, + sal_uInt32 nMask2, + sal_uInt32 *pnAttrib +) SAL_THROW_EXTERN_C(); + + +/** Insert a file entry as 'hard link' to another file entry. + @precond Source must not exist, Destination must exist. + @postcond Source has attribute STORE_ATTRIB_ISLINK. + @see store_attrib() + + @param hFile [in] the File Handle + @param pSrcPath [in] the Source path + @param pSrcName [in] the Source name + @param pDstPath [in] the Destination path + @param pDstName [in] the Destination name + @return store_E_None upon success + */ +storeError SAL_CALL store_link ( + storeFileHandle hFile, + rtl_uString *pSrcPath, rtl_uString *pSrcName, + rtl_uString *pDstPath, rtl_uString *pDstName +) SAL_THROW_EXTERN_C(); + + +/** Insert a file entry as 'symbolic link' to another file entry. + @precond Source must not exist + @postcond Source has attribute STORE_ATTRIB_ISLINK. + @see store_attrib() + + @param hFile [in] the File Handle + @param pSrcPath [in] the Source path + @param pSrcName [in] the Source name + @param pDstPath [in] the Destination path + @param pDstName [in] the Destination name + @return store_E_None upon success + */ +storeError SAL_CALL store_symlink ( + storeFileHandle hFile, + rtl_uString *pSrcPath, rtl_uString *pSrcName, + rtl_uString *pDstPath, rtl_uString *pDstName +) SAL_THROW_EXTERN_C(); + + +/** Rename a file entry. + @param hFile [in] the File Handle + @param pSrcPath [in] the Source path + @param pSrcName [in] the Source name + @param pDstPath [in] the Destination path + @param pDstName [in] the Destination name + @return store_E_None upon success + */ +storeError SAL_CALL store_rename ( + storeFileHandle hFile, + rtl_uString *pSrcPath, rtl_uString *pSrcName, + rtl_uString *pDstPath, rtl_uString *pDstName +) SAL_THROW_EXTERN_C(); + + +/** Remove a file entry. + @param hFile [in] the File Handle + @param pPath [in] the entry path + @param pName [in] the entry name + @return store_E_None upon success + */ +storeError SAL_CALL store_remove ( + storeFileHandle hFile, + rtl_uString *pPath, + rtl_uString *pName +) SAL_THROW_EXTERN_C(); + +/*======================================================================== + * + * The End. + * + *======================================================================*/ + +#ifdef __cplusplus +} +#endif + +#endif /* _STORE_STORE_H_ */ + + + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/store/inc/store/store.hxx b/store/inc/store/store.hxx new file mode 100644 index 000000000000..e4970845d38b --- /dev/null +++ b/store/inc/store/store.hxx @@ -0,0 +1,611 @@ +/* -*- 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 _STORE_STORE_HXX_ +#define _STORE_STORE_HXX_ + +#include "sal/types.h" +#include "rtl/ustring.hxx" +#include "store/store.h" + +namespace store +{ + +/*======================================================================== + * + * OStoreStream interface. + * + *======================================================================*/ +class OStoreStream +{ +public: + /** Construction. + */ + inline OStoreStream (void) SAL_THROW(()) + : m_hImpl (0) + {} + + /** Destruction. + */ + inline ~OStoreStream (void) SAL_THROW(()) + { + if (m_hImpl) + (void) store_releaseHandle (m_hImpl); + } + + /** Copy construction. + */ + inline OStoreStream (OStoreStream const & rhs) SAL_THROW(()) + : m_hImpl (rhs.m_hImpl) + { + if (m_hImpl) + (void) store_acquireHandle (m_hImpl); + } + + /** Assignment. + */ + inline OStoreStream & operator= (OStoreStream const & rhs) SAL_THROW(()) + { + if (rhs.m_hImpl) + (void) store_acquireHandle (rhs.m_hImpl); + if (m_hImpl) + (void) store_releaseHandle (m_hImpl); + m_hImpl = rhs.m_hImpl; + return *this; + } + + /** Construction from Stream Handle. + */ + inline explicit OStoreStream (storeStreamHandle Handle) SAL_THROW(()) + : m_hImpl (Handle) + { + if (m_hImpl) + (void) store_acquireHandle (m_hImpl); + } + + /** Conversion into Stream Handle. + */ + inline operator storeStreamHandle (void) const SAL_THROW(()) + { + return m_hImpl; + } + + /** Check for a valid Stream Handle. + @return sal_True if valid, sal_False otherwise. + */ + inline bool isValid (void) const SAL_THROW(()) + { + return (m_hImpl != 0); + } + + /** Open the stream. + @see store_openStream() + */ + inline storeError create ( + storeFileHandle hFile, + rtl::OUString const & rPath, + rtl::OUString const & rName, + storeAccessMode eMode) SAL_THROW(()) + { + if (m_hImpl) + { + (void) store_releaseHandle (m_hImpl); + m_hImpl = 0; + } + return store_openStream (hFile, rPath.pData, rName.pData, eMode, &m_hImpl); + } + + /** Close the stream. + @see store_closeStream() + */ + inline void close (void) SAL_THROW(()) + { + if (m_hImpl) + { + (void) store_closeStream (m_hImpl); + m_hImpl = 0; + } + } + + /** Read from the stream. + @see store_readStream() + */ + inline storeError readAt ( + sal_uInt32 nOffset, + void * pBuffer, + sal_uInt32 nBytes, + sal_uInt32 & rnDone) SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_readStream (m_hImpl, nOffset, pBuffer, nBytes, &rnDone); + } + + /** Write to the stream. + @see store_writeStream() + */ + inline storeError writeAt ( + sal_uInt32 nOffset, + void const * pBuffer, + sal_uInt32 nBytes, + sal_uInt32 & rnDone) SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_writeStream (m_hImpl, nOffset, pBuffer, nBytes, &rnDone); + } + + /** Flush the stream. + @see store_flushStream() + */ + inline storeError flush (void) const SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_flushStream (m_hImpl); + } + + /** Get the stream size. + @see store_getStreamSize() + */ + inline storeError getSize (sal_uInt32 & rnSize) const SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_getStreamSize (m_hImpl, &rnSize); + } + + /** Set the stream size. + @see store_setStreamSize() + */ + inline storeError setSize (sal_uInt32 nSize) SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_setStreamSize (m_hImpl, nSize); + } + +private: + /** Representation. + */ + storeStreamHandle m_hImpl; +}; + +/*======================================================================== + * + * OStoreDirectory interface. + * + *======================================================================*/ +class OStoreDirectory +{ +public: + /** Construction. + */ + inline OStoreDirectory (void) SAL_THROW(()) + : m_hImpl (0) + {} + + /** Destruction. + */ + inline ~OStoreDirectory (void) SAL_THROW(()) + { + if (m_hImpl) + (void) store_releaseHandle (m_hImpl); + } + + /** Copy construction. + */ + inline OStoreDirectory (OStoreDirectory const & rhs) SAL_THROW(()) + : m_hImpl (rhs.m_hImpl) + { + if (m_hImpl) + (void) store_acquireHandle (m_hImpl); + } + + /** Assignment. + */ + inline OStoreDirectory & operator= (OStoreDirectory const & rhs) SAL_THROW(()) + { + if (rhs.m_hImpl) + (void) store_acquireHandle (rhs.m_hImpl); + if (m_hImpl) + (void) store_releaseHandle (m_hImpl); + m_hImpl = rhs.m_hImpl; + return *this; + } + + /** Construction from Directory Handle. + */ + inline explicit OStoreDirectory (storeDirectoryHandle Handle) SAL_THROW(()) + : m_hImpl (Handle) + { + if (m_hImpl) + (void) store_acquireHandle (m_hImpl); + } + + /** Conversion into Directory Handle. + */ + inline operator storeDirectoryHandle(void) const SAL_THROW(()) + { + return m_hImpl; + } + + /** Check for a valid Directory Handle. + @return sal_True if valid, sal_False otherwise. + */ + inline bool isValid (void) const SAL_THROW(()) + { + return (m_hImpl != 0); + } + + /** Open the directory. + @see store_openDirectory() + */ + inline storeError create ( + storeFileHandle hFile, + rtl::OUString const & rPath, + rtl::OUString const & rName, + storeAccessMode eMode) SAL_THROW(()) + { + if (m_hImpl) + { + (void) store_releaseHandle (m_hImpl); + m_hImpl = 0; + } + return store_openDirectory (hFile, rPath.pData, rName.pData, eMode, &m_hImpl); + } + + /** Close the directory. + @see store_closeDirectory() + */ + inline void close (void) SAL_THROW(()) + { + if (m_hImpl) + { + (void) store_closeDirectory (m_hImpl); + m_hImpl = 0; + } + } + + /** Directory iterator type. + @see first() + @see next() + */ + typedef storeFindData iterator; + + /** Find first directory entry. + @see store_findFirst() + */ + inline storeError first (iterator& it) SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_findFirst (m_hImpl, &it); + } + + /** Find next directory entry. + @see store_findNext() + */ + inline storeError next (iterator& it) SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_findNext (m_hImpl, &it); + } + + /** Directory traversal helper. + @see travel() + */ + class traveller + { + public: + /** Directory traversal callback. + @param it [in] current directory entry. + @return sal_True to continue iteration, sal_False to stop. + */ + virtual sal_Bool visit (const iterator& it) = 0; + }; + + /** Directory traversal. + @see store_findFirst() + @see store_findNext() + + @param rTraveller [in] the traversal callback. + @return store_E_NoMoreFiles upon end of iteration. + */ + inline storeError travel (traveller & rTraveller) const + { + storeError eErrCode = store_E_InvalidHandle; + if (m_hImpl) + { + iterator it; + eErrCode = store_findFirst (m_hImpl, &it); + while ((eErrCode == store_E_None) && rTraveller.visit(it)) + eErrCode = store_findNext (m_hImpl, &it); + } + return eErrCode; + } + +private: + /** Representation. + */ + storeDirectoryHandle m_hImpl; +}; + +/*======================================================================== + * + * OStoreFile interface. + * + *======================================================================*/ +class OStoreFile +{ +public: + /** Construction. + */ + inline OStoreFile (void) SAL_THROW(()) + : m_hImpl (0) + {} + + /** Destruction. + */ + inline ~OStoreFile (void) SAL_THROW(()) + { + if (m_hImpl) + (void) store_releaseHandle (m_hImpl); + } + + /** Copy construction. + */ + inline OStoreFile (OStoreFile const & rhs) SAL_THROW(()) + : m_hImpl (rhs.m_hImpl) + { + if (m_hImpl) + (void) store_acquireHandle (m_hImpl); + } + + /** Assignment. + */ + inline OStoreFile & operator= (OStoreFile const & rhs) SAL_THROW(()) + { + if (rhs.m_hImpl) + (void) store_acquireHandle (rhs.m_hImpl); + if (m_hImpl) + (void) store_releaseHandle (m_hImpl); + m_hImpl = rhs.m_hImpl; + return *this; + } + + /** Construction from File Handle. + */ + inline explicit OStoreFile (storeFileHandle Handle) SAL_THROW(()) + : m_hImpl (Handle) + { + if (m_hImpl) + (void) store_acquireHandle (m_hImpl); + } + + /** Conversion into File Handle. + */ + inline operator storeFileHandle (void) const SAL_THROW(()) + { + return m_hImpl; + } + + /** Check for a valid File Handle. + @return sal_True if valid, sal_False otherwise. + */ + inline bool isValid (void) const SAL_THROW(()) + { + return (m_hImpl != 0); + } + + /** Open the file. + @see store_openFile() + */ + inline storeError create ( + rtl::OUString const & rFilename, + storeAccessMode eAccessMode, + sal_uInt16 nPageSize = STORE_DEFAULT_PAGESIZE) SAL_THROW(()) + { + if (m_hImpl) + { + (void) store_releaseHandle (m_hImpl); + m_hImpl = 0; + } + return store_openFile (rFilename.pData, eAccessMode, nPageSize, &m_hImpl); + } + + /** Open the temporary file in memory. + @see store_createMemoryFile() + */ + inline storeError createInMemory ( + sal_uInt16 nPageSize = STORE_DEFAULT_PAGESIZE) SAL_THROW(()) + { + if (m_hImpl) + { + (void) store_releaseHandle (m_hImpl); + m_hImpl = 0; + } + return store_createMemoryFile (nPageSize, &m_hImpl); + } + + /** Close the file. + @see store_closeFile() + */ + inline void close (void) SAL_THROW(()) + { + if (m_hImpl) + { + (void) store_closeFile (m_hImpl); + m_hImpl = 0; + } + } + + /** Flush the file. + @see store_flushFile() + */ + inline storeError flush (void) const SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_flushFile (m_hImpl); + } + + /** Get the number of referers to the file. + @see store_getFileRefererCount() + */ + inline storeError getRefererCount (sal_uInt32 & rnRefCount) const SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_getFileRefererCount (m_hImpl, &rnRefCount); + } + + /** Get the file size. + @see store_getFileSize() + */ + inline storeError getSize (sal_uInt32 & rnSize) const SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_getFileSize (m_hImpl, &rnSize); + } + + /** Set attributes of a file entry. + @see store_attrib() + */ + inline storeError attrib ( + rtl::OUString const & rPath, + rtl::OUString const & rName, + sal_uInt32 nMask1, + sal_uInt32 nMask2, + sal_uInt32 & rnAttrib) SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_attrib (m_hImpl, rPath.pData, rName.pData, nMask1, nMask2, &rnAttrib); + } + + /** Set attributes of a file entry. + @see store_attrib() + */ + inline storeError attrib ( + rtl::OUString const & rPath, + rtl::OUString const & rName, + sal_uInt32 nMask1, + sal_uInt32 nMask2) SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_attrib (m_hImpl, rPath.pData, rName.pData, nMask1, nMask2, NULL); + } + + /** Insert a file entry as 'hard link' to another file entry. + @see store_link() + */ + inline storeError link ( + rtl::OUString const & rSrcPath, rtl::OUString const & rSrcName, + rtl::OUString const & rDstPath, rtl::OUString const & rDstName) SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_link ( + m_hImpl, rSrcPath.pData, rSrcName.pData, rDstPath.pData, rDstName.pData); + } + + /** Insert a file entry as 'symbolic link' to another file entry. + @see store_symlink() + */ + inline storeError symlink ( + rtl::OUString const & rSrcPath, rtl::OUString const & rSrcName, + rtl::OUString const & rDstPath, rtl::OUString const & rDstName) SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_symlink (m_hImpl, rSrcPath.pData, rSrcName.pData, rDstPath.pData, rDstName.pData); + } + + /** Rename a file entry. + @see store_rename() + */ + inline storeError rename ( + rtl::OUString const & rSrcPath, rtl::OUString const & rSrcName, + rtl::OUString const & rDstPath, rtl::OUString const & rDstName) SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_rename (m_hImpl, rSrcPath.pData, rSrcName.pData, rDstPath.pData, rDstName.pData); + } + + /** Remove a file entry. + @see store_remove() + */ + inline storeError remove ( + rtl::OUString const & rPath, rtl::OUString const & rName) SAL_THROW(()) + { + if (!m_hImpl) + return store_E_InvalidHandle; + + return store_remove (m_hImpl, rPath.pData, rName.pData); + } + +private: + /** Representation. + */ + storeFileHandle m_hImpl; +}; + +/*======================================================================== + * + * The End. + * + *======================================================================*/ + +} // namespace store + +#endif /* !_STORE_STORE_HXX_ */ + + + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/store/inc/store/types.h b/store/inc/store/types.h new file mode 100644 index 000000000000..272900f11c77 --- /dev/null +++ b/store/inc/store/types.h @@ -0,0 +1,169 @@ +/* -*- 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 _STORE_TYPES_H_ +#define _STORE_TYPES_H_ + +#include <sal/types.h> +#include <rtl/ustring.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** PageSize (recommended) default. + @see store_openFile() + */ +#define STORE_DEFAULT_PAGESIZE ((sal_uInt16)0x0400) + + +/** PageSize (enforced) limits. + @see store_openFile() + */ +#define STORE_MINIMUM_PAGESIZE ((sal_uInt16)0x0200) +#define STORE_MAXIMUM_PAGESIZE ((sal_uInt16)0x8000) + + +/** NameSize (enforced) limit. + @see any param pName + @see store_E_NameTooLong + */ +#define STORE_MAXIMUM_NAMESIZE 256 + + +/** Attributes (predefined). + @see store_attrib() + */ +#define STORE_ATTRIB_ISLINK ((sal_uInt32)0x10000000) +#define STORE_ATTRIB_ISDIR ((sal_uInt32)0x20000000) +#define STORE_ATTRIB_ISFILE ((sal_uInt32)0x40000000) + + +/** Access Mode enumeration. + @see store_openFile() + @see store_openDirectory() + @see store_openStream() + */ +enum __store_AccessMode +{ + store_AccessCreate, + store_AccessReadCreate, + store_AccessReadWrite, + store_AccessReadOnly, + store_Access_FORCE_EQUAL_SIZE = SAL_MAX_ENUM +}; + +/** Access Mode type. + */ +typedef enum __store_AccessMode storeAccessMode; + + +/** Error Code enumeration. + */ +enum __store_Error +{ + store_E_None = 0, + store_E_AccessViolation, + store_E_LockingViolation, + store_E_CantSeek, + store_E_CantRead, + store_E_CantWrite, + store_E_InvalidAccess, + store_E_InvalidHandle, + store_E_InvalidParameter, + store_E_InvalidChecksum, + store_E_AlreadyExists, + store_E_NotExists, + store_E_NotDirectory, + store_E_NotFile, + store_E_NoMoreFiles, + store_E_NameTooLong, + store_E_OutOfMemory, + store_E_OutOfSpace, + store_E_Pending, + store_E_WrongFormat, + store_E_WrongVersion, + store_E_Unknown, + store_E_FORCE_EQUAL_SIZE = SAL_MAX_ENUM +}; + +/** Error Code type. + */ +typedef enum __store_Error storeError; + + +/** Find Data structure. + @see store_findFirst() + @see store_findNext() + */ +struct __store_FindData +{ + /** Name. + @see m_nLength + */ + sal_Unicode m_pszName[STORE_MAXIMUM_NAMESIZE]; + + /** Name Length. + @see m_pszName + */ + sal_Int32 m_nLength; + + /** Attributes. + @see store_attrib() + */ + sal_uInt32 m_nAttrib; + + /** Size. + @see store_getStreamSize() + @see store_setStreamSize() + */ + sal_uInt32 m_nSize; + + /** Reserved for internal use. + */ + sal_uInt32 m_nReserved; +}; + +/** Find Data type. + */ +typedef struct __store_FindData storeFindData; + + +/*======================================================================== + * + * The End. + * + *======================================================================*/ + +#ifdef __cplusplus +} +#endif + +#endif /* _STORE_TYPES_H_ */ + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |