1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_STORE_STORE_HXX
21 #define INCLUDED_STORE_STORE_HXX
23 #include <sal/types.h>
24 #include <rtl/ustring.hxx>
25 #include <store/store.h>
30 /*========================================================================
32 * OStoreStream interface.
34 *======================================================================*/
46 inline ~OStoreStream()
49 (void) store_releaseHandle (m_hImpl
);
52 /** Copy construction.
54 inline OStoreStream (OStoreStream
const & rhs
)
55 : m_hImpl (rhs
.m_hImpl
)
58 (void) store_acquireHandle (m_hImpl
);
63 inline OStoreStream
& operator= (OStoreStream
const & rhs
)
66 (void) store_acquireHandle (rhs
.m_hImpl
);
68 (void) store_releaseHandle (m_hImpl
);
69 m_hImpl
= rhs
.m_hImpl
;
73 /** Construction from Stream Handle.
75 inline explicit OStoreStream (storeStreamHandle Handle
)
79 (void) store_acquireHandle (m_hImpl
);
82 /** Conversion into Stream Handle.
84 inline operator storeStreamHandle() const
89 /** Check for a valid Stream Handle.
90 @return sal_True if valid, sal_False otherwise.
92 inline bool isValid() const
94 return (m_hImpl
!= 0);
98 @see store_openStream()
100 inline storeError
create (
101 storeFileHandle hFile
,
102 rtl::OUString
const & rPath
,
103 rtl::OUString
const & rName
,
104 storeAccessMode eMode
)
108 (void) store_releaseHandle (m_hImpl
);
111 return store_openStream (hFile
, rPath
.pData
, rName
.pData
, eMode
, &m_hImpl
);
114 /** Close the stream.
115 @see store_closeStream()
121 (void) store_closeStream (m_hImpl
);
126 /** Read from the stream.
127 @see store_readStream()
129 inline storeError
readAt (
136 return store_E_InvalidHandle
;
138 return store_readStream (m_hImpl
, nOffset
, pBuffer
, nBytes
, &rnDone
);
141 /** Write to the stream.
142 @see store_writeStream()
144 inline storeError
writeAt (
146 void const * pBuffer
,
151 return store_E_InvalidHandle
;
153 return store_writeStream (m_hImpl
, nOffset
, pBuffer
, nBytes
, &rnDone
);
156 /** Flush the stream.
157 @see store_flushStream()
159 inline storeError
flush() const
162 return store_E_InvalidHandle
;
164 return store_flushStream (m_hImpl
);
167 /** Get the stream size.
168 @see store_getStreamSize()
170 inline storeError
getSize (sal_uInt32
& rnSize
) const
173 return store_E_InvalidHandle
;
175 return store_getStreamSize (m_hImpl
, &rnSize
);
178 /** Set the stream size.
179 @see store_setStreamSize()
181 inline storeError
setSize (sal_uInt32 nSize
)
184 return store_E_InvalidHandle
;
186 return store_setStreamSize (m_hImpl
, nSize
);
192 storeStreamHandle m_hImpl
;
195 /*========================================================================
197 * OStoreDirectory interface.
199 *======================================================================*/
200 class OStoreDirectory
205 inline OStoreDirectory()
211 inline ~OStoreDirectory()
214 (void) store_releaseHandle (m_hImpl
);
217 /** Copy construction.
219 inline OStoreDirectory (OStoreDirectory
const & rhs
)
220 : m_hImpl (rhs
.m_hImpl
)
223 (void) store_acquireHandle (m_hImpl
);
228 inline OStoreDirectory
& operator= (OStoreDirectory
const & rhs
)
231 (void) store_acquireHandle (rhs
.m_hImpl
);
233 (void) store_releaseHandle (m_hImpl
);
234 m_hImpl
= rhs
.m_hImpl
;
238 /** Construction from Directory Handle.
240 inline explicit OStoreDirectory (storeDirectoryHandle Handle
)
244 (void) store_acquireHandle (m_hImpl
);
247 /** Conversion into Directory Handle.
249 inline operator storeDirectoryHandle() const
254 /** Check for a valid Directory Handle.
255 @return sal_True if valid, sal_False otherwise.
257 inline bool isValid() const
259 return (m_hImpl
!= 0);
262 /** Open the directory.
263 @see store_openDirectory()
265 inline storeError
create (
266 storeFileHandle hFile
,
267 rtl::OUString
const & rPath
,
268 rtl::OUString
const & rName
,
269 storeAccessMode eMode
)
273 (void) store_releaseHandle (m_hImpl
);
276 return store_openDirectory (hFile
, rPath
.pData
, rName
.pData
, eMode
, &m_hImpl
);
279 /** Close the directory.
280 @see store_closeDirectory()
286 (void) store_closeDirectory (m_hImpl
);
291 /** Directory iterator type.
295 typedef storeFindData iterator
;
297 /** Find first directory entry.
298 @see store_findFirst()
300 inline storeError
first (iterator
& it
)
303 return store_E_InvalidHandle
;
305 return store_findFirst (m_hImpl
, &it
);
308 /** Find next directory entry.
309 @see store_findNext()
311 inline storeError
next (iterator
& it
)
314 return store_E_InvalidHandle
;
316 return store_findNext (m_hImpl
, &it
);
322 storeDirectoryHandle m_hImpl
;
325 /*========================================================================
327 * OStoreFile interface.
329 *======================================================================*/
344 (void) store_releaseHandle (m_hImpl
);
347 /** Copy construction.
349 inline OStoreFile (OStoreFile
const & rhs
)
350 : m_hImpl (rhs
.m_hImpl
)
353 (void) store_acquireHandle (m_hImpl
);
358 inline OStoreFile
& operator= (OStoreFile
const & rhs
)
361 (void) store_acquireHandle (rhs
.m_hImpl
);
363 (void) store_releaseHandle (m_hImpl
);
364 m_hImpl
= rhs
.m_hImpl
;
368 /** Construction from File Handle.
370 inline explicit OStoreFile (storeFileHandle Handle
)
374 (void) store_acquireHandle (m_hImpl
);
377 /** Conversion into File Handle.
379 inline operator storeFileHandle() const
384 /** Check for a valid File Handle.
385 @return sal_True if valid, sal_False otherwise.
387 inline bool isValid() const
389 return (m_hImpl
!= 0);
393 @see store_openFile()
395 inline storeError
create (
396 rtl::OUString
const & rFilename
,
397 storeAccessMode eAccessMode
,
398 sal_uInt16 nPageSize
= STORE_DEFAULT_PAGESIZE
)
402 (void) store_releaseHandle (m_hImpl
);
405 return store_openFile (rFilename
.pData
, eAccessMode
, nPageSize
, &m_hImpl
);
408 /** Open the temporary file in memory.
409 @see store_createMemoryFile()
411 inline storeError
createInMemory (
412 sal_uInt16 nPageSize
= STORE_DEFAULT_PAGESIZE
)
416 (void) store_releaseHandle (m_hImpl
);
419 return store_createMemoryFile (nPageSize
, &m_hImpl
);
423 @see store_closeFile()
429 (void) store_closeFile (m_hImpl
);
435 @see store_flushFile()
437 inline storeError
flush() const
440 return store_E_InvalidHandle
;
442 return store_flushFile (m_hImpl
);
445 /** Get the number of referers to the file.
446 @see store_getFileRefererCount()
448 inline storeError
getRefererCount (sal_uInt32
& rnRefCount
) const
451 return store_E_InvalidHandle
;
453 return store_getFileRefererCount (m_hImpl
, &rnRefCount
);
456 /** Get the file size.
457 @see store_getFileSize()
459 inline storeError
getSize (sal_uInt32
& rnSize
) const
462 return store_E_InvalidHandle
;
464 return store_getFileSize (m_hImpl
, &rnSize
);
467 /** Set attributes of a file entry.
470 inline storeError
attrib (
471 rtl::OUString
const & rPath
,
472 rtl::OUString
const & rName
,
475 sal_uInt32
& rnAttrib
)
478 return store_E_InvalidHandle
;
480 return store_attrib (m_hImpl
, rPath
.pData
, rName
.pData
, nMask1
, nMask2
, &rnAttrib
);
483 /** Set attributes of a file entry.
486 inline storeError
attrib (
487 rtl::OUString
const & rPath
,
488 rtl::OUString
const & rName
,
493 return store_E_InvalidHandle
;
495 return store_attrib (m_hImpl
, rPath
.pData
, rName
.pData
, nMask1
, nMask2
, NULL
);
498 /** Insert a file entry as 'hard link' to another file entry.
501 inline storeError
link (
502 rtl::OUString
const & rSrcPath
, rtl::OUString
const & rSrcName
,
503 rtl::OUString
const & rDstPath
, rtl::OUString
const & rDstName
)
506 return store_E_InvalidHandle
;
509 m_hImpl
, rSrcPath
.pData
, rSrcName
.pData
, rDstPath
.pData
, rDstName
.pData
);
512 /** Insert a file entry as 'symbolic link' to another file entry.
515 inline storeError
symlink (
516 rtl::OUString
const & rSrcPath
, rtl::OUString
const & rSrcName
,
517 rtl::OUString
const & rDstPath
, rtl::OUString
const & rDstName
)
520 return store_E_InvalidHandle
;
522 return store_symlink (m_hImpl
, rSrcPath
.pData
, rSrcName
.pData
, rDstPath
.pData
, rDstName
.pData
);
525 /** Rename a file entry.
528 inline storeError
rename (
529 rtl::OUString
const & rSrcPath
, rtl::OUString
const & rSrcName
,
530 rtl::OUString
const & rDstPath
, rtl::OUString
const & rDstName
)
533 return store_E_InvalidHandle
;
535 return store_rename (m_hImpl
, rSrcPath
.pData
, rSrcName
.pData
, rDstPath
.pData
, rDstName
.pData
);
538 /** Remove a file entry.
541 inline storeError
remove (
542 rtl::OUString
const & rPath
, rtl::OUString
const & rName
)
545 return store_E_InvalidHandle
;
547 return store_remove (m_hImpl
, rPath
.pData
, rName
.pData
);
553 storeFileHandle m_hImpl
;
556 /*========================================================================
560 *======================================================================*/
564 #endif /* ! INCLUDED_STORE_STORE_HXX */
569 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */