|
Packit |
8a864e |
// Copyright (c) 1994, 1995 James Clark
|
|
Packit |
8a864e |
// See the file COPYING for copying permission.
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
#ifndef StorageManager_INCLUDED
|
|
Packit |
8a864e |
#define StorageManager_INCLUDED 1
|
|
Packit |
8a864e |
#ifdef __GNUG__
|
|
Packit |
8a864e |
#pragma interface
|
|
Packit |
8a864e |
#endif
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
#include "StringC.h"
|
|
Packit |
8a864e |
#include "types.h"
|
|
Packit |
8a864e |
#include "CharsetInfo.h"
|
|
Packit |
8a864e |
#include <stddef.h>
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
#ifdef SP_NAMESPACE
|
|
Packit |
8a864e |
namespace SP_NAMESPACE {
|
|
Packit |
8a864e |
#endif
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
class StorageManager;
|
|
Packit |
8a864e |
class CharsetInfo;
|
|
Packit |
8a864e |
class Messenger;
|
|
Packit |
8a864e |
class InputCodingSystem;
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
class SP_API StorageObject {
|
|
Packit |
8a864e |
public:
|
|
Packit |
8a864e |
StorageObject();
|
|
Packit |
8a864e |
virtual ~StorageObject();
|
|
Packit |
8a864e |
virtual Boolean read(char *buf, size_t bufSize, Messenger &,
|
|
Packit |
8a864e |
size_t &nread) = 0;
|
|
Packit |
8a864e |
virtual Boolean rewind(Messenger &) = 0;
|
|
Packit |
8a864e |
virtual void willNotRewind();
|
|
Packit |
8a864e |
virtual size_t getBlockSize() const;
|
|
Packit |
8a864e |
private:
|
|
Packit |
8a864e |
StorageObject(const StorageObject &); // undefined
|
|
Packit |
8a864e |
void operator=(const StorageObject &); // undefined
|
|
Packit |
8a864e |
};
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
class SP_API StorageManager {
|
|
Packit |
8a864e |
public:
|
|
Packit |
8a864e |
StorageManager();
|
|
Packit |
8a864e |
virtual StorageObject *makeStorageObject(const StringC &specId,
|
|
Packit |
8a864e |
const StringC &baseId,
|
|
Packit |
8a864e |
Boolean search,
|
|
Packit |
8a864e |
Boolean mayRewind,
|
|
Packit |
8a864e |
Messenger &mgr,
|
|
Packit |
8a864e |
StringC &actualId) = 0;
|
|
Packit |
8a864e |
virtual const char *type() const = 0;
|
|
Packit |
8a864e |
virtual Boolean inheritable() const;
|
|
Packit |
8a864e |
virtual Boolean transformNeutral(StringC &, Boolean fold, Messenger &) const;
|
|
Packit |
8a864e |
// Resolve a possibly relative ID by examining the base and specified IDs.
|
|
Packit |
8a864e |
// Put the resolved ID in specID.
|
|
Packit |
8a864e |
// Return 0 if it cannot be resolved yet becase the specified ID is relative
|
|
Packit |
8a864e |
// and physical searching is required to resolve it and search is true;
|
|
Packit |
8a864e |
// in this case the base will be passed to makeStorageObject.
|
|
Packit |
8a864e |
// Otherwise return 1; in this case the base will be discarded, and the
|
|
Packit |
8a864e |
// resolved ID will be passed to makeStorageObject.
|
|
Packit |
8a864e |
virtual Boolean resolveRelative(const StringC &base,
|
|
Packit |
8a864e |
StringC &specId,
|
|
Packit |
8a864e |
Boolean search) const;
|
|
Packit |
8a864e |
virtual Boolean guessIsId(const StringC &, const CharsetInfo &) const;
|
|
Packit |
8a864e |
virtual const InputCodingSystem *requiredCodingSystem() const;
|
|
Packit |
8a864e |
virtual Boolean requiresCr() const;
|
|
Packit |
8a864e |
virtual ~StorageManager();
|
|
Packit |
8a864e |
virtual const CharsetInfo *idCharset() const;
|
|
Packit |
8a864e |
virtual const StringC *reString() const;
|
|
Packit |
8a864e |
private:
|
|
Packit |
8a864e |
StorageManager(const StorageManager &); // undefined
|
|
Packit |
8a864e |
void operator=(const StorageManager &); // undefined
|
|
Packit |
8a864e |
};
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
class SP_API IdStorageManager : public StorageManager {
|
|
Packit |
8a864e |
public:
|
|
Packit |
8a864e |
IdStorageManager(const CharsetInfo *idCharset);
|
|
Packit |
8a864e |
const CharsetInfo *idCharset() const;
|
|
Packit |
8a864e |
const StringC *reString() const;
|
|
Packit |
8a864e |
protected:
|
|
Packit |
8a864e |
StringC reString_;
|
|
Packit |
8a864e |
private:
|
|
Packit |
8a864e |
IdStorageManager(const IdStorageManager &); // undefined
|
|
Packit |
8a864e |
void operator=(const IdStorageManager &); // undefined
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
const CharsetInfo *idCharset_;
|
|
Packit |
8a864e |
};
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
#ifdef SP_NAMESPACE
|
|
Packit |
8a864e |
}
|
|
Packit |
8a864e |
#endif
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
#endif /* not StorageManager_INCLUDED */
|