Blame include/StorageManager.h

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 */