diff options
Diffstat (limited to 'src/translators/pilotdb/libpalm/Database.h')
-rw-r--r-- | src/translators/pilotdb/libpalm/Database.h | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/src/translators/pilotdb/libpalm/Database.h b/src/translators/pilotdb/libpalm/Database.h new file mode 100644 index 0000000..bcde8c0 --- /dev/null +++ b/src/translators/pilotdb/libpalm/Database.h @@ -0,0 +1,181 @@ +/* + * palm-db-tools: General interface to a PalmOS database. + * Copyright (C) 2000 by Tom Dyas ([email protected]) + * + * This header defines an abstract interface to PalmOS + * databases. Subclasses would include the class that reads/writes PDB + * files and possibly databases that can be accessed over the HotSync + * protocols. + */ + +#ifndef __PALMLIB_DATABASE_H__ +#define __PALMLIB_DATABASE_H__ + +#include <string> + +#include "palmtypes.h" +#include "Block.h" +#include "Record.h" +#include "Resource.h" + +namespace PalmLib { + + class Database { + public: + // Constants for bits in the flags field of a PalmOS database. +#ifdef __GNUG__ + static const pi_uint16_t FLAG_HDR_RESOURCE = 0x0001; + static const pi_uint16_t FLAG_HDR_READ_ONLY = 0x0002; + static const pi_uint16_t FLAG_HDR_APPINFO_DIRTY = 0x0004; + static const pi_uint16_t FLAG_HDR_BACKUP = 0x0008; + static const pi_uint16_t FLAG_HDR_OK_TO_INSTALL_NEWER = 0x0010; + static const pi_uint16_t FLAG_HDR_RESET_AFTER_INSTALL = 0x0020; + static const pi_uint16_t FLAG_HDR_COPY_PREVENTION = 0x0040; + static const pi_uint16_t FLAG_HDR_STREAM = 0x0080; + static const pi_uint16_t FLAG_HDR_HIDDEN = 0x0100; + static const pi_uint16_t FLAG_HDR_LAUNCHABLE_DATA = 0x0200; + static const pi_uint16_t FLAG_HDR_OPEN = 0x8000; +#else + static const pi_uint16_t FLAG_HDR_RESOURCE; + static const pi_uint16_t FLAG_HDR_READ_ONLY; + static const pi_uint16_t FLAG_HDR_APPINFO_DIRTY; + static const pi_uint16_t FLAG_HDR_BACKUP; + static const pi_uint16_t FLAG_HDR_OK_TO_INSTALL_NEWER; + static const pi_uint16_t FLAG_HDR_RESET_AFTER_INSTALL; + static const pi_uint16_t FLAG_HDR_COPY_PREVENTION; + static const pi_uint16_t FLAG_HDR_STREAM; + static const pi_uint16_t FLAG_HDR_HIDDEN; + static const pi_uint16_t FLAG_HDR_LAUNCHABLE_DATA; + static const pi_uint16_t FLAG_HDR_OPEN; +#endif + + Database(bool resourceDB = false); + virtual ~Database() { } + + bool isResourceDB() const {return (m_flags & FLAG_HDR_RESOURCE) != 0;} + + virtual pi_uint32_t type() const { return m_type; } + virtual void type(pi_uint32_t new_type) { m_type = new_type; } + + virtual pi_uint32_t creator() const { return m_creator; } + virtual void creator(pi_uint32_t new_creator) + { m_creator = new_creator; } + + virtual pi_uint16_t version() const { return m_version; } + virtual void version(pi_uint16_t v) { m_version = v; } + + virtual pi_int32_t creation_time() const { return m_time_created; } + virtual void creation_time(pi_int32_t ct) { m_time_created = ct; } + + virtual pi_uint32_t modification_time() const + { return m_time_modified; } + virtual void modification_time(pi_uint32_t mt) + { m_time_modified = mt; } + + virtual pi_uint32_t backup_time() const { return m_time_backup; } + virtual void backup_time(pi_uint32_t bt) { m_time_backup = bt; } + + virtual pi_uint32_t modnum() const { return m_modification; } + virtual void modnum(pi_uint32_t new_modnum) + { m_modification = new_modnum; } + + virtual pi_uint32_t unique_id_seed() const + { return m_unique_id_seed; } + virtual void unique_id_seed(pi_uint32_t uid_seed) + { m_unique_id_seed = uid_seed; } + + virtual pi_uint16_t flags() const { return m_flags; } + virtual void flags(pi_uint16_t flags) + { m_flags = flags & ~(FLAG_HDR_RESOURCE | FLAG_HDR_OPEN); } + + virtual std::string name() const { return m_name; } + virtual void name(const std::string& new_name) { m_name = new_name; } + + virtual bool backup() const + { return (m_flags & FLAG_HDR_BACKUP) != 0; } + virtual void backup(bool state) { + if (state) + m_flags |= FLAG_HDR_BACKUP; + else + m_flags &= ~(FLAG_HDR_BACKUP); + } + + virtual bool readonly() const + { return (m_flags & FLAG_HDR_READ_ONLY) != 0; } + virtual void readonly(bool state) { + if (state) + m_flags |= FLAG_HDR_READ_ONLY; + else + m_flags &= ~(FLAG_HDR_READ_ONLY); + } + + virtual bool copy_prevention() const + { return (m_flags & FLAG_HDR_COPY_PREVENTION) != 0; } + virtual void copy_prevention(bool state) { + if (state) + m_flags |= FLAG_HDR_COPY_PREVENTION; + else + m_flags &= ~(FLAG_HDR_COPY_PREVENTION); + } + + // Return the total number of records/resources in this + // database. + virtual unsigned getNumRecords() const = 0; + + // Return the database's application info block as a Block + // object. + virtual Block getAppInfoBlock() const { return Block(); } + + // Set the database's app info block to the contents of the + // passed Block object. + virtual void setAppInfoBlock(const Block &) { } + + // Return the database's sort info block as a Block object. + virtual Block getSortInfoBlock() const { return Block(); } + + // Set the database's sort info block to the contents of the + // passed Block object. + virtual void setSortInfoBlock(const Block &) { } + + // Return the record identified by the given index. The caller + // owns the returned RawRecord object. + virtual Record getRecord(unsigned index) const = 0; + + // Set the record identified by the given index to the given + // record. + virtual void setRecord(unsigned index, const Record& rec) = 0; + + // Append the given record to the database. + virtual void appendRecord(const Record& rec) = 0; + + // returned if the specified (type, ID) combination is not + // present in the database. The caller owns the returned + // RawRecord object. + virtual Resource getResourceByType(pi_uint32_t type, + pi_uint32_t id) const = 0; + + // Return the resource present at the given index. NULL is + // returned if the index is invalid. The caller owns the + // returned RawRecord object. + virtual Resource getResourceByIndex(unsigned index) const = 0; + + // Set the resouce at given index to passed Resource object. + virtual void setResource(unsigned index, const Resource& rsrc) = 0; + + private: + std::string m_name; + pi_uint16_t m_flags; + pi_uint16_t m_version; + pi_uint32_t m_time_created; + pi_uint32_t m_time_modified; + pi_uint32_t m_time_backup; + pi_uint32_t m_modification; + pi_uint32_t m_type; + pi_uint32_t m_creator; + pi_uint32_t m_unique_id_seed; + + }; + +} // namespace PalmLib + +#endif |