[kde-doc-english] [tellico/frameworks] /: Remove PilotDB exporter. Who uses a Pilot now?
Robby Stephenson
robby at periapsis.org
Sun Mar 15 19:24:53 UTC 2015
Git commit e6f0843b7d638db2809f84ed0f157f762051761b by Robby Stephenson.
Committed on 15/03/2015 at 19:24.
Pushed by rstephenson into branch 'frameworks'.
Remove PilotDB exporter. Who uses a Pilot now?
M +4 -0 ChangeLog
M +1 -2 doc/advanced.docbook
D +- -- doc/export-pdb.png
M +0 -23 doc/hacking.docbook
M +0 -17 doc/importing-exporting.docbook
M +2 -8 src/3rdparty/CMakeLists.txt
D +0 -17 src/3rdparty/pilotdb/CMakeLists.txt
D +0 -9 src/3rdparty/pilotdb/libflatfile/CMakeLists.txt
D +0 -1425 src/3rdparty/pilotdb/libflatfile/DB.cpp
D +0 -166 src/3rdparty/pilotdb/libflatfile/DB.h
D +0 -324 src/3rdparty/pilotdb/libflatfile/Database.cpp
D +0 -320 src/3rdparty/pilotdb/libflatfile/Database.h
D +0 -48 src/3rdparty/pilotdb/libflatfile/FType.h
D +0 -119 src/3rdparty/pilotdb/libflatfile/Field.h
D +0 -77 src/3rdparty/pilotdb/libflatfile/ListView.h
D +0 -19 src/3rdparty/pilotdb/libflatfile/ListViewColumn.h
D +0 -45 src/3rdparty/pilotdb/libflatfile/Record.h
D +0 -85 src/3rdparty/pilotdb/libpalm/Block.cpp
D +0 -187 src/3rdparty/pilotdb/libpalm/Block.h
D +0 -9 src/3rdparty/pilotdb/libpalm/CMakeLists.txt
D +0 -43 src/3rdparty/pilotdb/libpalm/Database.cpp
D +0 -181 src/3rdparty/pilotdb/libpalm/Database.h
D +0 -168 src/3rdparty/pilotdb/libpalm/Record.h
D +0 -85 src/3rdparty/pilotdb/libpalm/Resource.h
D +0 -117 src/3rdparty/pilotdb/libpalm/palmtypes.h
D +0 -287 src/3rdparty/pilotdb/pilotdb.cpp
D +0 -138 src/3rdparty/pilotdb/pilotdb.h
D +0 -66 src/3rdparty/pilotdb/portability.h
D +0 -590 src/3rdparty/pilotdb/strop.cpp
D +0 -153 src/3rdparty/pilotdb/strop.h
M +0 -1 src/CMakeLists.txt
M +0 -2 src/core/dbusinterface.h
M +1 -10 src/exportdialog.cpp
M +0 -3 src/mainwindow.cpp
M +1 -2 src/tellicoui.rc
M +0 -1 src/translators/CMakeLists.txt
D +0 -246 src/translators/pilotdbexporter.cpp
D +0 -66 src/translators/pilotdbexporter.h
M +1 -1 src/translators/translators.h
M +20 -20 tellico.appdata.xml
http://commits.kde.org/tellico/e6f0843b7d638db2809f84ed0f157f762051761b
diff --git a/ChangeLog b/ChangeLog
index 865add9..eb91b15 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2015-03-15 Robby Stephenson <robby at homebase.mars>
+
+ * Removed the PilotDB exporter.
+
2015-02-15 Robby Stephenson <robby at periapsis.org>
* Released Tellico 2.3.10.
diff --git a/doc/advanced.docbook b/doc/advanced.docbook
index 33e8c75..6f9460f 100644
--- a/doc/advanced.docbook
+++ b/doc/advanced.docbook
@@ -52,7 +52,6 @@ bool exportZip(QString file)
bool exportBibtex(QString file)
bool exportHTML(QString file)
bool exportCSV(QString file)
-bool exportPilotDB(QString file)
QList<int> selectedEntries()
QList<int> filteredEntries()
void openFile(QString file)
@@ -65,7 +64,7 @@ For the four import commands, the first argument is the file to import, and the
</para>
<para>
-The current open collection in &appname; may be exported to a file, in either Tellico &XML; format, Tellico ZIP format, Bibtex, &HTML;, comma-separated values (CSV), or the PilotDB format.
+The current open collection in &appname; may be exported to a file, in either Tellico &XML; format, Tellico ZIP format, Bibtex, &HTML;, or comma-separated values (CSV).
</para>
<para>A list of the entry IDs currently selected or being filtered is able to facilitate showing or updating entries in the view.</para>
diff --git a/doc/export-pdb.png b/doc/export-pdb.png
deleted file mode 100644
index 2f2bd9a..0000000
Binary files a/doc/export-pdb.png and /dev/null differ
diff --git a/doc/hacking.docbook b/doc/hacking.docbook
index 38faa1e..f7656e0 100644
--- a/doc/hacking.docbook
+++ b/doc/hacking.docbook
@@ -360,29 +360,6 @@ This setting is for the location of the lyxpipe for sending bibliographic citati
</sect3>
</sect2>
-<sect2 id="hidden-export-options-pilotdb">
-<title>[Export Options - PilotDB]</title>
-
-<para>
-These settings should be placed in the <emphasis>Export Options - PilotDB</emphasis> group.
-</para>
-
-<sect3>
-<title>Charset</title>
-
-<para>
-The encoding of the exported data within the PilotDB file may be changed with this setting. The default value is the character set for the user's locale.
-</para>
-</sect3>
-
-<sect3>
-<title>Example</title>
-<informalexample>
-<para><userinput>Charset=Windows-1250</userinput></para>
-</informalexample>
-</sect3>
-</sect2>
-
</sect1>
<sect1 id="bibtex-translation">
diff --git a/doc/importing-exporting.docbook b/doc/importing-exporting.docbook
index 26b436a..4ecc851 100644
--- a/doc/importing-exporting.docbook
+++ b/doc/importing-exporting.docbook
@@ -321,23 +321,6 @@ Comma-separated values (CSV) are a common way of importing and exporting tabular
</screenshot>
</sect2>
-<sect2 id="exporting-pilotdb">
-<title>Exporting Pilot-DB</title>
-
-<para>
-<ulink url="http://pilot-db.sourceforge.net">Pilot-DB</ulink> is a database format for &PalmOS;. Various desktop applications can read and write Pilot-DB files. Exported <literal role="extension">.pdb</literal> files can be transferred to a PDA, and used directly. At the moment, &appname; is not able to import Pilot-DB files.
-</para>
-
-<screenshot>
-<screeninfo>Pilot-DB Export Options</screeninfo>
-<mediaobject>
-<imageobject><imagedata format="PNG" fileref="export-pdb.png"/></imageobject>
-<textobject><phrase>Pilot-DB Export Options</phrase></textobject>
-</mediaobject>
-</screenshot>
-
-</sect2>
-
<sect2 id="exporting-alexandria">
<title>Exporting Alexandria</title>
diff --git a/src/3rdparty/CMakeLists.txt b/src/3rdparty/CMakeLists.txt
index 35432ed..945772f 100644
--- a/src/3rdparty/CMakeLists.txt
+++ b/src/3rdparty/CMakeLists.txt
@@ -1,15 +1,9 @@
IF( NOT BTPARSE_FOUND )
ADD_SUBDIRECTORY( btparse )
ENDIF( NOT BTPARSE_FOUND )
+
IF( NOT CSV_FOUND )
ADD_SUBDIRECTORY( libcsv )
ENDIF( NOT CSV_FOUND )
-ADD_SUBDIRECTORY( rtf2html )
-ADD_SUBDIRECTORY( pilotdb )
-#add_library(3rdparty STATIC)
-
-#TARGET_LINK_LIBRARIES(3rdparty
-# btparse
-# libcsv
-#}
+ADD_SUBDIRECTORY( rtf2html )
diff --git a/src/3rdparty/pilotdb/CMakeLists.txt b/src/3rdparty/pilotdb/CMakeLists.txt
deleted file mode 100644
index ba59d51..0000000
--- a/src/3rdparty/pilotdb/CMakeLists.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-ADD_SUBDIRECTORY( libflatfile )
-ADD_SUBDIRECTORY( libpalm )
-
-########### next target ###############
-
-SET(pilotdb_STAT_SRCS
- pilotdb.cpp
- strop.cpp
- )
-
-ADD_LIBRARY(pilotdb-tellico STATIC ${pilotdb_STAT_SRCS})
-
-TARGET_LINK_LIBRARIES(pilotdb-tellico
- libflatfile-tellico
- libpalm-tellico
- Qt5::Core
- )
diff --git a/src/3rdparty/pilotdb/libflatfile/CMakeLists.txt b/src/3rdparty/pilotdb/libflatfile/CMakeLists.txt
deleted file mode 100644
index ed90fb4..0000000
--- a/src/3rdparty/pilotdb/libflatfile/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-
-########### next target ###############
-
-SET(libflatfile_STAT_SRCS
- DB.cpp
- Database.cpp
- )
-
-ADD_LIBRARY(libflatfile-tellico STATIC ${libflatfile_STAT_SRCS})
diff --git a/src/3rdparty/pilotdb/libflatfile/DB.cpp b/src/3rdparty/pilotdb/libflatfile/DB.cpp
deleted file mode 100644
index 979dc6b..0000000
--- a/src/3rdparty/pilotdb/libflatfile/DB.cpp
+++ /dev/null
@@ -1,1425 +0,0 @@
-/*
- * palm-db-tools: Read/write DB-format databases
- * Copyright (C) 1999-2001 by Tom Dyas (tdyas at users.sourceforge.net)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifh Floor, Boston, MA 02111-1307 USA
- */
-
-#include "DB.h"
-
-#include <iostream>
-#include <vector>
-#include <string>
-#include <stdexcept>
-#include <sstream>
-#include <time.h>
-
-#include <cstring>
-
-#include "../strop.h"
-
-#define charSeperator '/'
-#define VIEWFLAG_USE_IN_EDITVIEW 0x01
-
-#define INVALID_DEFAULT 0
-#define NOW_DEFAULT 1
-#define CONSTANT_DEFAULT 2
-
-using namespace PalmLib::FlatFile;
-using namespace PalmLib;
-
-namespace {
- static const pi_uint16_t CHUNK_FIELD_NAMES = 0;
- static const pi_uint16_t CHUNK_FIELD_TYPES = 1;
- static const pi_uint16_t CHUNK_FIELD_DATA = 2;
- static const pi_uint16_t CHUNK_LISTVIEW_DEFINITION = 64;
- static const pi_uint16_t CHUNK_LISTVIEW_OPTIONS = 65;
- static const pi_uint16_t CHUNK_LFIND_OPTIONS = 128;
- static const pi_uint16_t CHUNK_ABOUT = 254;
-}
-
-template <class Map, class Key>
-static inline bool has_key(const Map& map, const Key& key)
-{
- return map.find(key) != map.end();
-}
-
-bool PalmLib::FlatFile::DB::classify(PalmLib::Database& pdb)
-{
- return (! pdb.isResourceDB())
- && (pdb.creator() == PalmLib::mktag('D','B','O','S'))
- && (pdb.type() == PalmLib::mktag('D','B','0','0'));
-}
-
-bool PalmLib::FlatFile::DB::match_name(const std::string& name)
-{
- return (name == "DB") || (name == "db");
-}
-
-void PalmLib::FlatFile::DB::extract_chunks(const PalmLib::Block& appinfo)
-{
- size_t i;
- pi_uint16_t chunk_type;
- pi_uint16_t chunk_size;
-
- if (appinfo.size() > 4) {
- // Loop through each chunk in the block while data remains.
- i = 4;
- while (i < appinfo.size()) {
- /* Stop the loop if there is not enough room for even one
- * chunk header.
- */
- if (i + 4 >= appinfo.size()) {
-// throw PalmLib::error("header is corrupt");
-// kDebug() << "header is corrupt";
- }
- // Copy the chunk type and size into the local buffer.
- chunk_type = get_short(appinfo.data() + i);
- chunk_size = get_short(appinfo.data() + i + 2);
- i += 4;
-
- // Copy the chunk into separate storage.
- Chunk chunk(appinfo.data() + i, chunk_size);
- chunk.chunk_type = chunk_type;
- m_chunks[chunk.chunk_type].push_back(chunk);
-
- /* Advance the index by the size of the chunk. */
- i += chunk.size();
- }
-
- // If everything was correct, then we should be exactly at the
- // end of the block.
- if (i != appinfo.size()) {
-// throw PalmLib::error("header is corrupt");
-// kDebug() << "header is corrupt";
- }
- } else {
-// throw PalmLib::error("header is corrupt");
-// kDebug() << "header is corrupt";
- }
-}
-
-void PalmLib::FlatFile::DB::extract_schema(unsigned numFields)
-{
- unsigned i;
-
- if (!has_key(m_chunks, CHUNK_FIELD_NAMES)
- || !has_key(m_chunks, CHUNK_FIELD_TYPES)) {
-// throw PalmLib::error("database is missing its schema");
-// kDebug() << "database is missing its schema";
- return;
- }
-
- Chunk names_chunk = m_chunks[CHUNK_FIELD_NAMES][0];
- Chunk types_chunk = m_chunks[CHUNK_FIELD_TYPES][0];
- pi_char_t* p = names_chunk.data();
- pi_char_t* q = types_chunk.data();
-
- // Ensure that the types chunk has the expected size.
- if (types_chunk.size() != numFields * sizeof(pi_uint16_t)) {
-// throw PalmLib::error("types chunk is corrupt");
-// kDebug() << "types chunk is corrupt";
- }
- // Loop for each field and extract the name and type.
- for (i = 0; i < numFields; ++i) {
- PalmLib::FlatFile::Field::FieldType type;
- int len;
-
- // Determine the length of the name string. Ensure that the
- // string does not go beyond the end of the chunk.
- pi_char_t* null_p = reinterpret_cast<pi_char_t*>
- (memchr(p, 0, names_chunk.size() - (p - names_chunk.data())));
- if (!null_p) {
-// throw PalmLib::error("names chunk is corrupt");
-// kDebug() << "names chunk is corrupt";
- }
- len = null_p - p;
-
- switch (PalmLib::get_short(q)) {
- case 0:
- type = PalmLib::FlatFile::Field::STRING;
- break;
-
- case 1:
- type = PalmLib::FlatFile::Field::BOOLEAN;
- break;
-
- case 2:
- type = PalmLib::FlatFile::Field::INTEGER;
- break;
-
- case 3:
- type = PalmLib::FlatFile::Field::DATE;
- break;
-
- case 4:
- type = PalmLib::FlatFile::Field::TIME;
- break;
-
- case 5:
- type = PalmLib::FlatFile::Field::NOTE;
- break;
-
- case 6:
- type = PalmLib::FlatFile::Field::LIST;
- break;
-
- case 7:
- type = PalmLib::FlatFile::Field::LINK;
- break;
-
- case 8:
- type = PalmLib::FlatFile::Field::FLOAT;
- break;
-
- case 9:
- type = PalmLib::FlatFile::Field::CALCULATED;
- break;
-
- case 10:
- type = PalmLib::FlatFile::Field::LINKED;
- break;
-
- default:
-// throw PalmLib::error("unknown field type");
-// kDebug() << "unknown field type";
- type = PalmLib::FlatFile::Field::STRING;
- break;
- }
-
- // Inform the superclass about this field.
- appendField(std::string((char *) p, len), type, extract_fieldsdata(i, type));
-
- // Advance to the information on the next field.
- p += len + 1;
- q += 2;
- }
-}
-
-void PalmLib::FlatFile::DB::extract_listviews()
-{
- if (!has_key(m_chunks, CHUNK_LISTVIEW_DEFINITION))
- return;
-
-/* throw PalmLib::error("no list views in database");*/
-
- const std::vector<Chunk>& chunks = m_chunks[CHUNK_LISTVIEW_DEFINITION];
-
- for (std::vector<Chunk>::const_iterator iter = chunks.begin();
- iter != chunks.end(); ++iter) {
- const Chunk& chunk = (*iter);
- PalmLib::FlatFile::ListView lv;
-
- if (chunk.size() < (2 + 2 + 32)) {
-// throw PalmLib::error("list view is corrupt");
-// kDebug() << "list view is corrupt";
- }
- pi_uint16_t flags = PalmLib::get_short(chunk.data());
- pi_uint16_t num_cols = PalmLib::get_short(chunk.data() + 2);
-
- lv.editoruse = false;
- if (flags & VIEWFLAG_USE_IN_EDITVIEW)
- lv.editoruse = true;
-
- if (chunk.size() != static_cast<unsigned> (2 + 2 + 32 + num_cols * 4)) {
-// throw PalmLib::error("list view is corrupt");
-// kDebug() << "list view is corrupt";
- }
- // Determine the length of the name string.
- const pi_char_t* null_ptr = reinterpret_cast<const pi_char_t*>
- (memchr(chunk.data() + 4, 0, 32));
- if (null_ptr)
- lv.name = std::string((char *) (chunk.data() + 4),
- null_ptr - (chunk.data() + 4));
- else
- lv.name = "Unknown";
-
- const pi_char_t* p = chunk.data() + 2 + 2 + 32;
- for (int i = 0; i < num_cols; ++i) {
- pi_uint16_t field = PalmLib::get_short(p);
- pi_uint16_t width = PalmLib::get_short(p + 2);
- p += 2 * sizeof(pi_uint16_t);
-
- if (field >= getNumOfFields()) {
-// throw PalmLib::error("list view is corrupt");
-// kDebug() << "list view is corrupt";
- }
- PalmLib::FlatFile::ListViewColumn col(field, width);
- lv.push_back(col);
- }
-
- appendListView(lv);
- }
-}
-
-std::string PalmLib::FlatFile::DB::extract_fieldsdata(pi_uint16_t field_search, PalmLib::FlatFile::Field::FieldType type)
-{
- std::ostringstream theReturn;
-
- if (!has_key(m_chunks, CHUNK_FIELD_DATA))
- return std::string(theReturn.str());
-
- std::vector<Chunk>& chunks = m_chunks[CHUNK_FIELD_DATA];
-
- pi_uint16_t field_num = 0;
- bool find = false;
- std::vector<Chunk>::const_iterator iter = chunks.begin();
- for ( ; iter != chunks.end(); ++iter) {
- const Chunk& chunk = (*iter);
-
- field_num = PalmLib::get_short(chunk.data());
-
- if (field_num == field_search) {
- find = true;
- break;
- }
- }
-
- if (find) {
- const Chunk& chunk = (*iter);
-
- switch (type) {
-
- case PalmLib::FlatFile::Field::STRING:
- theReturn << std::string((const char *)chunk.data()+2, chunk.size() - 2);
- break;
-
- case PalmLib::FlatFile::Field::BOOLEAN:
- break;
-
- case PalmLib::FlatFile::Field::INTEGER:
- theReturn << PalmLib::get_long(chunk.data() + sizeof(pi_uint16_t));
- theReturn << charSeperator;
- theReturn << PalmLib::get_short(chunk.data() + sizeof(pi_uint16_t) + sizeof(pi_uint32_t));
- break;
-
- case PalmLib::FlatFile::Field::FLOAT: {
- pi_double_t value;
- value.words.hi = PalmLib::get_long(chunk.data() + 2);
- value.words.lo = PalmLib::get_long(chunk.data() + 6);
-
- theReturn << value.number;
- }
- break;
-
- case PalmLib::FlatFile::Field::DATE:
- if (*(chunk.data() + sizeof(pi_uint16_t)) == NOW_DEFAULT)
- theReturn << "now";
- else if (*(chunk.data() + sizeof(pi_uint16_t)) == CONSTANT_DEFAULT) {
- const pi_char_t * ptr = chunk.data() + sizeof(pi_uint16_t) + 1;
- struct tm date;
- date.tm_year = PalmLib::get_short(ptr) - 1900;
- date.tm_mon = (static_cast<int> (*(ptr + 2))) - 1;
- date.tm_mday = static_cast<int> (*(ptr + 3));
-
- (void) mktime(&date);
-
- char buf[1024];
-
- // Clear out the output buffer.
- memset(buf, 0, sizeof(buf));
-
- // Convert and output the date using the format.
- strftime(buf, sizeof(buf), "%Y/%m/%d", &date);
-
- theReturn << buf;
- }
- break;
-
- case PalmLib::FlatFile::Field::TIME:
- if (*(chunk.data() + sizeof(pi_uint16_t)) == NOW_DEFAULT)
- theReturn << "now";
- else if (*(chunk.data() + sizeof(pi_uint16_t)) == CONSTANT_DEFAULT) {
- const pi_char_t * ptr = chunk.data() + sizeof(pi_uint16_t) + 1;
- struct tm t;
- const struct tm * tm_ptr;
- time_t now;
-
- time(&now);
- tm_ptr = localtime(&now);
- memcpy(&t, tm_ptr, sizeof(tm));
-
- t.tm_hour = static_cast<int> (*(ptr));
- t.tm_min = static_cast<int> (*(ptr + 1));
- t.tm_sec = 0;
-
- char buf[1024];
-
- // Clear out the output buffer.
- memset(buf, 0, sizeof(buf));
-
- // Convert and output the date using the format.
- strftime(buf, sizeof(buf), "%H:%M", &t);
-
- theReturn << buf;
- }
- break;
-
- case PalmLib::FlatFile::Field::NOTE:
- break;
-
- case PalmLib::FlatFile::Field::LIST: {
- unsigned short numItems = PalmLib::get_short(chunk.data() + sizeof(pi_uint16_t));
- int prevLength = 0;
- std::string item;
-
- if (numItems > 0) {
- for (unsigned short i = 0; i < numItems - 1; i++) {
- item = std::string((const char *)chunk.data() + 3 * sizeof(pi_uint16_t) + prevLength);
- theReturn << item << charSeperator;
- prevLength += item.length() + 1;
- }
- item = std::string((const char *)chunk.data() + 3 * sizeof(pi_uint16_t) + prevLength);
- theReturn << item;
- }
- }
- break;
-
- case PalmLib::FlatFile::Field::LINK:
- theReturn << std::string((const char *)chunk.data()+sizeof(pi_uint16_t));
-// theReturn << std::string((const char *)chunk.data()+sizeof(pi_uint16_t), chunk.size() - 2);
- theReturn << charSeperator;
- theReturn << PalmLib::get_short(chunk.data() + sizeof(pi_uint16_t) + 32 * sizeof(pi_char_t));
- break;
-
- case PalmLib::FlatFile::Field::LINKED:
- theReturn << PalmLib::get_short(chunk.data() + sizeof(pi_uint16_t));
- theReturn << charSeperator;
- theReturn << PalmLib::get_short(chunk.data() + 2 * sizeof(pi_uint16_t));
- break;
-
- case PalmLib::FlatFile::Field::CALCULATED:
- break;
-
- default:
-// kDebug() << "unknown field type";
- break;
- }
- }
- return std::string(theReturn.str());
-}
-
-void PalmLib::FlatFile::DB::extract_aboutinfo()
-{
- if (!has_key(m_chunks, CHUNK_ABOUT))
- return;
-
- Chunk chunk = m_chunks[CHUNK_ABOUT][0];
- pi_char_t* header = chunk.data();
- pi_char_t* q = chunk.data() + PalmLib::get_short(header);
-
- setAboutInformation( (char*)q);
-}
-
-void PalmLib::FlatFile::DB::parse_record(PalmLib::Record& record,
- std::vector<pi_char_t *>& ptrs,
- std::vector<size_t>& sizes)
-{
- unsigned i;
-
- // Ensure that enough space for the offset table exists.
- if (record.size() < getNumOfFields() * sizeof(pi_uint16_t)) {
-// throw PalmLib::error("record is corrupt");
-// kDebug() << "record is corrupt";
- }
- // Extract the offsets from the record. Determine field pointers.
- std::vector<pi_uint16_t> offsets(getNumOfFields());
- for (i = 0; i < getNumOfFields(); ++i) {
- offsets[i] = get_short(record.data() + i * sizeof(pi_uint16_t));
- if (offsets[i] >= record.size()) {
-// throw PalmLib::error("record is corrupt");
-// kDebug() << "record is corrupt";
- }
- ptrs.push_back(record.data() + offsets[i]);
- }
-
- // Determine the field sizes.
- for (i = 0; i < getNumOfFields() - 1; ++i) {
- sizes.push_back(offsets[i + 1] - offsets[i]);
- }
- sizes.push_back(record.size() - offsets[getNumOfFields() - 1]);
-}
-
-PalmLib::FlatFile::DB::DB(PalmLib::Database& pdb)
- : Database("db", pdb), m_flags(0)
-{
- // Split the application information block into its component chunks.
- extract_chunks(pdb.getAppInfoBlock());
-
- // Pull the header fields and schema out of the databasse.
- m_flags = get_short(pdb.getAppInfoBlock().data());
- unsigned numFields = get_short(pdb.getAppInfoBlock().data() + 2);
- extract_schema(numFields);
-
- // Extract all of the list views.
- extract_listviews();
-
- extract_aboutinfo();
-
- for (unsigned i = 0; i < pdb.getNumRecords(); ++i) {
- PalmLib::Record record = pdb.getRecord(i);
- Record rec;
-
- std::vector<pi_char_t *> ptrs;
- std::vector<size_t> sizes;
- parse_record(record, ptrs, sizes);
- for (unsigned j = 0; j < getNumOfFields(); ++j) {
- PalmLib::FlatFile::Field f;
- f.type = field_type(j);
-
- switch (field_type(j)) {
- case PalmLib::FlatFile::Field::STRING:
- f.type = PalmLib::FlatFile::Field::STRING;
- f.v_string = std::string((char *) ptrs[j], sizes[j] - 1);
- break;
-
- case PalmLib::FlatFile::Field::BOOLEAN:
- f.type = PalmLib::FlatFile::Field::BOOLEAN;
- if (*(ptrs[j]))
- f.v_boolean = true;
- else
- f.v_boolean = false;
- break;
-
- case PalmLib::FlatFile::Field::INTEGER:
- f.type = PalmLib::FlatFile::Field::INTEGER;
- f.v_integer = PalmLib::get_long(ptrs[j]);
- break;
-
- case PalmLib::FlatFile::Field::FLOAT: {
- // Place data from database in a union for conversion.
- pi_double_t value;
- value.words.hi = PalmLib::get_long(ptrs[j]);
- value.words.lo = PalmLib::get_long(ptrs[j] + 4);
-
- // Fill out the information for this field.
- f.type = PalmLib::FlatFile::Field::FLOAT;
- f.v_float = value.number;
- }
- break;
-
- case PalmLib::FlatFile::Field::DATE:
- f.type = PalmLib::FlatFile::Field::DATE;
- f.v_date.year = PalmLib::get_short(ptrs[j]);
- f.v_date.month = static_cast<int> (*(ptrs[j] + 2));
- f.v_date.day = static_cast<int> (*(ptrs[j] + 3));
- break;
-
- case PalmLib::FlatFile::Field::TIME:
- f.type = PalmLib::FlatFile::Field::TIME;
- f.v_time.hour = static_cast<int> (*(ptrs[j]));
- f.v_time.minute = static_cast<int> (*(ptrs[j] + 1));
- break;
-
- case PalmLib::FlatFile::Field::NOTE:
- f.type = PalmLib::FlatFile::Field::NOTE;
- f.v_string = std::string((char *) ptrs[j], sizes[j] - 3);
- f.v_note = std::string((char *) (record.data() + get_short(ptrs[j] + strlen(f.v_string.c_str()) + 1)));
- break;
-
- case PalmLib::FlatFile::Field::LIST:
- f.type = PalmLib::FlatFile::Field::LIST;
- if (!field(j).argument().empty()) {
- std::string data = field(j).argument();
- unsigned int k;
- std::string::size_type pos = 0;
- pi_uint16_t itemID = *ptrs[j]; // TR: a list value is stored on 1 byte
-
- for (k = 0; k < itemID; k++) {
- if ((pos = data.find(charSeperator, pos)) == std::string::npos) {
- break;
- }
- pos++;
- }
- if (pos == std::string::npos) {
- f.v_string = "N/A";
- } else {
- if (data.find(charSeperator, pos) == std::string::npos) {
- f.v_string = data.substr( pos, std::string::npos);
- } else {
- f.v_string = data.substr( pos, data.find(charSeperator, pos) - pos);
- }
- }
- }
- break;
-
- case PalmLib::FlatFile::Field::LINK:
- f.type = PalmLib::FlatFile::Field::LINK;
- f.v_integer = PalmLib::get_long(ptrs[j]);
- f.v_string = std::string((char *) (ptrs[j] + 4), sizes[j] - 5);
- break;
-
- case PalmLib::FlatFile::Field::LINKED:
- f.type = PalmLib::FlatFile::Field::LINKED;
- f.v_string = std::string((char *) ptrs[j], sizes[j] - 1);
- break;
-
- case PalmLib::FlatFile::Field::CALCULATED: {
- std::ostringstream value;
- f.type = PalmLib::FlatFile::Field::CALCULATED;
- switch (ptrs[j][0]) {
- case 1: //string
- value << std::string((char *) ptrs[j] + 1, sizes[j] - 2);
- break;
- case 2: //integer
- value << PalmLib::get_long(ptrs[j] + 1);
- break;
- case 9: //float
- {
- pi_double_t fvalue;
- fvalue.words.hi = PalmLib::get_long(ptrs[j] + 1);
- fvalue.words.lo = PalmLib::get_long(ptrs[j] + 5);
-
- value << fvalue.number;
- }
- default:
- value << "N/A";
- }
- f.v_string = value.str();
- } break;
-
- default:
-// kDebug() << "unknown field type";
- break;
- }
-
- // Append this field to the record.
- rec.appendField(f);
- }
- rec.unique_id(record.unique_id());
- // Append this record to the database.
- appendRecord(rec);
- }
-}
-
-void PalmLib::FlatFile::DB::make_record(PalmLib::Record& pdb_record,
- const Record& record) const
-{
- unsigned int i;
-
- // Determine the packed size of this record.
- size_t size = getNumOfFields() * sizeof(pi_uint16_t);
- for (i = 0; i < getNumOfFields(); i++) {
- const Field field = record.fields().at(i);
- switch (field.type) {
- case PalmLib::FlatFile::Field::STRING:
- size += field.v_string.length() + 1;
- break;
-
- case PalmLib::FlatFile::Field::NOTE:
- size += field.v_string.length() + 3;
- size += field.v_note.length() + 1;
- break;
-
- case PalmLib::FlatFile::Field::BOOLEAN:
- size += 1;
- break;
-
- case PalmLib::FlatFile::Field::INTEGER:
- size += 4;
- break;
-
- case PalmLib::FlatFile::Field::FLOAT:
- size += 8;
- break;
-
- case PalmLib::FlatFile::Field::DATE:
- size += sizeof(pi_uint16_t) + 2 * sizeof(pi_char_t);
- break;
-
- case PalmLib::FlatFile::Field::TIME:
- size += 2 * sizeof(pi_char_t);
- break;
-
- case PalmLib::FlatFile::Field::LIST:
- size += sizeof(pi_char_t);
- break;
-
- case PalmLib::FlatFile::Field::LINK:
- size += sizeof(pi_int32_t);
- size += field.v_string.length() + 1;
- break;
-
- case PalmLib::FlatFile::Field::LINKED:
- size += field.v_string.length() + 1;
- break;
-
- case PalmLib::FlatFile::Field::CALCULATED:
- size += 1;
- break;
-
- default:
-// kDebug() << "unsupported field type";
- break;
- }
- }
-
- // Allocate a block for the packed record and setup the pointers.
- pi_char_t* buf = new pi_char_t[size];
- pi_char_t* p = buf + getNumOfFields() * sizeof(pi_uint16_t);
- pi_char_t* offsets = buf;
-
- // Pack the fields into the buffer.
- for (i = 0; i < getNumOfFields(); ++i) {
- pi_char_t* noteOffsetOffset = 0;
- bool setNote = false;
- const Field fieldData = record.fields().at(i);
-
- // Mark the offset to the start of this field in the offests table.
- PalmLib::set_short(offsets, static_cast<pi_uint16_t> (p - buf));
- offsets += sizeof(pi_uint16_t);
-
- // Pack the field.
- switch (fieldData.type) {
- case PalmLib::FlatFile::Field::STRING:
- memcpy(p, fieldData.v_string.c_str(), fieldData.v_string.length() + 1);
- p += fieldData.v_string.length() + 1;
- break;
-
- case PalmLib::FlatFile::Field::NOTE:
- if (setNote)
-// kDebug() << "unsupported field type";
- memcpy(p, fieldData.v_string.c_str(), fieldData.v_string.length() + 1);
- p += fieldData.v_string.length() + 1;
- noteOffsetOffset = p;
- p += 2;
- setNote = true;
- break;
-
- case PalmLib::FlatFile::Field::BOOLEAN:
- *p++ = ((fieldData.v_boolean) ? 1 : 0);
- break;
-
- case PalmLib::FlatFile::Field::INTEGER:
- PalmLib::set_long(p, fieldData.v_integer);
- p += sizeof(pi_int32_t);
- break;
-
- case PalmLib::FlatFile::Field::FLOAT: {
- // Place data the data in a union for easy conversion.
- pi_double_t value;
- value.number = fieldData.v_float;
- PalmLib::set_long(p, value.words.hi);
- p += sizeof(pi_uint32_t);
- PalmLib::set_long(p, value.words.lo);
- p += sizeof(pi_uint32_t);
- break;
- }
-
- case PalmLib::FlatFile::Field::DATE:
- PalmLib::set_short(p, fieldData.v_date.year);
- p += sizeof(pi_uint16_t);
- *p++ = static_cast<pi_char_t> (fieldData.v_date.month & 0xFF);
- *p++ = static_cast<pi_char_t> (fieldData.v_date.day & 0xFF);
- break;
-
- case PalmLib::FlatFile::Field::TIME:
- *p++ = static_cast<pi_char_t> (fieldData.v_time.hour & 0xFF);
- *p++ = static_cast<pi_char_t> (fieldData.v_time.minute & 0xFF);
- break;
-
- case PalmLib::FlatFile::Field::LIST:
- if (!field(i).argument().empty()) {
- std::string data = field(i).argument();
- std::string::size_type pos = 0, next;
- unsigned int j = 0;
- pi_int16_t itemID = -1;
-
- while ( (next = data.find(charSeperator, pos)) != std::string::npos) {
- if (fieldData.v_string == data.substr( pos, next - pos)) {
- itemID = j;
- break;
- }
- j++;
- pos = next + 1;
- }
- // TR: the following test handles the case where the field value
- // equals the last item in list (bugfix)
- if (itemID == -1 && fieldData.v_string == data.substr( pos, std::string::npos)) {
- itemID = j;
- }
- p[0] = itemID; // TR: a list value is stored on 1 byte
- p += sizeof(pi_char_t);
- }
- break;
-
- case PalmLib::FlatFile::Field::LINK:
- PalmLib::set_long(p, fieldData.v_integer);
- p += sizeof(pi_int32_t);
- memcpy(p, fieldData.v_string.c_str(), fieldData.v_string.length() + 1);
- p += fieldData.v_string.length() + 1;
- break;
-
- case PalmLib::FlatFile::Field::LINKED:
- memcpy(p, fieldData.v_string.c_str(), fieldData.v_string.length() + 1);
- p += fieldData.v_string.length() + 1;
- break;
-
- case PalmLib::FlatFile::Field::CALCULATED:
- *p = 13;
- p++;
- break;
-
- default:
-// kDebug() << "unsupported field type";
- break;
- }
- if (setNote) {
- if (fieldData.v_note.length()) {
- memcpy(p, fieldData.v_note.c_str(), fieldData.v_note.length() + 1);
- PalmLib::set_short(noteOffsetOffset, (pi_uint16_t)(p - buf));
- p += fieldData.v_note.length() + 1;
- } else {
- PalmLib::set_short(noteOffsetOffset, 0);
- }
- }
- }
-
- // Place the packed data into the PalmOS record.
- pdb_record.set_raw(buf, size);
- delete [] buf;
-}
-
-void PalmLib::FlatFile::DB::build_fieldsdata_chunks(std::vector<DB::Chunk>& chunks) const
-{
- pi_char_t * buf = 0, * p;
- unsigned int size, i;
-
- for (i = 0; i < getNumOfFields(); ++i) {
- size = 0;
- switch (field_type(i)) {
- case PalmLib::FlatFile::Field::STRING:
- if (!field(i).argument().empty()) {
- size = (field(i).argument().length() + 1) + 2;
- buf = new pi_char_t[size];
- PalmLib::set_short(buf, i);
- strcpy((char *) (buf + 2), field(i).argument().c_str());
- }
- break;
-
- case PalmLib::FlatFile::Field::BOOLEAN:
- break;
-
- case PalmLib::FlatFile::Field::INTEGER:
- if (!field(i).argument().empty()) {
- std::string data = field(i).argument();
- std::pair< PalmLib::pi_int32_t, PalmLib::pi_int16_t> values(0, 0);
-
- if ( data.find(charSeperator) != std::string::npos) {
- StrOps::convert_string(data.substr( 0, data.find(charSeperator)), values.first);
- StrOps::convert_string(data.substr( data.find(charSeperator) + 1, std::string::npos), values.second);
- } else
- StrOps::convert_string(data, values.first);
-
- size = 2 + sizeof(pi_uint32_t) + sizeof(pi_uint16_t);
- buf = new pi_char_t[size];
- p = buf;
- PalmLib::set_short(p, i);
- p += sizeof(pi_uint16_t);
- PalmLib::set_long(p, values.first);
- p += sizeof(pi_uint32_t);
- PalmLib::set_short(p, values.second);
- p += sizeof(pi_uint16_t);
- }
- break;
-
- case PalmLib::FlatFile::Field::FLOAT:
- if (!field(i).argument().empty()) {
- std::string data = field(i).argument();
- pi_double_t value;
-
- StrOps::convert_string(data, value.number);
-
- size = 2 + 2 * sizeof(pi_uint32_t);
- buf = new pi_char_t[size];
- p = buf;
- PalmLib::set_short(p, i);
- p += sizeof(pi_uint16_t);
- PalmLib::set_long(p, value.words.hi);
- p += sizeof(pi_uint32_t);
- PalmLib::set_long(p, value.words.lo);
- p += sizeof(pi_uint32_t);
- }
- break;
-
- case PalmLib::FlatFile::Field::DATE:
- if (!field(i).argument().empty()) {
- std::string data = field(i).argument();
- struct tm date;
- pi_char_t type;
-
- if (data.substr(0, 3) == "now") {
- type = NOW_DEFAULT;
- const struct tm * tm_ptr;
- time_t now;
-
- time(&now);
- tm_ptr = localtime(&now);
- memcpy(&date, tm_ptr, sizeof(tm));
- } else
-#ifdef strptime
- if (strptime(data.c_str(), "%Y/%m/%d", &date))
-#else
- if (StrOps::strptime(data.c_str(), "%Y/%m/%d", &date))
-#endif
- type = CONSTANT_DEFAULT;
- else
- type = INVALID_DEFAULT;
-
- if (type != INVALID_DEFAULT) {
- size = sizeof(pi_uint16_t) + 1 + sizeof(pi_uint16_t) + 2;
- buf = new pi_char_t[size];
- p = buf;
- PalmLib::set_short(p, i);
- p += sizeof(pi_uint16_t);
- *p++ = static_cast<pi_char_t> (type & 0xFF);
- PalmLib::set_short(p, date.tm_year + 1900);
- p += sizeof(pi_uint16_t);
- *p++ = static_cast<pi_char_t> ((date.tm_mon + 1) & 0xFF);
- *p++ = static_cast<pi_char_t> (date.tm_mday & 0xFF);
- }
-
- }
- break;
-
- case PalmLib::FlatFile::Field::TIME:
- if (!field(i).argument().empty()) {
- std::string data = field(i).argument();
- struct tm t;
- pi_char_t type;
-
- if (data == "now") {
- type = NOW_DEFAULT;
- const struct tm * tm_ptr;
- time_t now;
-
- time(&now);
- tm_ptr = localtime(&now);
- memcpy(&t, tm_ptr, sizeof(tm));
- } else
-#ifdef strptime
- if (!strptime(data.c_str(), "%H/%M", &t))
-#else
- if (!StrOps::strptime(data.c_str(), "%H/%M", &t))
-#endif
- type = CONSTANT_DEFAULT;
- else
- type = INVALID_DEFAULT;
-
- if (type != INVALID_DEFAULT) {
- size = sizeof(pi_uint16_t) + 1 + sizeof(pi_uint16_t) + 2;
- buf = new pi_char_t[size];
- p = buf;
- PalmLib::set_short(p, i);
- p += sizeof(pi_uint16_t);
- *p++ = static_cast<pi_char_t> (type & 0xFF);
- *p++ = static_cast<pi_char_t> (t.tm_hour & 0xFF);
- *p++ = static_cast<pi_char_t> (t.tm_min & 0xFF);
- }
-
- }
- break;
-
- case PalmLib::FlatFile::Field::NOTE:
- break;
-
- case PalmLib::FlatFile::Field::LIST:
- if (!field(i).argument().empty()) {
- std::string data = field(i).argument();
- std::vector<std::string> items;
- std::string::size_type pos = 0, next;
- std::vector<std::string>::iterator iter;
- size = 2 + 2 * sizeof(pi_uint16_t);
- while ( (next = data.find(charSeperator, pos)) != std::string::npos) {
- std::string item = data.substr( pos, next - pos);
- items.push_back(item);
- size += item.length() + 1;
- pos = next + 1;
- }
- if (pos != std::string::npos) {
- std::string item = data.substr( pos, std::string::npos);
- items.push_back(item);
- size += item.length() + 1;
- }
-
- buf = new pi_char_t[size];
- p = buf;
- PalmLib::set_short(p, i);
- p += sizeof(pi_uint16_t);
- PalmLib::set_short(p, items.size());
- p += sizeof(pi_uint16_t);
- p += sizeof(pi_uint16_t);
- for (iter = items.begin(); iter != items.end(); ++iter) {
- std::string& item = (*iter);
- strcpy((char *) p, item.c_str());
- p[item.length()] = 0;
- p += item.length() + 1;
- }
-
- }
- break;
-
- case PalmLib::FlatFile::Field::LINK:
- if (!field(i).argument().empty()) {
- std::string data = field(i).argument();
- std::string databasename;
- pi_uint16_t fieldnum;
-
- if ( data.find(charSeperator) != std::string::npos) {
- databasename = data.substr( 0, data.find(charSeperator));
- StrOps::convert_string(data.substr( data.find(charSeperator) + 1, std::string::npos), fieldnum);
- } else {
- databasename = data;
- fieldnum = 0;
- }
-
- size = 2 + 32 * sizeof(pi_char_t) + sizeof(pi_uint16_t);
- buf = new pi_char_t[size];
- p = buf;
- PalmLib::set_short(p, i);
- p += sizeof(pi_uint16_t);
- strcpy((char *) p, databasename.c_str());
- p += 32 * sizeof(pi_char_t);
- PalmLib::set_short(p, fieldnum);
- p += sizeof(pi_uint16_t);
- }
- break;
-
- case PalmLib::FlatFile::Field::LINKED:
- if (!field(i).argument().empty()) {
- std::string data = field(i).argument();
- pi_uint16_t linknum;
- pi_uint16_t fieldnum;
-
- if ( data.find(charSeperator) != std::string::npos) {
- StrOps::convert_string(data.substr( 0, data.find(charSeperator)), linknum);
- StrOps::convert_string(data.substr( data.find(charSeperator) + 1, std::string::npos), fieldnum);
- if (field_type(linknum) != PalmLib::FlatFile::Field::LINK) {
- unsigned int j = 0;
- while (field_type(j) != PalmLib::FlatFile::Field::LINK && j < i) j++;
- linknum = j;
- }
- } else {
- unsigned int j = 0;
- while (field_type(j) != PalmLib::FlatFile::Field::LINK && j < i) j++;
- linknum = j;
- fieldnum = 0;
- }
-
- size = 2 + 2 * sizeof(pi_uint16_t);
- buf = new pi_char_t[size];
- p = buf;
- PalmLib::set_short(p, i);
- p += sizeof(pi_uint16_t);
- PalmLib::set_short(p, linknum);
- p += sizeof(pi_uint16_t);
- PalmLib::set_short(p, fieldnum);
- p += sizeof(pi_uint16_t);
- }
- break;
-
- case PalmLib::FlatFile::Field::CALCULATED:
- break;
-
- default:
-// kDebug() << "unknown field type";
- break;
- }
-
- if (size) {
- Chunk data_chunk(buf, size);
- data_chunk.chunk_type = CHUNK_FIELD_DATA;
- delete [] buf;
- chunks.push_back(data_chunk);
- }
- }
-}
-
-void PalmLib::FlatFile::DB::build_about_chunk(std::vector<DB::Chunk>& chunks) const
-{
- pi_char_t* buf;
- pi_char_t* p;
- int headersize = 2*sizeof(pi_uint16_t);
- std::string information = getAboutInformation();
-
- if (!information.length())
- return;
- // Build the names chunk.
- buf = new pi_char_t[headersize + information.length() + 1];
- p = buf;
-
- PalmLib::set_short(p, headersize);
- p += 2;
- PalmLib::set_short(p, 1); //about type version
- p += 2;
- memcpy(p, information.c_str(), information.length() + 1);
- p += information.length() + 1;
- Chunk chunk(buf, headersize + information.length() + 1);
- chunk.chunk_type = CHUNK_ABOUT;
- delete [] buf;
- chunks.push_back(chunk);
-
-}
-
-void PalmLib::FlatFile::DB::build_standard_chunks(std::vector<DB::Chunk>& chunks) const
-{
- pi_char_t* buf;
- pi_char_t* p;
- unsigned i;
-
- // Determine the size needed for the names chunk.
- size_t names_chunk_size = 0;
- for (i = 0; i < getNumOfFields(); ++i) {
- names_chunk_size += field_name(i).length() + 1;
- }
-
- // Build the names chunk.
- buf = new pi_char_t[names_chunk_size];
- p = buf;
- for (i = 0; i < getNumOfFields(); ++i) {
- const std::string name = field_name(i);
- memcpy(p, name.c_str(), name.length() + 1);
- p += name.length() + 1;
- }
- Chunk names_chunk(buf, names_chunk_size);
- names_chunk.chunk_type = CHUNK_FIELD_NAMES;
- delete [] buf;
-
- // Build the types chunk.
- buf = new pi_char_t[getNumOfFields() * sizeof(pi_uint16_t)];
- p = buf;
- for (i = 0; i < getNumOfFields(); ++i) {
- // Pack the type of the current field.
- switch (field_type(i)) {
- case PalmLib::FlatFile::Field::STRING:
- PalmLib::set_short(p, 0);
- break;
-
- case PalmLib::FlatFile::Field::BOOLEAN:
- PalmLib::set_short(p, 1);
- break;
-
- case PalmLib::FlatFile::Field::INTEGER:
- PalmLib::set_short(p, 2);
- break;
-
- case PalmLib::FlatFile::Field::DATE:
- PalmLib::set_short(p, 3);
- break;
-
- case PalmLib::FlatFile::Field::TIME:
- PalmLib::set_short(p, 4);
- break;
-
- case PalmLib::FlatFile::Field::NOTE:
- PalmLib::set_short(p, 5);
- break;
-
- case PalmLib::FlatFile::Field::LIST:
- PalmLib::set_short(p, 6);
- break;
-
- case PalmLib::FlatFile::Field::LINK:
- PalmLib::set_short(p, 7);
- break;
-
- case PalmLib::FlatFile::Field::FLOAT:
- PalmLib::set_short(p, 8);
- break;
-
- case PalmLib::FlatFile::Field::CALCULATED:
- PalmLib::set_short(p, 9);
- break;
-
- case PalmLib::FlatFile::Field::LINKED:
- PalmLib::set_short(p, 10);
- break;
-
- default:
-// kDebug() << "unsupported field type";
- break;
- }
-
- // Advance to the next position.
- p += sizeof(pi_uint16_t);
- }
- Chunk types_chunk(buf, getNumOfFields() * sizeof(pi_uint16_t));
- types_chunk.chunk_type = CHUNK_FIELD_TYPES;
- delete [] buf;
-
- // Build the list view options chunk.
- buf = new pi_char_t[2 * sizeof(pi_uint16_t)];
- PalmLib::set_short(buf, 0);
- PalmLib::set_short(buf + sizeof(pi_uint16_t), 0);
- Chunk listview_options_chunk(buf, 2 * sizeof(pi_uint16_t));
- listview_options_chunk.chunk_type = CHUNK_LISTVIEW_OPTIONS;
- delete [] buf;
-
- // Build the local find options chunk.
- buf = new pi_char_t[sizeof(pi_uint16_t)];
- PalmLib::set_short(buf, 0);
- Chunk lfind_options_chunk(buf, 1 * sizeof(pi_uint16_t));
- lfind_options_chunk.chunk_type = CHUNK_LFIND_OPTIONS;
- delete [] buf;
-
- // Add all the chunks to the chunk list.
- chunks.push_back(names_chunk);
- chunks.push_back(types_chunk);
- chunks.push_back(listview_options_chunk);
- chunks.push_back(lfind_options_chunk);
-}
-
-void PalmLib::FlatFile::DB::build_listview_chunk(std::vector<DB::Chunk>& chunks,
- const ListView& lv) const
-{
- // Calculate size and allocate space for the temporary buffer.
- size_t size = 2 * sizeof(pi_uint16_t) + 32
- + lv.size() * (2 * sizeof(pi_uint16_t));
- pi_char_t* buf = new pi_char_t[size];
-
- // Fill in the header details.
- pi_uint16_t flags = 0;
- if (lv.editoruse) {
- std::cout << "editoruse\n";
- flags |= VIEWFLAG_USE_IN_EDITVIEW;
- }
- PalmLib::set_short(buf, flags);
- PalmLib::set_short(buf + sizeof(pi_uint16_t), lv.size());
- memset((char *) (buf + 4), 0, 32);
- strncpy((char *) (buf + 4), lv.name.c_str(), 32);
-
- // Fill in the column details.
- pi_char_t* p = buf + 4 + 32;
- for (ListView::const_iterator i = lv.begin(); i != lv.end(); ++i) {
- const ListViewColumn& col = (*i);
- PalmLib::set_short(p, col.field);
- PalmLib::set_short(p + sizeof(pi_uint16_t), col.width);
- p += 2 * sizeof(pi_uint16_t);
- }
-
- // Create the chunk and place it in the chunks list.
- Chunk chunk(buf, size);
- chunk.chunk_type = CHUNK_LISTVIEW_DEFINITION;
- delete [] buf;
- chunks.push_back(chunk);
-}
-
-void PalmLib::FlatFile::DB::build_appinfo_block(const std::vector<DB::Chunk>& chunks, PalmLib::Block& appinfo) const
-{
- std::vector<Chunk>::const_iterator iter;
-
- // Determine the size of the final app info block.
- size_t size = 2 * sizeof(pi_uint16_t);
- for (iter = chunks.begin(); iter != chunks.end(); ++iter) {
- const Chunk& chunk = (*iter);
- size += 2 * sizeof(pi_uint16_t) + chunk.size();
- }
-
- // Allocate the temporary buffer. Fill in the header.
- pi_char_t* buf = new pi_char_t[size];
- PalmLib::set_short(buf, m_flags);
- PalmLib::set_short(buf + sizeof(pi_uint16_t), getNumOfFields());
-
- // Pack the chunks into the buffer.
- size_t i = 4;
- for (iter = chunks.begin(); iter != chunks.end(); ++iter) {
- const Chunk& chunk = (*iter);
- // Set the chunk type and size.
- PalmLib::set_short(buf + i, chunk.chunk_type);
- PalmLib::set_short(buf + i + 2, chunk.size());
- i += 4;
-
- // Copy the chunk data into the buffer.
- memcpy(buf + i, chunk.data(), chunk.size());
- i += chunk.size();
- }
-
- // Finally, move the buffer into the provided appinfo block.
- appinfo.set_raw(buf, size);
- delete [] buf;
-}
-
-void PalmLib::FlatFile::DB::outputPDB(PalmLib::Database& pdb) const
-{
- unsigned i;
-
- // Let the superclass have a chance.
- SUPERCLASS(PalmLib::FlatFile, Database, outputPDB, (pdb));
-
- // Set the database's type and creator.
- pdb.type(PalmLib::mktag('D','B','0','0'));
- pdb.creator(PalmLib::mktag('D','B','O','S'));
-
- // Create the app info block.
- std::vector<Chunk> chunks;
- build_standard_chunks(chunks);
- for (i = 0; i < getNumOfListViews(); ++i) {
- build_listview_chunk(chunks, getListView(i));
- }
- build_fieldsdata_chunks(chunks);
- build_about_chunk(chunks);
-
- PalmLib::Block appinfo;
- build_appinfo_block(chunks, appinfo);
- pdb.setAppInfoBlock(appinfo);
-
- // Output each record to the PalmOS database.
- for (i = 0; i < getNumRecords(); ++i) {
- Record record = getRecord(i);
- PalmLib::Record pdb_record;
-
- make_record(pdb_record, record);
- pdb.appendRecord(pdb_record);
- }
-}
-
-unsigned PalmLib::FlatFile::DB::getMaxNumOfFields() const
-{
- return 0;
-}
-
-bool
-PalmLib::FlatFile::DB::supportsFieldType(const Field::FieldType& type) const
-{
- switch (type) {
- case PalmLib::FlatFile::Field::STRING:
- case PalmLib::FlatFile::Field::BOOLEAN:
- case PalmLib::FlatFile::Field::INTEGER:
- case PalmLib::FlatFile::Field::FLOAT:
- case PalmLib::FlatFile::Field::DATE:
- case PalmLib::FlatFile::Field::TIME:
- case PalmLib::FlatFile::Field::NOTE:
- case PalmLib::FlatFile::Field::LIST:
- case PalmLib::FlatFile::Field::LINK:
- case PalmLib::FlatFile::Field::LINKED:
- case PalmLib::FlatFile::Field::CALCULATED:
- return true;
- default:
- return false;
- }
-}
-
-std::vector<std::string>
-PalmLib::FlatFile::DB::field_argumentf(int i, std::string& format)
-{
- std::vector<std::string> vtitles(0, std::string(""));
- int j;
-
- switch (field_type(i)) {
- case PalmLib::FlatFile::Field::STRING:
- format = std::string("%s");
- vtitles.push_back(std::string("default value"));
- break;
- case PalmLib::FlatFile::Field::INTEGER:
- format = std::string("%ld/%d");
- vtitles.push_back(std::string("default value"));
- vtitles.push_back(std::string("increment"));
- break;
- case PalmLib::FlatFile::Field::FLOAT:
- format = std::string("%f");
- vtitles.push_back(std::string("default value"));
- break;
- case PalmLib::FlatFile::Field::DATE:
- format = std::string("%d/%d/%d");
- vtitles.push_back(std::string("Year (or now)"));
- vtitles.push_back(std::string("Month"));
- vtitles.push_back(std::string("Day in the month"));
- break;
- case PalmLib::FlatFile::Field::TIME:
- format = std::string("%d/%d");
- vtitles.push_back(std::string("Hour (or now)"));
- vtitles.push_back(std::string("Minute"));
- break;
- case PalmLib::FlatFile::Field::LIST:
- format = std::string("");
- for (j = 0; j < 31; ++i) {
- format += std::string("%s/");
- std::ostringstream title;
- title << "item " << j;
- vtitles.push_back(title.str());
- }
- format += std::string("%s");
- vtitles.push_back(std::string("item 32"));
- break;
- case PalmLib::FlatFile::Field::LINK:
- format = std::string("%s/%d");
- vtitles.push_back(std::string("database"));
- vtitles.push_back(std::string("field number"));
- break;
- case PalmLib::FlatFile::Field::LINKED:
- format = std::string("%d/%d");
- vtitles.push_back(std::string("link field number"));
- vtitles.push_back(std::string("field number"));
- break;
- case PalmLib::FlatFile::Field::CALCULATED:
- case PalmLib::FlatFile::Field::BOOLEAN:
- case PalmLib::FlatFile::Field::NOTE:
- default:
- format = std::string("");
- break;
- }
- return vtitles;
-}
-
-unsigned PalmLib::FlatFile::DB::getMaxNumOfListViews() const
-{
- return 0;
-}
-
-void PalmLib::FlatFile::DB::doneWithSchema()
-{
- // Let the superclass have a chance.
- SUPERCLASS(PalmLib::FlatFile, Database, doneWithSchema, ());
-/* false from the 0.3.3 version
- if (getNumOfListViews() < 1)
- throw PalmLib::error("at least one list view must be specified");
-*/
-}
-
-void PalmLib::FlatFile::DB::setOption(const std::string& name,
- const std::string& value)
-{
- if (name == "find") {
- if (!StrOps::string2boolean(value))
- m_flags &= ~(1);
- else
- m_flags |= 1;
- } else if (name == "read-only"
- || name == "readonly") {
- if (!StrOps::string2boolean(value))
- m_flags &= ~(0x8000);
- else
- m_flags |= 0x8000;
- } else {
- SUPERCLASS(PalmLib::FlatFile, Database, setOption, (name, value));
- }
-}
-
-PalmLib::FlatFile::Database::options_list_t
-PalmLib::FlatFile::DB::getOptions(void) const
-{
- typedef PalmLib::FlatFile::Database::options_list_t::value_type value;
- PalmLib::FlatFile::Database::options_list_t result;
-
- result = SUPERCLASS(PalmLib::FlatFile, Database, getOptions, ());
-
- if (m_flags & 1)
- result.push_back(value("find", "true"));
-
- if (m_flags & 0x8000)
- result.push_back(value("read-only", "true"));
-
- return result;
-}
diff --git a/src/3rdparty/pilotdb/libflatfile/DB.h b/src/3rdparty/pilotdb/libflatfile/DB.h
deleted file mode 100644
index dd09d36..0000000
--- a/src/3rdparty/pilotdb/libflatfile/DB.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * This class provides access to DB-format databases.
- */
-
-#ifndef __PALMLIB_FLATFILE_DB_H__
-#define __PALMLIB_FLATFILE_DB_H__
-
-#include <map>
-#include <string>
-
-#include "../libpalm/Block.h"
-#include "../libpalm/Database.h"
-#include "Database.h"
-
-namespace PalmLib {
- namespace FlatFile {
-
- class DB : public Database {
- public:
- /**
- * Return true if this class can handle the given PalmOS
- * database.
- *
- * @param pdb PalmOS database to check for support.
- */
- static bool classify(PalmLib::Database& pdb);
-
- /**
- * Return true if this class is the database identified by
- * name.
- *
- * @param name A database type name to check.
- */
- static bool match_name(const std::string& name);
-
- /**
- * Default constructor for an initially empty database.
- */
- DB():Database("db"), m_flags(0) { }
-
- /**
- * Constructor which fills the flat-file structure from a
- * PalmOS database.
- */
- DB(PalmLib::Database&);
-
- // destructor
- virtual ~DB() { }
-
- /**
- * After all processing to add fields and records is done,
- * outputPDB is called to create the actual file format
- * used by the flat-file database product.
- *
- * @param pdb An instance of PalmLib::Database.
- */
- virtual void outputPDB(PalmLib::Database& pdb) const;
-
- /**
- * Return the maximum number of fields allowed in the
- * database. This class returns 0 since there is no limit.
- */
- virtual unsigned getMaxNumOfFields() const;
-
- /**
- * Return true for the field types that this class
- * currently supports. Returns false otherwise.
- *
- * @param type The field type to check for support.
- */
- virtual bool supportsFieldType(const Field::FieldType& type) const;
-
- /**
- * write the format of the field's argument in format,
- * and return a strings' vector with name of each argument part.
- * the format use the same display as used by printf
- */
- virtual std::vector<std::string> field_argumentf(int i, std::string& format);
-
- /**
- * Return the maximum number of views supported by this
- * type of flat-file database.
- */
- virtual unsigned getMaxNumOfListViews() const;
-
- /**
- * Hook the end of the schema processing.
- */
- virtual void doneWithSchema();
-
- /**
- * Set a extra option.
- *
- * @param opt_name The name of the option to set.
- * @param opt_value The value to assign to this option.
- */
- virtual void setOption(const std::string& name,
- const std::string& value);
-
- /**
- * Get a list of extra options.
- */
- virtual options_list_t getOptions(void) const;
-
- // Produce a PalmOS record from a flat-file record.
- void make_record(PalmLib::Record& pdb_record,
- const PalmLib::FlatFile::Record& record) const;
-
- private:
- pi_uint16_t m_flags;
-
- class Chunk : public PalmLib::Block {
- public:
- Chunk() : PalmLib::Block(), chunk_type(0) { }
- Chunk(const Chunk& rhs)
- : PalmLib::Block(rhs), chunk_type(rhs.chunk_type) { }
- Chunk(PalmLib::Block::const_pointer data,
- const PalmLib::Block::size_type size)
- : PalmLib::Block(data, size), chunk_type(0) { }
- Chunk& operator = (const Chunk& rhs) {
- Block::operator = (rhs);
- chunk_type = rhs.chunk_type;
- return *this;
- }
-
- pi_uint16_t chunk_type;
- };
-
- typedef std::map<pi_uint16_t, std::vector<Chunk> > chunks_t;
- chunks_t m_chunks;
-
- // Extract the chunks from an app info block to m_chunks.
- void extract_chunks(const PalmLib::Block&);
-
- // Extract the schema.
- void extract_schema(unsigned numFields);
-
- // Extract the list views from the app info block.
- void extract_listviews();
-
- //extract the field data
- std::string extract_fieldsdata(pi_uint16_t field_search,
- PalmLib::FlatFile::Field::FieldType type);
-
- void extract_aboutinfo();
-
- // Determine location and size of each field.
- void parse_record(PalmLib::Record& record,
- std::vector<pi_char_t *>& ptrs,
- std::vector<size_t>& sizes);
-
- // The following routines build various types of chunks
- // for the app info block and assemble them all.
- void build_fieldsdata_chunks(std::vector<Chunk>& chunks) const;
- void build_standard_chunks(std::vector<Chunk>&) const;
- void build_listview_chunk(std::vector<Chunk>&,
- const ListView&) const;
- void build_about_chunk(std::vector<Chunk>& chunks) const;
- void build_appinfo_block(const std::vector<Chunk>&,
- PalmLib::Block&) const;
- };
-
- }
-}
-
-#endif
diff --git a/src/3rdparty/pilotdb/libflatfile/Database.cpp b/src/3rdparty/pilotdb/libflatfile/Database.cpp
deleted file mode 100644
index fc064bd..0000000
--- a/src/3rdparty/pilotdb/libflatfile/Database.cpp
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * palm-db-tools: Abstract adaptor for flat-file databases.
- * Copyright (C) 1999-2000 by Tom Dyas (tdyas at users.sourceforge.net)
- */
-
-#include "Database.h"
-
-#include <iostream>
-#include <stdexcept>
-#include <sstream>
-#include <utility>
-#include <cctype>
-
-PalmLib::FlatFile::Database::Database(std::string p_Type, const PalmLib::Database& pdb)
- : m_Type(p_Type)
-{
- title(pdb.name());
- m_backup = pdb.backup();
- m_readonly = pdb.readonly();
- m_copy_prevention = pdb.copy_prevention();
-}
-
-void
-PalmLib::FlatFile::Database::outputPDB(PalmLib::Database& pdb) const
-{
- pdb.name(title());
- pdb.backup(m_backup);
- pdb.readonly(m_readonly);
- pdb.copy_prevention(m_copy_prevention);
-}
-
-std::string
-PalmLib::FlatFile::Database::title() const
-{
- return m_title;
-}
-
-void
-PalmLib::FlatFile::Database::title(const std::string& title)
-{
- m_title = title;
-}
-
-unsigned
-PalmLib::FlatFile::Database::getNumOfFields() const
-{
- return m_fields.size();
-}
-
-std::string
-PalmLib::FlatFile::Database::field_name(int i) const
-{
- return m_fields[i].title();
-/* return m_fields[i].first;*/
-}
-
-PalmLib::FlatFile::Field::FieldType
-PalmLib::FlatFile::Database::field_type(int i) const
-{
- return m_fields[i].type();
-/* return m_fields[i].second;*/
-}
-
-PalmLib::FlatFile::FType
-PalmLib::FlatFile::Database::field(int i) const
-{
- return m_fields[i];
-}
-
-void
-PalmLib::FlatFile::Database::appendField(PalmLib::FlatFile::FType field)
-{
- if (! supportsFieldType(field.type())) {
-// throw PalmLib::error("unsupported field type");
-// kDebug() << "unsupported field type";
- return;
- }
- if (getMaxNumOfFields() != 0 && getNumOfFields() + 1 > getMaxNumOfFields()) {
-// throw PalmLib::error("maximum number of fields reached");
-// kDebug() << "maximum number of fields reached";
- return;
- }
- m_fields.push_back(field);
-}
-
-void
-PalmLib::FlatFile::Database::appendField(const std::string& name,
- Field::FieldType type, std::string data)
-{
- if (! supportsFieldType(type)) {
-// kDebug() << "unsupported field type";
- return;
- }
-// throw PalmLib::error("unsupported field type");
- if (getMaxNumOfFields() != 0 && getNumOfFields() + 1 > getMaxNumOfFields()) {
-// kDebug() << "maximum number of fields reached";
- return;
- }
-// throw PalmLib::error("maximum number of fields reached");
-
-/* m_fields.push_back(std::make_pair(name, type));*/
-/* m_fields.push_back(PalmLib::FlatFile::make_ftype(name, type));*/
- m_fields.push_back(PalmLib::FlatFile::FType(name, type, data));
-}
-
-void
-PalmLib::FlatFile::Database::insertField(int i, PalmLib::FlatFile::FType field)
-{
- if (! supportsFieldType(field.type())) {
-// throw PalmLib::error("unsupported field type");
-// kDebug() << "unsupported field type";
- return;
- }
- if (getMaxNumOfFields() != 0 && getNumOfFields() + 1 > getMaxNumOfFields()) {
-// throw PalmLib::error("maximum number of fields reached");
-// kDebug() << "maximum number of fields reached";
- return;
- }
-/* m_fields.push_back(std::make_pair(name, type));*/
-/* m_fields.push_back(PalmLib::FlatFile::make_ftype(name, type));*/
- m_fields.insert(m_fields.begin() + i, field);
-}
-
-void
-PalmLib::FlatFile::Database::insertField(int i, const std::string& name,
- Field::FieldType type, std::string data)
-{
- if (! supportsFieldType(type)) {
-// throw PalmLib::error("unsupported field type");
-// kDebug() << "unsupported field type";
- return;
- }
- if (getMaxNumOfFields() != 0 && getNumOfFields() + 1 > getMaxNumOfFields()) {
-// throw PalmLib::error("maximum number of fields reached");
-// kDebug() << "maximum number of fields reached";
- return;
- }
-/* m_fields.push_back(std::make_pair(name, type));*/
-/* m_fields.push_back(PalmLib::FlatFile::make_ftype(name, type));*/
- m_fields.insert(m_fields.begin() + i, PalmLib::FlatFile::FType(name, type, data));
-}
-
-void
-PalmLib::FlatFile::Database::removeField(int i)
-{
- m_fields.erase(m_fields.begin() + i);
-}
-
-unsigned
-PalmLib::FlatFile::Database::getNumRecords() const
-{
- return m_records.size();
-}
-
-PalmLib::FlatFile::Record
-PalmLib::FlatFile::Database::getRecord(unsigned index) const
-{
- if (index >= getNumRecords()) {
-// kDebug() << "invalid index";
- //throw std::out_of_range("invalid index");
- }
- return m_records[index];
-}
-
-void
-PalmLib::FlatFile::Database::appendRecord(PalmLib::FlatFile::Record rec)
-{
- if (rec.fields().size() != getNumOfFields()) {
-// throw PalmLib::error("the number of fields mismatch");
-// kDebug() << "the number of fields mismatch";
- return;
- }
- for (unsigned int i = 0; i < getNumOfFields(); i++) {
- const Field field = rec.fields().at(i);
- if (field.type != field_type(i)) {
-// kDebug() << "field " << i << " type " << field_type(i) << " mismatch: " << field.type;
- return;
-// throw PalmLib::error(buffer.str());
- }
- }
- m_records.push_back(rec);
-}
-
-void
-PalmLib::FlatFile::Database::deleteRecord(unsigned index)
-{
- m_records.erase(m_records.begin() + index);
-}
-
-void
-PalmLib::FlatFile::Database::clearRecords()
-{
- m_records.clear();
-}
-
-unsigned
-PalmLib::FlatFile::Database::getNumOfListViews() const
-{
- return m_listviews.size();
-}
-
-PalmLib::FlatFile::ListView
-PalmLib::FlatFile::Database::getListView(unsigned index) const
-{
- return m_listviews[index];
-}
-
-void
-PalmLib::FlatFile::Database::setListView(unsigned index,
- const PalmLib::FlatFile::ListView& lv)
-{
- // Ensure that the field numbers are within range.
- for (PalmLib::FlatFile::ListView::const_iterator i = lv.begin();
- i != lv.end(); ++i) {
- if ((*i).field >= getNumOfFields())
- return;
- }
-
- m_listviews[index] = lv;
-}
-
-void
-PalmLib::FlatFile::Database::appendListView(const ListView& lv)
-{
- // Enforce any limit of the maximum number of list views.
- if (getMaxNumOfListViews() != 0
- && getNumOfListViews() + 1 > getMaxNumOfListViews())
- return;
-// throw PalmLib::error("too many list views for this database type");
-
- // Ensure that the field numbers are within range.
- for (PalmLib::FlatFile::ListView::const_iterator i = lv.begin();
- i != lv.end(); ++i) {
- if ((*i).field >= getNumOfFields())
- return;
- }
- m_listviews.push_back(lv);
-}
-
-void
-PalmLib::FlatFile::Database::removeListView(unsigned index)
-{
- if (index < getNumOfListViews())
- m_listviews.erase( m_listviews.begin()+index);
-}
-
-static void
-strlower(std::string& str)
-{
- for (std::string::iterator p = str.begin(); p != str.end(); ++p) {
- if (isupper(*p))
- *p = tolower(*p);
- }
-}
-
-static bool
-string2boolean(std::string str)
-{
- strlower(str);
- if (str == "on")
- return true;
- else if (str == "off")
- return false;
- else if (str == "true")
- return true;
- else if (str == "t")
- return true;
- else if (str == "false")
- return false;
- else if (str == "f")
- return false;
- else {
- int num = 0;
-
- std::istringstream(str.c_str()) >> num;
- return num != 0 ? true : false;
- }
-}
-
-void
-PalmLib::FlatFile::Database::setOption(const std::string& name,
- const std::string& value)
-{
- if (name == "backup")
- m_backup = string2boolean(value);
- else if (name == "inROM")
- m_readonly = string2boolean(value);
- else if (name == "copy-prevention")
- m_copy_prevention = string2boolean(value);
-}
-
-PalmLib::FlatFile::Database::options_list_t
-PalmLib::FlatFile::Database::getOptions() const
-{
- PalmLib::FlatFile::Database::options_list_t set;
- typedef PalmLib::FlatFile::Database::options_list_t::value_type value;
-
- if (m_backup)
- set.push_back(value("backup", "true"));
- else
- set.push_back(value("backup", "false"));
-
- if (m_readonly)
- set.push_back(value("inROM", "true"));
-
- if (m_copy_prevention)
- set.push_back(value("copy-prevention", "true"));
-
- return set;
-}
-
-void
-PalmLib::FlatFile::Database::doneWithSchema()
-{
- // Ensure that the database has at least one field.
- if (getNumOfFields() == 0)
- return;
-// throw PalmLib::error("at least one field must be specified");
-
- // Ensure that the database has a title.
- if (title().empty())
- return;
-// throw PalmLib::error("a title must be specified");
-}
diff --git a/src/3rdparty/pilotdb/libflatfile/Database.h b/src/3rdparty/pilotdb/libflatfile/Database.h
deleted file mode 100644
index e3b2979..0000000
--- a/src/3rdparty/pilotdb/libflatfile/Database.h
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- * palm-db-tools: Abstract adaptor for flat-file databases.
- * Copyright (C) 1999-2000 by Tom Dyas (tdyas at users.sourceforge.net)
- */
-
-#ifndef __PALMLIB_FLATFILE_DATABASE_H__
-#define __PALMLIB_FLATFILE_DATABASE_H__
-
-#include <vector>
-#include <string>
-#include <utility>
-
-#include "../libpalm/Database.h"
-#include "Field.h"
-#include "Record.h"
-#include "ListView.h"
-#include "FType.h"
-
-#define NOTETITLE_LENGTH 32
-
-namespace PalmLib {
- namespace FlatFile {
-
- // This class is an in-memory representation of a typical
- // PalmOS flat-file database. The caller can request write the
- // data to a real PalmLib::Database object at any time to
- // actually obtain the data in a format usable on the Palm
- // Pilot.
-
- class Database {
- public:
- // convenience type for the options list parsing
- typedef std::vector< std::pair< std::string, std::string> > options_list_t;
-
- /**
- * Default constructor which creates an empty
- * database. Subclasses should provide a default
- * constructor and an additional constructorwhich takes a
- * PalmOS::Database as an argument.
- */
- Database(std::string p_Type)
- : m_backup(false), m_readonly(false),
- m_copy_prevention(false), m_Type(p_Type)
- { }
-
- /**
- * Constructor which fills the flat-file structure from a
- * PalmOS database.
- *
- * @param pdb PalmOS database to read from.
- */
- Database(std::string p_Type, const PalmLib::Database& pdb);
-
- /**
- * The destructor is empty since we have no other objects
- * to dispose of. It is virtual since we have subclasses
- * for specific flat-file database products.
- */
- virtual ~Database() { }
-
- /**
- * After all processing to add fields and records is done,
- * outputPDB is called to create the actual file format
- * used by the flat-file database product. This method is
- * abstract since only subclasses know the specific file
- * formats.
- *
- * @param pdb An instance of PalmLib::Database.
- */
- virtual void outputPDB(PalmLib::Database& pdb) const;
-
- /**
- * Return the title of this flat-file database.
- */
- virtual std::string title() const;
-
- /**
- * Set the title of this database.
- *
- * @param title New title of the database.
- */
- virtual void title(const std::string& title);
-
- /**
- * Return the maximum number of fields allowed in the
- * database. The object will not allow the number of
- * fields to exceed the returned value. This method is
- * abstract since only the subclasses know the limit on
- * fields. 0 is returned if there is no limit.
- */
- virtual unsigned getMaxNumOfFields() const = 0;
-
- /**
- * Return the number of fields in the database.
- */
- virtual unsigned getNumOfFields() const;
-
- /**
- * Accessor function for the name of a field.
- */
- virtual std::string field_name(int i) const;
-
- /**
- * Accessor function for type of a field.
- */
- virtual Field::FieldType field_type(int i) const;
-
- /**
- * Accessor function for the field information
- */
- virtual FType field(int i) const;
-
- /**
- * write the format of the field's argument in format,
- * and return a strings' vector with name of each argument part.
- * the format use the same display as used by printf
- */
- virtual std::vector<std::string> field_argumentf(int, std::string& format)
- { format = std::string(""); return std::vector<std::string>(0, std::string(""));}
-
- /**
- * Add a field to the flat-file database. An exception
- * will be thrown if the maximum number of fields would be
- * exceeded or the field type is unsupported.
- *
- * @param name Name of the new field.
- * @param type The type of the new field.
- */
- virtual void appendField(FType field);
- virtual void appendField(const std::string& name,
- Field::FieldType type, std::string data = std::string(""));
-
- /**
- * Insert a field to the flat-file database. An exception
- * will be thrown if the maximum number of fields would be
- * exceeded or the field type is unsupported.
- *
- * @param name Name of the new field.
- * @param type The type of the new field.
- */
- virtual void insertField(int i, FType field);
- virtual void insertField(int i, const std::string& name,
- Field::FieldType type, std::string data = std::string(""));
-
- /**
- * Remove a Field in the flat-file database. An Exception
- * will thrown if the field doesn't exist.
- */
- virtual void removeField(int i);
-
- /**
- * Returns true if this database supports a specific field
- * type. This method is abstract since only the subclasses
- * know which field types are supported.
- *
- * @param type The field type that should be checked for support.
- */
- virtual bool supportsFieldType(const Field::FieldType& type) const = 0;
-
- /**
- * Return the number of records in the database.
- */
- virtual unsigned getNumRecords() const;
-
- /**
- * Return the record with the given index. The caller gets
- * a private copy of the data and _not_ a reference to the
- * data.
- *
- * @param index Index of the record to retrieve.
- */
- virtual Record getRecord(unsigned index) const;
-
- /**
- * Append a record to the database. An exception will be
- * thrown if their are not enough fields or if field types
- * mismatch.
- *
- * @param rec The record to append.
- */
- virtual void appendRecord(Record rec);
-
- /**
- * Remove all records from the database
- */
- virtual void clearRecords();
-
- /**
- * Remove a record from the database
- */
- virtual void deleteRecord(unsigned index);
-
- /**
- * Return the maximum number of views supported by this
- * type of flat-file database. This method is abstract
- * since only the subclasses know the exact value.
- */
- virtual unsigned getMaxNumOfListViews() const = 0;
-
- /**
- * Return the actual number of views present in this
- * database.
- */
- virtual unsigned getNumOfListViews() const;
-
- /**
- * Return a copy of the list view at the given index.
- *
- * @param index Index of the list view to return.
- */
- virtual ListView getListView(unsigned index) const;
-
- /**
- * Set the list view at the given index to the new list
- * view. An exception may be thrown if field numbers are
- * invalid or the list view doesn't pass muster with the
- * subclass.
- *
- * @param index Index of the list view to set.
- * @param listview The new list view.
- */
- virtual void setListView(unsigned index, const ListView& listview);
-
- /**
- * Append a new list view. This will fail if the maximum
- * number of list views would be exceeded.
- *
- * @param listview The new list view to append.
- */
- virtual void appendListView(const ListView& listview);
-
- /**
- * Remove a list view.
- *
- * @param index Index of the list view to remove.
- */
- virtual void removeListView(unsigned index);
-
- /**
- * Process a special option. If the option is not
- * supported, then it is silently ignored. Subclasses
- * should call the base class first so that options common
- * to all flat-file databases can be processed.
- *
- * @param name Name of the option.
- * @param value String value assigned to the option. */
- virtual void setOption(const std::string& name,
- const std::string& value);
-
- /**
- * Return a list of of all extra options supported by this
- * database. Subclasses should call the base class first
- * and then merge any extra options. Get a list of extra
- * options.
- */
- virtual options_list_t getOptions(void) const;
-
- /**
- * Hook function which should be invoked by a caller after
- * all calls the meta-deta functions have completed. This
- * allows the database type-specific code to do final
- * checks on the meta-data. An exception will be throw if
- * there is an error. Otherwise, nothing will happen.
- */
- virtual void doneWithSchema();
-
- /**
- * Change and Return the about information
- * of the database when it's supportted
- */
- virtual void setAboutInformation(std::string _string)
- {
- about.information = _string;
- }
-
- virtual std::string getAboutInformation() const
- {
- return about.information;
- }
-
- std::string type() const
- {
- return m_Type;
- }
-
- private:
- // We provide a dummy copy constructor and assignment
- // operator in order to prevent any copying of the object.
- Database(const Database&) { }
- Database& operator = (const Database&) { return *this; }
-
-/* typedef std::vector< std::pair< std::string, Field::FieldType > >*/
- typedef std::vector< FType>
- field_list_t;
- typedef std::vector<Record> record_list_t;
- typedef std::vector<ListView> listview_list_t;
-
- typedef std::vector< std::pair< std::string, std::vector< std::string > > >
- listitems_list_t;
-
- field_list_t m_fields; // database schema
- record_list_t m_records; // the database itself
- listitems_list_t m_list; // the items lists include in the database
- listview_list_t m_listviews; // list views
- bool m_backup; // backup flag for PDB
- bool m_readonly; // readonly flag for PDB
- bool m_copy_prevention; // copy prevention for PDB
- std::string m_title; // name of database
- class About
- {
- public:
- std::string information;
- } about;
- std::string m_Type;
- };
-
- } // namespace FlatFile
-} // namespace PalmLib
-
-#endif
diff --git a/src/3rdparty/pilotdb/libflatfile/FType.h b/src/3rdparty/pilotdb/libflatfile/FType.h
deleted file mode 100644
index 86396b3..0000000
--- a/src/3rdparty/pilotdb/libflatfile/FType.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * palm-db-tools: Field Type definitions for flat-file database objects.
- * Copyright (C) 2000 by Tom Dyas (tdyas at users.sourceforge.net)
- */
-
-#ifndef __PALMLIB_FLATFILE_FTYPE_H__
-#define __PALMLIB_FLATFILE_FTYPE_H__
-
-#include <string>
-#include <utility>
-
-#include "../libpalm/palmtypes.h"
-#include "Field.h"
-
-namespace PalmLib {
- namespace FlatFile {
-
- class FType {
- public:
- friend class PalmLib::FlatFile::Field;
- FType(std::string title, PalmLib::FlatFile::Field::FieldType type) :
- m_title(title), m_type(type), m_data("") { }
-
- FType(std::string title, PalmLib::FlatFile::Field::FieldType type, std::string data) :
- m_title(title), m_type(type), m_data(data) { }
-
- virtual ~FType() { }
-
- std::string title() const {return m_title;}
- virtual PalmLib::FlatFile::Field::FieldType type() const
- { return m_type;}
-
- virtual std::string argument() const { return m_data;}
-
- void set_argument( const std::string data) { m_data = data;}
-
- void setTitle( const std::string value) { m_title = value;}
- void setType( const PalmLib::FlatFile::Field::FieldType value) { m_type = value;}
- private:
- std::string m_title;
- PalmLib::FlatFile::Field::FieldType m_type;
-
- std::string m_data;
- };
- }
-}
-
-#endif
diff --git a/src/3rdparty/pilotdb/libflatfile/Field.h b/src/3rdparty/pilotdb/libflatfile/Field.h
deleted file mode 100644
index 583bc21..0000000
--- a/src/3rdparty/pilotdb/libflatfile/Field.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * palm-db-tools: Field definitions for flat-file database objects.
- * Copyright (C) 2000 by Tom Dyas (tdyas at users.sourceforge.net)
- */
-
-#ifndef __PALMLIB_FLATFILE_FIELD_H__
-#define __PALMLIB_FLATFILE_FIELD_H__
-
-#include <string>
-
-#include "../libpalm/palmtypes.h"
-
-namespace PalmLib {
- namespace FlatFile {
-
- class Field {
- public:
- Field() : no_value(false), type(STRING), v_boolean(false),
- v_integer(0), v_float(0) { }
- ~Field() { }
-
- // True if this field has no value. (NULL in SQL terms)
- bool no_value;
-
- enum FieldType {
- STRING,
- BOOLEAN,
- INTEGER,
- FLOAT,
- DATE,
- TIME,
- DATETIME,
- LIST,
- LINK,
- NOTE,
- CALCULATED,
- LINKED,
- LAST
- };
-
- enum FieldType type;
-
- std::string v_string;
- std::string v_note;
- bool v_boolean;
- PalmLib::pi_int32_t v_integer;
- long double v_float;
- struct {
- int month;
- int day;
- int year;
- } v_date; // valid for DATE and DATETIME
- struct {
- int hour;
- int minute;
- } v_time; // valid for TIME and DATETIME
-
- /*
- friend Field operator = (const Field& y)
- {
- this.v_string = y.v_string;
- this.v_boolean = y.v_boolean;
- this.v_integer = y.v_integer;
- this.v_float = y.v_float;
- this.v_date.month = y.v_date.month;
- this.v_date.day = y.v_date.day;
- this.v_date.year = y.v_date.year;
- this.v_time.hour = y.v_time.hour;
- this.v_time.minute = y.v_time.minute;
- this.v_note = y.v_note;
- }
-*/
- friend bool operator==(const Field& x, const Field& y)
- {
- if (x.type != y.type)
- return false;
- switch (x.type) {
- case STRING:
- return (x.v_string == y.v_string);
- case BOOLEAN:
- return (x.v_boolean == y.v_boolean);
- case INTEGER:
- return (x.v_integer == y.v_integer);
- case FLOAT:
- return (x.v_float == y.v_float);
- case DATE:
- return (x.v_date.month == y.v_date.month
- && x.v_date.day == y.v_date.day
- && x.v_date.year == y.v_date.year);
- case TIME:
- return (x.v_time.hour == y.v_time.hour
- && x.v_time.minute == y.v_time.minute);
- case DATETIME:
- return (x.v_date.month == y.v_date.month
- && x.v_date.day == y.v_date.day
- && x.v_date.year == y.v_date.year
- && x.v_time.hour == y.v_time.hour
- && x.v_time.minute == y.v_time.minute);
- case LIST:
- return (x.v_string == y.v_string);
- case LINK:
- return (x.v_string == y.v_string);
- case NOTE:
- return (x.v_string == y.v_string
- && x.v_note == y.v_note);
- case CALCULATED:
- return true; //a calculated field could be recalculate at each time
- case LINKED:
- return (x.v_string == y.v_string);
- default:
- return (x.v_string == y.v_string);
- }
- }
- };
-
- }
-}
-
-#endif
diff --git a/src/3rdparty/pilotdb/libflatfile/ListView.h b/src/3rdparty/pilotdb/libflatfile/ListView.h
deleted file mode 100644
index 7fd1bd1..0000000
--- a/src/3rdparty/pilotdb/libflatfile/ListView.h
+++ /dev/null
@@ -1,77 +0,0 @@
-#ifndef FLATFILE_LISTVIEW_H__
-#define FLATFILE_LISTVIEW_H__
-
-#include <string>
-#include <vector>
-
-#include "ListViewColumn.h"
-
-namespace PalmLib {
- namespace FlatFile {
-
- // The ListView class represents the a "list view" as
- // implemented by the major PalmOS flat-file programs. The
- // main idea is a series of columns that display a field of
- // the database.
- //
- // For fun, this class exports the STL interface of the STL
- // class it uses to store the ListViewColumn classes.
-
- class ListView {
- private:
- typedef std::vector<ListViewColumn> rep_type;
- rep_type rep;
-
- public:
- typedef rep_type::value_type value_type;
- typedef rep_type::iterator iterator;
- typedef rep_type::const_iterator const_iterator;
- typedef rep_type::reference reference;
- typedef rep_type::const_reference const_reference;
- typedef rep_type::size_type size_type;
- typedef rep_type::difference_type difference_type;
- typedef rep_type::reverse_iterator reverse_iterator;
- typedef rep_type::const_reverse_iterator const_reverse_iterator;
-
- // global fields
- std::string name;
- bool editoruse;
-
- // STL pull-up interface (probably not complete)
- iterator begin() { return rep.begin(); }
- const_iterator begin() const { return rep.begin(); }
- iterator end() { return rep.end(); }
- const_iterator end() const { return rep.end(); }
- reverse_iterator rbegin() { return rep.rbegin(); }
- const_reverse_iterator rbegin() const { return rep.rbegin(); }
- reverse_iterator rend() { return rep.rend(); }
- const_reverse_iterator rend() const { return rep.rend(); }
- size_type size() const { return rep.size(); }
- size_type max_size() const { return rep.max_size(); }
- bool empty() const { return rep.empty(); }
- reference front() { return rep.front(); }
- const_reference front() const { return rep.front(); }
- reference back() { return rep.back(); }
- const_reference back() const { return rep.back(); }
- void push_back(const ListViewColumn& x) { rep.push_back(x); }
- void pop_back() { rep.pop_back(); }
- void clear() { rep.clear(); }
- void resize(size_type new_size, const ListViewColumn& x)
- { rep.resize(new_size, x); }
- void resize(size_type new_size)
- { rep.resize(new_size, ListViewColumn()); }
-
- ListView() : rep(), name(""), editoruse(false) { }
- ListView(const ListView& rhs) : rep(rhs.rep), name(rhs.name), editoruse(false) { }
- ListView& operator = (const ListView& rhs) {
- name = rhs.name;
- rep = rhs.rep;
- return *this;
- }
-
- };
-
- }
-}
-
-#endif
diff --git a/src/3rdparty/pilotdb/libflatfile/ListViewColumn.h b/src/3rdparty/pilotdb/libflatfile/ListViewColumn.h
deleted file mode 100644
index 7b5330e..0000000
--- a/src/3rdparty/pilotdb/libflatfile/ListViewColumn.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef __PALMLIB_FLATFILE_LISTVIEWCOLUMN_H__
-#define __PALMLIB_FLATFILE_LISTVIEWCOLUMN_H__
-
-namespace PalmLib {
- namespace FlatFile {
-
- // The ListViewColumn class stores the field number and column
- // width for a column in a list view.
-
- struct ListViewColumn {
- ListViewColumn() : field(0), width(80) { }
- ListViewColumn(unsigned a1, unsigned a2) : field(a1), width(a2) { }
- unsigned field;
- unsigned width;
- };
- }
-}
-
-#endif
diff --git a/src/3rdparty/pilotdb/libflatfile/Record.h b/src/3rdparty/pilotdb/libflatfile/Record.h
deleted file mode 100644
index 537953e..0000000
--- a/src/3rdparty/pilotdb/libflatfile/Record.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * palm-db-tools: Field definitions for flat-file database objects.
- * Copyright (C) 2000 by Tom Dyas (tdyas at users.sourceforge.net)
- */
-
-#ifndef __PALMLIB_FLATFILE_RECORD_H__
-#define __PALMLIB_FLATFILE_RECORD_H__
-
-#include <vector>
-
-#include "Field.h"
-
-namespace PalmLib {
- namespace FlatFile {
-// typedef std::vector<Field> Record;
-
- class Record{
- public:
-
- const std::vector<Field> fields() const { return m_Fields; }
-
- void appendField(Field newfield) { m_Fields.push_back(newfield); }
- bool created() const { return m_New;}
- void created(bool on){ m_New = on;}
- bool secret() const { return m_Secret;}
- void secret(bool on) { m_Secret = on;}
-
- bool dirty() const { return m_Dirty; }
- void dirty( bool on) { m_Dirty = on; }
-
- pi_uint32_t unique_id() const { return m_UID; }
- void unique_id(pi_uint32_t id) { m_UID = id; }
- private:
-
- std::vector<Field> m_Fields;
- bool m_Secret;
- bool m_New;
-
- bool m_Dirty;
- pi_uint32_t m_UID;
- };
- }
-}
-
-#endif
diff --git a/src/3rdparty/pilotdb/libpalm/Block.cpp b/src/3rdparty/pilotdb/libpalm/Block.cpp
deleted file mode 100644
index 3a71c86..0000000
--- a/src/3rdparty/pilotdb/libpalm/Block.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * palm-db-tools: Encapsulate "blocks" of data.
- * Copyright (C) 2000 by Tom Dyas (tdyas at users.sourceforge.net)
- *
- * The PalmLib::Block class represents a generic block of data. It is
- * used to simplify passing arrays of pi_char_t around.
- */
-
-#include "Block.h"
-
-#include <cstring>
-
-void PalmLib::Block::reserve(PalmLib::Block::size_type new_size)
-{
- if (new_size > capacity()) {
- // Allocate a new buffer containing a copy of the old with the
- // remainder zero'ed out.
- pointer new_data = new pi_char_t[new_size];
- memcpy(new_data, m_data, m_size);
- memset(new_data + m_size, 0, new_size - m_size);
-
- // Replace the existing buffer.
- delete [] m_data;
- m_data = new_data;
- m_size = new_size;
- }
-}
-
-void PalmLib::Block::resize(size_type new_size)
-{
- if (new_size < m_size) {
- // Copy the data that will remain to a new buffer and switch to it.
- pointer new_data = new pi_char_t[new_size];
- memcpy(new_data, m_data, new_size);
-
- // Replace the existing buffer.
- delete [] m_data;
- m_data = new_data;
- m_size = new_size;
- } else if (new_size > m_size) {
- // Copy the data that will remain to a new buffer and switch to it.
- pointer new_data = new pi_char_t[new_size];
- memcpy(new_data, m_data, m_size);
- memset(new_data + m_size, 0, new_size - m_size);
-
- // Replace the existing buffer.
- delete [] m_data;
- m_data = new_data;
- m_size = new_size;
- }
-}
-
-void PalmLib::Block::assign(PalmLib::Block::const_pointer data,
- const PalmLib::Block::size_type size)
-{
- clear();
- if (data && size > 0) {
- m_size = size;
- m_data = new pi_char_t[m_size];
- memcpy(m_data, data, m_size);
- }
-}
-
-void PalmLib::Block::assign(const PalmLib::Block::size_type size,
- const PalmLib::Block::value_type value)
-{
- clear();
- if (size > 0) {
- m_size = size;
- m_data = new pi_char_t[m_size];
- memset(m_data, value, m_size);
- }
-}
-
-bool operator == (const PalmLib::Block& lhs, const PalmLib::Block& rhs)
-{
- if (lhs.size() == rhs.size()) {
- if (lhs.data()) {
- if (memcmp(lhs.data(), rhs.data(), lhs.size()) != 0)
- return false;
- }
- return true;
- }
- return false;
-}
diff --git a/src/3rdparty/pilotdb/libpalm/Block.h b/src/3rdparty/pilotdb/libpalm/Block.h
deleted file mode 100644
index 43eaf8e..0000000
--- a/src/3rdparty/pilotdb/libpalm/Block.h
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * palm-db-tools: Encapsulate "blocks" of data.
- * Copyright (C) 2000 by Tom Dyas (tdyas at users.sourceforge.net)
- *
- * The PalmLib::Block class represents a generic block of data. It is
- * used to make passing pi_char_t buffers around very easy. The Record
- * and Resource classes both inherit from this class. A STL interface
- * is also attempted though it is probably not complete.
- */
-
-#ifndef __PALMLIB_BLOCK_H__
-#define __PALMLIB_BLOCK_H__
-
-#include <cstddef>
-#include <algorithm>
-#include <iterator>
-
-#include "palmtypes.h"
-
-namespace PalmLib {
-
- class Block {
- public:
- // STL: container type definitions
- typedef PalmLib::pi_char_t value_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef value_type* iterator;
- typedef const value_type* const_iterator;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
-
- // STL: reverisible container type definitions
-#ifdef __GNUG__
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
- typedef std::reverse_iterator<iterator> reverse_iterator;
-#endif
-
- /**
- * Default constructor.
- */
- Block() : m_data(0), m_size(0) { }
-
- /**
- * Constructor which fills the block from buffer "raw" with
- * length "len".
- */
- Block(const_pointer raw, const size_type len) : m_data(0), m_size(0) {
- assign(raw, len);
- }
-
- /**
- * Constructor which takes a size and allocates a zero'ed out
- * buffer of that size. (STL: Sequence: default fill
- * constructor)
- */
- explicit Block(const size_type size, const value_type value = 0)
- : m_data(0), m_size(0) {
- assign(size, value);
- }
-
- /**
- * Constructor which takes two iterators and builds the block
- * from the region between the iterators. (STL: Sequence:
- * range constructor)
- */
- Block(const_iterator a, const_iterator b) : m_data(0), m_size(0) {
- assign(a, b - a);
- }
-
- /**
- * Copy constructor. Just copies the data from the other block
- * into this block.
- */
- Block(const Block& rhs) : m_data(0), m_size(0) {
- assign(rhs.data(), rhs.size());
- }
-
- /**
- * Destructor. Just frees the buffer if it exists.
- */
- virtual ~Block() { clear(); }
-
- /**
- * Assignment operator.
- *
- * @param rhs The block whose contents should be copied.
- */
- Block& operator = (const Block& rhs) {
- assign(rhs.data(), rhs.size());
- return *this;
- }
-
- // STL: Container
- iterator begin() { return m_data; }
- const_iterator begin() const { return m_data; }
- iterator end() { return (m_data != 0) ? (m_data + m_size) : (0); }
- const_iterator end() const
- { return (m_data != 0) ? (m_data + m_size) : (0); }
- size_type size() const { return m_size; }
- size_type max_size() const {
- return size_type(-1) / sizeof(value_type);
- }
- bool empty() const { return m_size == 0; }
-
- // STL: Reversible Container
-#ifdef __GNUG__
- reverse_iterator rbegin() { return reverse_iterator(end()); }
- const_reverse_iterator rbegin() const {
- return const_reverse_iterator(end());
- }
- reverse_iterator rend() { return reverse_iterator(begin()); }
- const_reverse_iterator rend() const {
- return const_reverse_iterator(begin());
- }
-#endif
-
- // STL: Random Access Container
- reference operator [] (size_type index) { return m_data[index]; }
- const_reference operator [] (size_type index) const
- { return m_data[index]; }
-
- // STL: Sequence (not complete)
- void clear() {
- if (m_data) {
- delete [] m_data;
- m_data = 0;
- m_size = 0;
- }
- }
- void resize(size_type n);
- reference front() { return m_data[0]; }
- const_reference front() const { return m_data[0]; }
-
- // STL: (present in vector but not part of a interface spec)
- size_type capacity() const { return m_size; }
- void reserve(size_type size);
-
- /**
- * Return a pointer to the data area. If there are no
- * contents, then the return value will be NULL. This is not
- * an STL method but goes with this class as a singular data
- * block and not a container (even though it is).
- */
- iterator data() { return m_data; }
- const_iterator data() const { return m_data; }
-
- /**
- * Replace the existing contents of the Block with the buffer
- * that starts at raw of size len.
- *
- * @param raw Pointer to the new contents.
- * @param len Size of the new contents.
- */
- void assign(const_pointer data, const size_type size);
-
- /**
- * Replace the existing contents of the Block with a buffer
- * consisting of size elements equal to fill.
- *
- * @param size The size of the new contents.
- * @param value Value to fill the contents with.
- */
- void assign(const size_type size, const value_type value = 0);
-
- // compatibility functions (remove before final 0.3.0 release)
- const_pointer raw_data() const { return data(); }
- pointer raw_data() { return data(); }
- size_type raw_size() const { return size(); }
- void set_raw(const_pointer raw, const size_type len)
- { assign(raw, len); }
-
- private:
- pointer m_data;
- size_type m_size;
- };
-
-}
-
-bool operator == (const PalmLib::Block& lhs, const PalmLib::Block& rhs);
-
-inline bool operator != (const PalmLib::Block& lhs, const PalmLib::Block& rhs)
-{ return ! (lhs == rhs); }
-
-#endif
diff --git a/src/3rdparty/pilotdb/libpalm/CMakeLists.txt b/src/3rdparty/pilotdb/libpalm/CMakeLists.txt
deleted file mode 100644
index bccdcb4..0000000
--- a/src/3rdparty/pilotdb/libpalm/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-
-########### next target ###############
-
-SET(libpalm_STAT_SRCS
- Database.cpp
- Block.cpp
- )
-
-ADD_LIBRARY(libpalm-tellico STATIC ${libpalm_STAT_SRCS})
diff --git a/src/3rdparty/pilotdb/libpalm/Database.cpp b/src/3rdparty/pilotdb/libpalm/Database.cpp
deleted file mode 100644
index 2f0d038..0000000
--- a/src/3rdparty/pilotdb/libpalm/Database.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * palm-db-tools: General interface to a PalmOS database.
- * Copyright (C) 2000 by Tom Dyas (tdyas at users.sourceforge.net)
- *
- * This file implens 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.
- */
-
-#include "Database.h"
-#include "palmtypes.h"
-#include "Record.h"
-
-#ifndef __GNUG__
-
-// MSVC: Visual C++ doesn't like initializers in the header ...
-const PalmLib::pi_uint16_t PalmLib::Database::FLAG_HDR_RESOURCE = 0x0001;
-const PalmLib::pi_uint16_t PalmLib::Database::FLAG_HDR_READ_ONLY = 0x0002;
-const PalmLib::pi_uint16_t PalmLib::Database::FLAG_HDR_APPINFO_DIRTY = 0x0004;
-const PalmLib::pi_uint16_t PalmLib::Database::FLAG_HDR_BACKUP = 0x0008;
-const PalmLib::pi_uint16_t PalmLib::Database::FLAG_HDR_OK_TO_INSTALL_NEWER = 0x0010;
-const PalmLib::pi_uint16_t PalmLib::Database::FLAG_HDR_RESET_AFTER_INSTALL = 0x0020;
-const PalmLib::pi_uint16_t PalmLib::Database::FLAG_HDR_COPY_PREVENTION = 0x0040;
-const PalmLib::pi_uint16_t PalmLib::Database::FLAG_HDR_STREAM = 0x0080;
-const PalmLib::pi_uint16_t PalmLib::Database::FLAG_HDR_HIDDEN = 0x0100;
-const PalmLib::pi_uint16_t PalmLib::Database::FLAG_HDR_LAUNCHABLE_DATA = 0x0200;
-const PalmLib::pi_uint16_t PalmLib::Database::FLAG_HDR_OPEN = 0x8000;
-const PalmLib::pi_char_t PalmLib::Record::FLAG_ATTR_DELETED = 0x80;
-const PalmLib::pi_char_t PalmLib::Record::FLAG_ATTR_DIRTY = 0x40;
-const PalmLib::pi_char_t PalmLib::Record::FLAG_ATTR_BUSY = 0x20;
-const PalmLib::pi_char_t PalmLib::Record::FLAG_ATTR_SECRET = 0x10;
-
-#endif
-
-PalmLib::Database::Database(bool resourceDB)
- : m_name(""), m_version(0), m_time_created(0), m_time_modified(0),
- m_time_backup(0), m_modification(0), m_unique_id_seed(0)
-{
- m_flags = resourceDB ? FLAG_HDR_RESOURCE : 0;
- m_type = PalmLib::mktag(' ', ' ', ' ', ' ');
- m_creator = PalmLib::mktag(' ', ' ', ' ', ' ');
-}
diff --git a/src/3rdparty/pilotdb/libpalm/Database.h b/src/3rdparty/pilotdb/libpalm/Database.h
deleted file mode 100644
index ba66013..0000000
--- a/src/3rdparty/pilotdb/libpalm/Database.h
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * palm-db-tools: General interface to a PalmOS database.
- * Copyright (C) 2000 by Tom Dyas (tdyas at users.sourceforge.net)
- *
- * 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 size_t 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
diff --git a/src/3rdparty/pilotdb/libpalm/Record.h b/src/3rdparty/pilotdb/libpalm/Record.h
deleted file mode 100644
index ecf19e3..0000000
--- a/src/3rdparty/pilotdb/libpalm/Record.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * palm-db-tools: Raw PalmOS Records
- * Copyright (C) 2000 by Tom Dyas (tdyas at users.sourceforge.net)
- */
-
-#ifndef __PALMLIB_RECORD_H__
-#define __PALMLIB_RECORD_H__
-
-#include "Block.h"
-
-namespace PalmLib {
-
- class Record : public Block {
- public:
-#ifdef __GNUG__
- static const pi_char_t FLAG_ATTR_DELETED = 0x80;
- static const pi_char_t FLAG_ATTR_DIRTY = 0x40;
- static const pi_char_t FLAG_ATTR_BUSY = 0x20;
- static const pi_char_t FLAG_ATTR_SECRET = 0x10;
-#else
- static const pi_char_t FLAG_ATTR_DELETED;
- static const pi_char_t FLAG_ATTR_DIRTY;
- static const pi_char_t FLAG_ATTR_BUSY;
- static const pi_char_t FLAG_ATTR_SECRET;
-#endif
-
- /**
- * Default constructor.
- */
- Record() : Block(), m_attrs(0), m_unique_id(0) { }
-
- /**
- * Copy constructor.
- */
- Record(const Record& rhs) : Block(rhs.data(), rhs.size()) {
- m_attrs = rhs.attrs();
- m_unique_id = rhs.unique_id();
- }
-
- /**
- * Destructor.
- */
- virtual ~Record() { }
-
- /**
- * Constructor which lets the caller specify all the
- * parameters.
- *
- * @param attrs Attribute byte (flags + category).
- * @param unique_id Unique ID for this record.
- * @param data Start of buffer to copy (or 0 for empty).
- * @param size Size of the buffer to copy.
- */
- Record(pi_char_t attrs, pi_uint32_t unique_id,
- Block::const_pointer data, const Block::size_type size)
- : Block(data, size), m_attrs(attrs), m_unique_id(unique_id) { }
-
- /**
- * Constructor which lets the caller use the default fill
- * constructor.
- * @param attrs Attribute byte (flags + category).
- * @param unique_id Unique ID for this record.
- * @param size Size of buffer to generate.
- * @param value Value to fill buffer with.
- */
- Record(pi_char_t attrs, pi_uint32_t unique_id,
- const size_type size, const value_type value = 0)
- : Block(size, value), m_attrs(attrs), m_unique_id(unique_id) { }
-
- /**
- * Assignment operator.
- *
- * @param rhs The PalmLib::Record we should become. */
- Record& operator = (const Record& rhs) {
- Block::operator = (rhs);
- m_attrs = rhs.attrs();
- m_unique_id = rhs.unique_id();
- return *this;
- }
-
- /**
- * Return the attributes byte which contains the category and
- * flags.
- */
- pi_char_t attrs() const { return m_attrs; }
-
- /**
- * Return the state of the record's "deleted" flag.
- */
- bool deleted() const { return (m_attrs & FLAG_ATTR_DELETED) != 0; }
-
- /**
- * Set the state of the record's "deleted" flag.
- *
- * @param state New state of the "deleted" flag.
- */
- void deleted(bool state) {
- if (state)
- m_attrs |= FLAG_ATTR_DELETED;
- else
- m_attrs &= ~(FLAG_ATTR_DELETED);
- }
-
- /**
- * Return the state of the record's "dirty" flag.
- */
- bool dirty() const { return (m_attrs & FLAG_ATTR_DIRTY) != 0; }
-
- /**
- * Set the state of the record's "dirty" flag.
- *
- * @param state New state of the "dirty" flag.
- */
- void dirty(bool state) {
- if (state)
- m_attrs |= FLAG_ATTR_DIRTY;
- else
- m_attrs &= ~(FLAG_ATTR_DIRTY);
- }
-
- /**
- * Return the state of the record's "secret" flag.
- */
- bool secret() const { return (m_attrs & FLAG_ATTR_SECRET) != 0; }
-
- /**
- * Set the state of the record's "secret" flag.
- *
- * @param state New state of the "secret" flag.
- */
- void secret(bool state) {
- if (state)
- m_attrs |= FLAG_ATTR_SECRET;
- else
- m_attrs &= ~(FLAG_ATTR_SECRET);
- }
-
- /**
- * Return the category of this record.
- */
- pi_char_t category() const { return (m_attrs & 0x0F); }
-
- /**
- * Set the category of this record.
- */
- void category(pi_char_t cat)
- { m_attrs &= ~(0x0F); m_attrs |= (cat & 0x0F); }
-
- /**
- * Return the unique ID of this record.
- */
- pi_uint32_t unique_id() const { return m_unique_id; }
-
- /**
- * Set the unique ID of this record to uid.
- *
- * @param uid New unique ID for this record.
- */
- void unique_id(pi_uint32_t uid) { m_unique_id = uid; }
-
- private:
- pi_char_t m_attrs;
- pi_uint32_t m_unique_id;
- };
-
-}
-
-#endif
diff --git a/src/3rdparty/pilotdb/libpalm/Resource.h b/src/3rdparty/pilotdb/libpalm/Resource.h
deleted file mode 100644
index b98f718..0000000
--- a/src/3rdparty/pilotdb/libpalm/Resource.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * palm-db-tools: PalmOS Resources
- * Copyright (C) 2000 by Tom Dyas (tdyas at users.sourceforge.net)
- */
-
-#ifndef __PALMLIB_RESOURCE_H__
-#define __PALMLIB_RESOURCE_H__
-
-#include "Block.h"
-#include "palmtypes.h"
-
-namespace PalmLib {
-
- class Resource : public Block {
- public:
- /**
- * Default constructor.
- */
- Resource() : Block(), m_type(0), m_id(0) { }
-
- /**
- * Copy constructor.
- */
- Resource(const Resource& rhs) : Block(rhs.data(), rhs.size()) {
- m_type = rhs.type();
- m_id = rhs.id();
- }
-
- /**
- * Destructor.
- */
- virtual ~Resource() { }
-
- /**
- * Constructor which lets the caller specify all the
- * parameters.
- *
- * @param type Resource type
- * @param id Resource ID
- * @param data Start of buffer to copy.
- * @param size Size of the buffer to copy.
- */
- Resource(pi_uint32_t type, pi_uint32_t id,
- const_pointer data, const size_type size)
- : Block(data, size), m_type(type), m_id(id) { }
-
- /**
- * Constructor which lets the caller use the default fill
- * constructor.
- *
- * @param type Resource type
- * @param id Resource ID
- * @param size Size of buffer to generate.
- * @param value Value to fill buffer with.
- */
- Resource(pi_uint32_t type, pi_uint32_t id,
- const size_type size, const value_type value = 0)
- : Block(size, value), m_type(type), m_id(id) { }
-
- /**
- * Assignment operator.
- */
- Resource& operator = (const Resource& rhs) {
- Block::operator = (rhs);
- m_type = rhs.type();
- m_id = rhs.id();
- return *this;
- }
-
- // Accessor functions for the resource type.
- pi_uint32_t type() const { return m_type; }
- void type(const pi_uint32_t _type) { m_type = _type; }
-
- // Accessor functions for the resource ID.
- pi_uint32_t id() const { return m_id; }
- void id(const pi_uint32_t _id) { m_id = _id; }
-
- private:
- pi_uint32_t m_type;
- pi_uint32_t m_id;
- };
-
-}
-
-#endif
diff --git a/src/3rdparty/pilotdb/libpalm/palmtypes.h b/src/3rdparty/pilotdb/libpalm/palmtypes.h
deleted file mode 100644
index 5c12262..0000000
--- a/src/3rdparty/pilotdb/libpalm/palmtypes.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * This file contains type definitions and helper functions to make
- * access to data in Palm Pilot order easier.
- */
-
-#ifndef __LIBPALM_PALMTYPES_H__
-#define __LIBPALM_PALMTYPES_H__
-
-#include <stdexcept>
-
-#include "../portability.h"
-
-namespace PalmLib {
-
-#if SIZEOF_UNSIGNED_CHAR == 1
- typedef unsigned char pi_char_t;
-#else
-#error Unable to determine the size of pi_char_t.
-#endif
-
-#if SIZEOF_UNSIGNED_LONG == 2
- typedef unsigned long pi_uint16_t;
-#elif SIZEOF_UNSIGNED_INT == 2
- typedef unsigned int pi_uint16_t;
-#elif SIZEOF_UNSIGNED_SHORT == 2
- typedef unsigned short pi_uint16_t;
-#else
-#error Unable to determine the size of pi_uint16_t.
-#endif
-
-#if SIZEOF_LONG == 2
- typedef long pi_int16_t;
-#elif SIZEOF_INT == 2
- typedef int pi_int16_t;
-#elif SIZEOF_SHORT == 2
- typedef short pi_int16_t;
-#else
-#error Unable to determine the size of pi_int16_t.
-#endif
-
-#if SIZEOF_UNSIGNED_LONG == 4
- typedef unsigned long pi_uint32_t;
-#elif SIZEOF_UNSIGNED_INT == 4
- typedef unsigned int pi_uint32_t;
-#elif SIZEOF_UNSIGNED_SHORT == 4
- typedef unsigned short pi_uint32_t;
-#else
-#error Unable to determine the size of pi_uint32_t.
-#endif
-
-#if SIZEOF_LONG == 4
- typedef long pi_int32_t;
-#elif SIZEOF_INT == 4
- typedef int pi_int32_t;
-#elif SIZEOF_SHORT == 4
- typedef short pi_int32_t;
-#else
-#error Unable to determine the size of pi_int32_t.
-#endif
-
-typedef union {
- double number;
-#ifdef WORDS_BIGENDIAN
- struct {
- PalmLib::pi_uint32_t hi;
- PalmLib::pi_uint32_t lo;
- } words;
-#else
- struct {
- PalmLib::pi_uint32_t lo;
- PalmLib::pi_uint32_t hi;
- } words;
-#endif
-} pi_double_t;
-
- inline pi_int32_t get_long(const pi_char_t* p) {
- return ( (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3] );
- }
-
- inline pi_int32_t get_treble(const pi_char_t* p) {
- return ( (p[0] << 16) || (p[1] << 8) || p[0]);
- }
-
- inline pi_int16_t get_short(const pi_char_t* p) {
- return ( (p[0] << 8) | p[1] );
- }
-
- inline void set_long(pi_char_t *p, pi_int32_t v) {
- p[0] = (v >> 24) & 0xFF;
- p[1] = (v >> 16) & 0xFF;
- p[2] = (v >> 8 ) & 0xFF;
- p[3] = (v ) & 0xFF;
- }
-
- inline void set_treble(pi_char_t *p, pi_int32_t v) {
- p[0] = (v >> 16) & 0xFF;
- p[1] = (v >> 8 ) & 0xFF;
- p[2] = (v ) & 0xFF;
- }
-
- inline void set_short(pi_char_t *p, pi_int16_t v) {
- p[0] = (v >> 8) & 0xFF;
- p[1] = (v ) & 0xFF;
- }
-
- inline pi_uint32_t mktag(pi_char_t c1, pi_char_t c2,
- pi_char_t c3, pi_char_t c4)
- { return (((c1)<<24)|((c2)<<16)|((c3)<<8)|(c4)); }
-
- class error : public std::runtime_error {
- public:
- error(const std::string & what_arg) : std::runtime_error(what_arg) { }
- };
-
-} // namespace PalmLib
-
-#endif
diff --git a/src/3rdparty/pilotdb/pilotdb.cpp b/src/3rdparty/pilotdb/pilotdb.cpp
deleted file mode 100644
index b13cb12..0000000
--- a/src/3rdparty/pilotdb/pilotdb.cpp
+++ /dev/null
@@ -1,287 +0,0 @@
-/***************************************************************************
- Copyright (C) 2003-2009 Robby Stephenson <robby at periapsis.org>
- ***************************************************************************/
-
-/***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License as *
- * published by the Free Software Foundation; either version 2 of *
- * the License or (at your option) version 3 or any later version *
- * accepted by the membership of KDE e.V. (or its successor approved *
- * by the membership of KDE e.V.), which shall act as a proxy *
- * defined in Section 14 of version 3 of the license. *
- * *
- * This program 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program. If not, see <http://www.gnu.org/licenses/>. *
- * *
- ***************************************************************************/
-
-#include "pilotdb.h"
-#include "strop.h"
-#include "libflatfile/Record.h"
-#include "../../tellico_debug.h"
-
-#include <QBuffer>
-
-using namespace PalmLib;
-using Tellico::Export::PilotDatabase;
-
-namespace {
- static const int PI_HDR_SIZE = 78;
- static const int PI_RESOURCE_ENT_SIZE = 10;
- static const int PI_RECORD_ENT_SIZE = 8;
-}
-
-PilotDatabase::PilotDatabase() : Database(false), m_app_info(), m_sort_info(),
- m_next_record_list_id(0) {
- pi_int32_t now = StrOps::get_current_time();
- creation_time(now);
- modification_time(now);
- backup_time(now);
-}
-
-PilotDatabase::~PilotDatabase() {
- for(record_list_t::iterator i = m_records.begin(); i != m_records.end(); ++i) {
- delete (*i);
- }
-}
-
-QByteArray PilotDatabase::data() {
- QBuffer b;
- b.open(QIODevice::WriteOnly);
-
- pi_char_t buf[PI_HDR_SIZE];
- pi_int16_t ent_hdr_size = isResourceDB() ? PI_RESOURCE_ENT_SIZE : PI_RECORD_ENT_SIZE;
- std::streampos offset = PI_HDR_SIZE + m_records.size() * ent_hdr_size + 2;
-
- for(int i=0; i<32; ++i) {
- buf[i] = 0;
- }
- memcpy(buf, name().c_str(), qMin((size_t)31, name().length()));
- set_short(buf + 32, flags());
- set_short(buf + 34, version());
- set_long(buf + 36, creation_time());
- set_long(buf + 40, modification_time());
- set_long(buf + 44, backup_time());
- set_long(buf + 48, modnum());
- if(m_app_info.raw_size() > 0) {
- set_long(buf + 52, offset);
- offset += m_app_info.raw_size();
- } else {
- set_long(buf + 52, 0);
- }
- if(m_sort_info.raw_size() > 0) {
- set_long(buf + 56, offset);
- offset += m_sort_info.raw_size();
- } else {
- set_long(buf + 56, 0);
- }
- set_long(buf + 60, type());
- set_long(buf + 64, creator());
- set_long(buf + 68, unique_id_seed());
- set_long(buf + 72, m_next_record_list_id);
- set_short(buf + 76, m_records.size());
-
- // Write the PDB/PRC header to the string.
- b.write(reinterpret_cast<char *>(buf), sizeof(buf));
-
- for(record_list_t::iterator i = m_records.begin(); i != m_records.end(); ++i) {
- Block* entry = *i;
-
- if(isResourceDB()) {
- Resource * resource = reinterpret_cast<Resource *> (entry);
- set_long(buf, resource->type());
- set_short(buf + 4, resource->id());
- set_long(buf + 6, offset);
- } else {
- Record * record = reinterpret_cast<Record *> (entry);
- set_long(buf, offset);
- buf[4] = record->attrs();
- set_treble(buf + 5, record->unique_id());
- }
- b.write(reinterpret_cast<char *>(buf), ent_hdr_size);
- offset += entry->raw_size();
- }
-
- b.write("\0", 1);
- b.write("\0", 1);
-
- if(m_app_info.raw_size() > 0) {
- b.write((char *) m_app_info.raw_data(), m_app_info.raw_size());
- }
-
- if(m_sort_info.raw_size() > 0) {
- b.write((char *) m_sort_info.raw_data(), m_sort_info.raw_size());
- }
-
- for(record_list_t::iterator q = m_records.begin(); q != m_records.end(); ++q) {
- Block* entry = *q;
- b.write((char *) entry->raw_data(), entry->raw_size());
- }
-
- b.close();
- return b.buffer();
-}
-
-// Return the record identified by the given index. The caller owns
-// the returned RawRecord object.
-Record PilotDatabase::getRecord(unsigned index) const
-{
- if (index >= m_records.size()) myDebug() << "invalid index";
- return *(reinterpret_cast<Record *> (m_records[index]));
-}
-
-// Set the record identified by the given index to the given record.
-void PilotDatabase::setRecord(unsigned index, const Record& rec)
-{
-// if (index >= m_records.size()) myDebug() << "invalid index");
- *(reinterpret_cast<Record *> (m_records[index])) = rec;
-}
-
-// Append the given record to the database.
-void PilotDatabase::appendRecord(const Record& rec)
-{
- Record* record = new Record(rec);
-
- // If this new record has a unique ID that duplicates any other
- // record, then reset the unique ID to an unused value.
- if (m_uid_map.find(record->unique_id()) != m_uid_map.end()) {
- uid_map_t::iterator iter = max_element(m_uid_map.begin(),
- m_uid_map.end());
- pi_uint32_t maxuid = (*iter).first;
-
- // The new unique ID becomes the max plus one.
- record->unique_id(maxuid + 1);
- }
-
- m_uid_map[record->unique_id()] = record;
- m_records.push_back(record);
-}
-
-
-void PilotDatabase::clearRecords()
-{
- m_records.erase(m_records.begin(), m_records.end());
-}
-
-// Return the resource with the given type and ID. NULL is returned if
-// the specified (type, ID) combination is not present in the
-// database. The caller owns the returned RawRecord object.
-Resource PilotDatabase::getResourceByType(pi_uint32_t type, pi_uint32_t id) const
-{
- for (record_list_t::const_iterator i = m_records.begin();
- i != m_records.end(); ++i) {
- Resource* resource = reinterpret_cast<Resource *> (*i);
- if (resource->type() == type && resource->id() == id)
- return *resource;
- }
-
- myWarning() << "not found!";
- return Resource();
-}
-
-// Return the resource present at the given index. NULL is returned if
-// the index is invalid. The caller owns the returned RawRecord
-// object.
-Resource PilotDatabase::getResourceByIndex(unsigned index) const
-{
- if (index >= m_records.size()) myDebug() << "invalid index";
- return *(reinterpret_cast<Resource *> (m_records[index]));
-}
-
-// Set the resouce at given index to passed RawResource object.
-void PilotDatabase::setResource(unsigned index, const Resource& resource)
-{
- if (index >= m_records.size()) myDebug() << "invalid index";
- *(reinterpret_cast<Resource *> (m_records[index])) = resource;
-}
-
-FlatFile::Field PilotDatabase::string2field(FlatFile::Field::FieldType type, const std::string& fldstr) {
- FlatFile::Field field;
-
- switch (type) {
- case FlatFile::Field::STRING:
- field.type = FlatFile::Field::STRING;
- field.v_string = fldstr;
- break;
-
- case FlatFile::Field::BOOLEAN:
- field.type = FlatFile::Field::BOOLEAN;
- field.v_boolean = StrOps::string2boolean(fldstr);
- break;
-
- case FlatFile::Field::INTEGER:
- field.type = FlatFile::Field::INTEGER;
- StrOps::convert_string(fldstr, field.v_integer);
- break;
-
- case FlatFile::Field::FLOAT:
- field.type = FlatFile::Field::FLOAT;
- StrOps::convert_string(fldstr, field.v_float);
- break;
-
- case FlatFile::Field::NOTE:
- field.type = FlatFile::Field::NOTE;
- field.v_string = fldstr.substr(0,NOTETITLE_LENGTH - 1);
- field.v_note = fldstr;
- break;
-
- case FlatFile::Field::LIST:
- field.type = FlatFile::Field::LIST;
- field.v_string = fldstr;
- break;
-
- case FlatFile::Field::LINK:
- field.type = FlatFile::Field::LINK;
- field.v_integer = 0;
- field.v_string = fldstr;
- break;
-
- case FlatFile::Field::LINKED:
- field.type = FlatFile::Field::LINKED;
- field.v_string = fldstr;
- break;
-
- case FlatFile::Field::CALCULATED:
- field.type = FlatFile::Field::CALCULATED;
- field.v_string = fldstr;
- break;
-
- case FlatFile::Field::DATE:
- field.type = FlatFile::Field::DATE;
- struct tm time;
- if (!fldstr.empty()) {
-#ifdef strptime
- if(!strptime(fldstr.c_str(), "%Y/%m/%d", &time)) {
-#else
- if(!StrOps::strptime(fldstr.c_str(), "%Y/%m/%d", &time)) {
-#endif
- myDebug() << "invalid date in field";
- }
- field.v_date.month = time.tm_mon + 1;
- field.v_date.day = time.tm_mday;
- field.v_date.year = time.tm_year + 1900;
- field.v_time.hour = time.tm_hour;
- field.v_time.minute = time.tm_min;
- } else {
- field.v_date.month = 0;
- field.v_date.day = 0;
- field.v_date.year = 0;
- field.v_time.hour = 24;
- field.v_time.minute = 0;
- }
- break;
-
- default:
- myWarning() << "unsupported field type";
- break;
- }
-
- return field;
-}
diff --git a/src/3rdparty/pilotdb/pilotdb.h b/src/3rdparty/pilotdb/pilotdb.h
deleted file mode 100644
index f48d3b1..0000000
--- a/src/3rdparty/pilotdb/pilotdb.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/***************************************************************************
- pilotdb.h
- -------------------
- begin : Thu Nov 20 2003
- Copyright (C) 2003-2009 Robby Stephenson <robby at periapsis.org>
- ***************************************************************************/
-
-/***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License as *
- * published by the Free Software Foundation; either version 2 of *
- * the License or (at your option) version 3 or any later version *
- * accepted by the membership of KDE e.V. (or its successor approved *
- * by the membership of KDE e.V.), which shall act as a proxy *
- * defined in Section 14 of version 3 of the license. *
- * *
- * This program 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program. If not, see <http://www.gnu.org/licenses/>. *
- * *
- ***************************************************************************/
-
-#ifndef PILOTDB_H
-#define PILOTDB_H
-
-#include <map>
-#include <vector>
-
-#include "libpalm/Database.h"
-#include "libflatfile/Field.h"
-
-class QByteArray;
-
-namespace Tellico {
- namespace Export {
-
-/**
- * @author Robby Stephenson
- */
-class PilotDatabase : public PalmLib::Database {
-public:
- PilotDatabase();
- ~PilotDatabase();
-
- QByteArray data();
-
- /**
- * Return the total number of records/resources in this database.
- */
- virtual size_t getNumRecords() const { return m_records.size(); }
-
- /**
- * Return the database's application info block as a Block
- * object. The caller owns the returned object.
- */
- virtual PalmLib::Block getAppInfoBlock() const { return m_app_info; }
-
- /**
- * Set the database's app info block to the contents of the
- * passed Block object.
- */
- virtual void setAppInfoBlock(const PalmLib::Block& new_app_info) { m_app_info = new_app_info; }
-
- /**
- * Return the database's sort info block as a Block
- * object. The caller owns the returned object.
- */
- virtual PalmLib::Block getSortInfoBlock() const { return m_sort_info; }
-
- /**
- * Set the database's sort info block to the contents of the
- * passed Block object.
- */
- virtual void setSortInfoBlock(const PalmLib::Block& new_sort_info) { m_sort_info = new_sort_info; }
-
- /**
- * Return the record identified by the given index. The caller
- * owns the returned RawRecord object.
- */
- virtual PalmLib::Record getRecord(unsigned index) const;
-
- /**
- * Set the record identified by the given index to the given record.
- */
- virtual void setRecord(unsigned index, const PalmLib::Record& rec);
-
- /**
- * Append the given record to the database.
- */
- virtual void appendRecord(const PalmLib::Record& rec);
-
- /**
- * Delete all records
- */
- virtual void clearRecords();
-
- /**
- * returned if the specified (type, ID) combination is not
- * present in the database. The caller owns the returned RawRecord object.
- */
- virtual PalmLib::Resource getResourceByType(PalmLib::pi_uint32_t type, PalmLib::pi_uint32_t id) const;
-
- /**
- * Return the resource present at the given index. NULL is
- * returned if the index is invalid. The caller owns the
- * returned RawRecord object.
- */
- virtual PalmLib::Resource getResourceByIndex(unsigned index) const;
-
- /**
- * Set the resource at given index to passed Resource object.
- */
- virtual void setResource(unsigned index, const PalmLib::Resource& rsrc);
-
- static PalmLib::FlatFile::Field string2field(PalmLib::FlatFile::Field::FieldType type,
- const std::string& fldstr);
-
-protected:
- typedef std::vector<PalmLib::Block *> record_list_t;
- typedef std::map<PalmLib::pi_uint32_t, PalmLib::Record *> uid_map_t;
-
- record_list_t m_records;
- uid_map_t m_uid_map;
-
-private:
- PalmLib::Block m_app_info;
- PalmLib::Block m_sort_info;
- PalmLib::pi_int32_t m_next_record_list_id;
-};
-
- } //end namespace
-} // end namespace
-#endif
diff --git a/src/3rdparty/pilotdb/portability.h b/src/3rdparty/pilotdb/portability.h
deleted file mode 100644
index f5144d6..0000000
--- a/src/3rdparty/pilotdb/portability.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * palm-db-tools: Support Library: String Parsing Utility Functions
- * Copyright (C) 1999-2000 by Tom Dyas (tdyas at users.sourceforge.net)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifh Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __LIBSUPPORT_PORTABILITY_H__
-#define __LIBSUPPORT_PORTABILITY_H__
-
-/*
- * Pull in the correct configuration header.
- */
-
-#include "config.h"
-
-#ifdef _MSC_VER
-/* Borrowed from GLib: Make MSVC more pedantic, this is a recommended
- * pragma list from _Win32_Programming_ by Rector and Newcomer.
- */
-#pragma warning(error:4002)
-#pragma warning(error:4003)
-#pragma warning(1:4010)
-#pragma warning(error:4013)
-#pragma warning(1:4016)
-#pragma warning(error:4020)
-#pragma warning(error:4021)
-#pragma warning(error:4027)
-#pragma warning(error:4029)
-#pragma warning(error:4033)
-#pragma warning(error:4035)
-#pragma warning(error:4045)
-#pragma warning(error:4047)
-#pragma warning(error:4049)
-#pragma warning(error:4053)
-#pragma warning(error:4071)
-#pragma warning(disable:4101)
-#pragma warning(error:4150)
-
-#pragma warning(disable:4244) /* No possible loss of data warnings */
-#pragma warning(disable:4305) /* No truncation from int to char warnings */
-#endif /* _MSC_VER */
-
-/* MSVC is screwed up when it comes to calling base class virtual
- * functions from a subclass. Thus, the following macro which makes
- * calling the superclass nice and simple.
- */
-#ifndef _MSC_VER
-#define SUPERCLASS(namespace, class, function, args) namespace::class::function args
-#else
-#define SUPERCLASS(namespace, class, function, args) this-> class::function args
-#endif
-
-#endif
diff --git a/src/3rdparty/pilotdb/strop.cpp b/src/3rdparty/pilotdb/strop.cpp
deleted file mode 100644
index 142b4b2..0000000
--- a/src/3rdparty/pilotdb/strop.cpp
+++ /dev/null
@@ -1,590 +0,0 @@
-/*
- * palm-db-tools: Support Library: String Parsing Utility Functions
- * Copyright (C) 1999-2000 by Tom Dyas (tdyas at users.sourceforge.net)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifh Floor, Boston, MA 02110-1301 USA
- */
-
-#include "strop.h"
-
-#include <string>
-#include <vector>
-#include <algorithm>
-#include <cctype>
-#include <sstream>
-
-#include "../../tellico_debug.h"
-
-std::ostream* err;
-
-void StrOps::lower(std::string& str)
-{
- for (std::string::iterator p = str.begin(); p != str.end(); ++p) {
- if (isupper(*p))
- *p = tolower(*p);
- }
-}
-
-bool StrOps::string2boolean(const std::string& str)
-{
- std::string value(str);
-
- StrOps::lower(value);
-
- if (value == "on") return true;
- else if (str == "off") return false;
- else if (str == "true") return true;
- else if (str == "t") return true;
- else if (str == "false") return false;
- else if (str == "f") return false;
- else {
- int num = 0;
-
- std::istringstream(str.c_str()) >> num;
- return num != 0 ? true : false;
- }
-}
-
-std::string StrOps::type2string(PalmLib::FlatFile::Field::FieldType t)
-{
- switch (t) {
- case PalmLib::FlatFile::Field::STRING:
- return "string";
-
- case PalmLib::FlatFile::Field::BOOLEAN:
- return "boolean";
-
- case PalmLib::FlatFile::Field::INTEGER:
- return "integer";
-
- case PalmLib::FlatFile::Field::FLOAT:
- return "float";
-
- case PalmLib::FlatFile::Field::DATE:
- return "date";
-
- case PalmLib::FlatFile::Field::TIME:
- return "time";
-
- case PalmLib::FlatFile::Field::DATETIME:
- return "datetime";
-
- case PalmLib::FlatFile::Field::NOTE:
- return "note";
-
- case PalmLib::FlatFile::Field::LIST:
- return "list";
-
- case PalmLib::FlatFile::Field::LINK:
- return "link";
-
- case PalmLib::FlatFile::Field::CALCULATED:
- return "calculated";
-
- case PalmLib::FlatFile::Field::LINKED:
- return "linked";
-
- default:
- // If we don't support the field type, then fake it as a string.
- return "string";
- }
-}
-
-PalmLib::FlatFile::Field::FieldType StrOps::string2type(std::string typestr)
-{
- StrOps::lower(typestr);
- if (typestr == "string")
- return PalmLib::FlatFile::Field::STRING;
- else if (typestr == "str")
- return PalmLib::FlatFile::Field::STRING;
- else if (typestr == "note")
- return PalmLib::FlatFile::Field::NOTE;
- else if (typestr == "bool")
- return PalmLib::FlatFile::Field::BOOLEAN;
- else if (typestr == "boolean")
- return PalmLib::FlatFile::Field::BOOLEAN;
- else if (typestr == "integer")
- return PalmLib::FlatFile::Field::INTEGER;
- else if (typestr == "int")
- return PalmLib::FlatFile::Field::INTEGER;
- else if (typestr == "float")
- return PalmLib::FlatFile::Field::FLOAT;
- else if (typestr == "date")
- return PalmLib::FlatFile::Field::DATE;
- else if (typestr == "time")
- return PalmLib::FlatFile::Field::TIME;
- else if (typestr == "datetime")
- return PalmLib::FlatFile::Field::DATETIME;
- else if (typestr == "list")
- return PalmLib::FlatFile::Field::LIST;
- else if (typestr == "link")
- return PalmLib::FlatFile::Field::LINK;
- else if (typestr == "linked")
- return PalmLib::FlatFile::Field::LINKED;
- else if (typestr == "calculated")
- return PalmLib::FlatFile::Field::CALCULATED;
- else
- myDebug() << "unknown field type";
- return PalmLib::FlatFile::Field::STRING;
-}
-
-std::string StrOps::strip_back(const std::string& str, const std::string& what)
-{
- std::string result(str);
- std::string::reverse_iterator p = result.rbegin();
-
- while (p != result.rend()
- && (std::find(what.begin(), what.end(), *p) != what.end())) ++p;
-
- result.erase(p.base(), result.end());
-
- return result;
-}
-
-std::string StrOps::strip_front(const std::string& str,const std::string& what)
-{
- std::string result(str);
- std::string::iterator p = result.begin();
-
- while (p != result.end()
- && (std::find(what.begin(), what.end(), *p) != what.end())) ++p;
-
- result.erase(result.begin(), p);
-
- return result;
-}
-
-StrOps::string_list_t StrOps::csv_to_array(const std::string& str, char delim, bool quoted_string)
-{
- enum { STATE_NORMAL, STATE_QUOTES } state;
- StrOps::string_list_t result;
- std::string elem;
-
- state = STATE_NORMAL;
- for (std::string::const_iterator p = str.begin(); p != str.end(); ++p) {
- switch (state) {
- case STATE_NORMAL:
- if (quoted_string && *p == '"') {
- state = STATE_QUOTES;
- } else if (*p == delim) {
- result.push_back(elem);
- elem = "";
- } else {
- elem += *p;
- }
- break;
-
- case STATE_QUOTES:
- if (quoted_string && *p == '"') {
- if ((p + 1) != str.end() && *(p+1) == '"') {
- ++p;
- elem += '"';
- } else {
- state = STATE_NORMAL;
- }
- } else {
- elem += *p;
- }
- break;
- }
- }
-
- switch (state) {
- case STATE_NORMAL:
- result.push_back(elem);
- break;
- case STATE_QUOTES:
- myDebug() << "unterminated quotes";
- break;
- }
-
- return result;
-}
-
-StrOps::string_list_t
-StrOps::str_to_array(const std::string& str, const std::string& delim,
- bool multiple_delim, bool handle_comments)
-{
- enum { STATE_NORMAL, STATE_COMMENT, STATE_QUOTE_DOUBLE, STATE_QUOTE_SINGLE,
- STATE_BACKSLASH, STATE_BACKSLASH_DOUBLEQUOTE } state;
- StrOps::string_list_t result;
- std::string elem;
-
- state = STATE_NORMAL;
- for (std::string::const_iterator p = str.begin(); p != str.end(); ++p) {
- switch (state) {
- case STATE_NORMAL:
- if (*p == '"') {
- state = STATE_QUOTE_DOUBLE;
- } else if (*p == '\'') {
- state = STATE_QUOTE_SINGLE;
- } else if (std::find(delim.begin(), delim.end(), *p) != delim.end()) {
- if (multiple_delim) {
- ++p;
- while (p != str.end()
- && std::find(delim.begin(), delim.end(), *p) != delim.end()) {
- ++p;
- }
- --p;
- }
- result.push_back(elem);
- elem = "";
- } else if (*p == '\\') {
- state = STATE_BACKSLASH;
- } else if (handle_comments && *p == '#') {
- state = STATE_COMMENT;
- } else {
- elem += *p;
- }
- break;
-
- case STATE_COMMENT:
- break;
-
- case STATE_QUOTE_DOUBLE:
- if (*p == '"')
- state = STATE_NORMAL;
- else if (*p == '\\')
- state = STATE_BACKSLASH_DOUBLEQUOTE;
- else
- elem += *p;
- break;
-
- case STATE_QUOTE_SINGLE:
- if (*p == '\'')
- state = STATE_NORMAL;
- else
- elem += *p;
- break;
-
- case STATE_BACKSLASH:
- elem += *p;
- state = STATE_NORMAL;
- break;
-
- case STATE_BACKSLASH_DOUBLEQUOTE:
- switch (*p) {
- case '\\':
- elem += '\\';
- break;
-
- case 'n':
- elem += '\n';
- break;
-
- case 'r':
- elem += '\r';
- break;
-
- case 't':
- elem += '\t';
- break;
-
- case 'v':
- elem += '\v';
- break;
-
- case '"':
- elem += '"';
- break;
-
- case 'x':
- {
- char buf[3];
-
- // Extract and check the first hexadecimal character.
- if ((p + 1) == str.end())
- myDebug() << "truncated escape";
- if (! isxdigit(*(p + 1)))
- myDebug() << "invalid hex character";
- buf[0] = *++p;
-
- // Extract and check the second (if any) hex character.
- if ((p + 1) != str.end() && isxdigit(*(p + 1))) {
- buf[1] = *++p;
- buf[2] = '\0';
- } else {
- buf[1] = buf[2] = '\0';
- }
-
- std::istringstream stream(buf);
- stream.setf(std::ios::hex, std::ios::basefield);
- unsigned value;
- stream >> value;
-
- elem += static_cast<char> (value & 0xFFu);
- }
- break;
- }
-
- // Escape is done. Go back to the normal double quote state.
- state = STATE_QUOTE_DOUBLE;
- break;
- }
- }
-
- switch (state) {
- case STATE_NORMAL:
- result.push_back(elem);
- break;
-
- case STATE_QUOTE_DOUBLE:
- myDebug() << "unterminated double quotes";
- break;
-
- case STATE_QUOTE_SINGLE:
- myDebug() << "unterminated single quotes";
- break;
-
- case STATE_BACKSLASH:
- case STATE_BACKSLASH_DOUBLEQUOTE:
- myDebug() << "an escape character must follow a backslash";
- break;
-
- default:
- break;
- }
-
- return result;
-}
-
-PalmLib::pi_uint32_t
-StrOps::get_current_time(void)
-{
- time_t now;
-
- time(&now);
- return static_cast<PalmLib::pi_uint32_t> (now) + PalmLib::pi_uint32_t(2082844800);
-}
-
-char *
-StrOps::strptime(const char *s, const char *format, struct tm *tm)
-{
- char *data = (char *)s;
- char option = false;
-
- while (*format != 0) {
- if (*data == 0)
- return NULL;
- switch (*format) {
- case '%':
- option = true;
- format++;
- break;
- case 'd':
- if (option) {
- tm->tm_mday = strtol(data, &data, 10);
- if (tm->tm_mday < 1 || tm->tm_mday > 31)
- return NULL;
- } else if (*data != 'd') {
- return data;
- }
- option = false;
- format++;
- break;
- case 'm':
- if (option) {
- /* tm_mon between 0 and 11 */
- tm->tm_mon = strtol(data, &data, 10) - 1;
- if (tm->tm_mon < 0 || tm->tm_mon > 11)
- return NULL;
- } else if (*data != 'm') {
- return data;
- }
- option = false;
- format++;
- break;
- case 'y':
- if (option) {
- tm->tm_year = strtol(data, &data, 10);
- if (tm->tm_year < 60) tm->tm_year += 100;
- } else if (*data != 'y') {
- return data;
- }
- option = false;
- format++;
- break;
- case 'Y':
- if (option) {
- tm->tm_year = strtol(data, &data, 10) - 1900;
- } else if (*data != 'Y') {
- return data;
- }
- option = false;
- format++;
- break;
- case 'H':
- if (option) {
- tm->tm_hour = strtol(data, &data, 10);
- if (tm->tm_hour < 0 || tm->tm_hour > 23)
- return NULL;
- } else if (*data != 'H') {
- return data;
- }
- option = false;
- format++;
- break;
- case 'M':
- if (option) {
- tm->tm_min = strtol(data, &data, 10);
- if (tm->tm_min < 0 || tm->tm_min > 59)
- return NULL;
- } else if (*data != 'M') {
- return data;
- }
- option = false;
- format++;
- break;
- default:
- if (option)
- return data;
- if (*data != *format)
- return data;
- format++;
- data++;
- }
- }
- return data;
-}
-
-// Read a line from an istream w/o concern for buffer limitations.
-std::string
-StrOps::readline(std::istream& stream)
-{
- std::string line;
- char buf[1024];
-
- while (1) {
- // Read the next line (or part thereof) from the stream.
- stream.getline(buf, sizeof(buf));
- // Bail out of the loop if the stream has reached end-of-file.
- if ((stream.eof() && !buf[0]) || stream.bad())
- break;
-
- // Append the data read to the result string.
- line.append(buf);
-
- // If the stream is good, then stop. Otherwise, clear the
- // error indicator so that getline will work again.
- if ((stream.eof() && buf[0]) || stream.good())
- break;
- stream.clear();
- }
-
- return line;
-}
-
-std::string
-StrOps::quote_string(std::string str, bool extended_mode)
-{
- std::string result;
- std::ostringstream error;
-
- if (extended_mode) {
- result += '"';
- for (std::string::iterator c = str.begin(); c != str.end(); ++c) {
- switch (*c) {
- case '\\':
- result += '\\';
- result += '\\';
- break;
-
- case '\r':
- result += '\\';
- result += 'r';
- break;
-
- case '\n':
- result += '\\';
- result += 'n';
- break;
-
- case '\t':
- result += '\\';
- result += 't';
- break;
-
- case '\v':
- result += '\\';
- result += 'v';
- break;
-
- case '"':
- result += '\\';
- result += '"';
- break;
-
- default:
- if (isprint(*c)) {
- result += *c;
- } else {
- std::ostringstream buf;
- buf.width(2);
- buf.setf(std::ios::hex, std::ios::basefield);
- buf.setf(std::ios::left);
- buf << ((static_cast<unsigned> (*c)) & 0xFF) << std::ends;
-
- result += "\\x";
- result += buf.str();
- }
- break;
- }
- }
- result += '"';
- } else {
- result += '"';
- for (std::string::iterator c = str.begin(); c != str.end(); ++c) {
- if (*c == '"') {
- result += "\"\"";
- } else if (*c == '\n' || *c == '\r') {
- error << "use extended csv mode for newlines\n";
- *err << error.str();
- myDebug() << error.str().c_str();
- } else {
- result += *c;
- }
- }
- result += '"';
- }
-
- return result;
-}
-
-std::string
-StrOps::concatenatepath(std::string p_Path,
- std::string p_FileName, std::string p_Ext)
-{
- std::string l_FilePath;
-#ifdef WIN32
- if (p_FileName[1] == ':' || p_FileName[0] == '\\')
- return p_FileName;
- else if (p_Path.empty())
- l_FilePath = p_FileName;
- else
- l_FilePath = p_Path + std::string("\\") + p_FileName;
-#else
- if (p_FileName[0] == '/')
- return p_FileName;
- else if (p_Path.empty())
- l_FilePath = p_FileName;
- else
- l_FilePath = p_Path + std::string("/") + p_FileName;
-
-#endif
- if (!p_Ext.empty() && (p_FileName.rfind(p_Ext) == std::string::npos))
- l_FilePath += p_Ext;
-
- return l_FilePath;
-}
diff --git a/src/3rdparty/pilotdb/strop.h b/src/3rdparty/pilotdb/strop.h
deleted file mode 100644
index 8c7c896..0000000
--- a/src/3rdparty/pilotdb/strop.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * palm-db-tools: Support Library: String Parsing Utility Functions
- * Copyright (C) 1999-2000 by Tom Dyas (tdyas at users.sourceforge.net)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifh Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __LIBSUPPORT_STROP_H__
-#define __LIBSUPPORT_STROP_H__
-
-#include <stdexcept>
-#include <vector>
-#include <string>
-#include <sstream>
-#include <time.h>
-#include "libflatfile/Database.h"
-
-namespace StrOps {
-
- // This exception is thrown whenever an error is encountered in
- // csv_to_array and str_to_array.
- class csv_parse_error : public std::runtime_error {
- public:
- csv_parse_error(const std::string& msg) : std::runtime_error(msg) { }
- };
-
- class csv_unterminated_quote : public std::runtime_error {
- public:
- csv_unterminated_quote(const std::string& msg) : std::runtime_error(msg) { }
- };
-
- // The results of any parse are returned as this type.
- typedef std::vector<std::string> string_list_t;
-
-
- /**
- * Convert all uppercase characters in a string to lowercase.
- */
- void lower(std::string& str);
-
- /**
- * Convert a string to a boolean value.
- *
- * @param str The string containing a boolean value to convert.
- */
- bool string2boolean(const std::string& str);
-
- /**
- * Convert a string to a FieldType value.
- *
- * @param typestr The string containing a FieldType value to convert.
- */
- PalmLib::FlatFile::Field::FieldType string2type(std::string typestr);
-
- /**
- * Convert a FieldType value to a string.
- *
- * @param t The FieldType value containing a string to convert.
- */
- std::string type2string(PalmLib::FlatFile::Field::FieldType t);
-
- /**
- * Strip trailing characters from a string.
- *
- * @param str The string to strip characters from.
- * @param what The string containing characters to strip.
- */
- std::string strip_back(const std::string& str, const std::string& what);
-
- /**
- * Strip leading characters from a string.
- *
- * @param str The string to strip characters from.
- * @param what The string containing characters to strip.
- */
- std::string strip_front(const std::string& str, const std::string& what);
-
- /**
- * Convert a string to a target type using a istringstream.
- */
- template<class T>
- inline void convert_string(const std::string& str, T& result) {
- std::istringstream(str.c_str()) >> result;
- }
-
- /**
- * Parse a string in CSV (comman-separated values) format and
- * return it as a list.
- *
- * @param str The string containing the CSV fields.
- * @param delim The field delimiter. Defaults to a comma.
- */
- string_list_t csv_to_array(const std::string& str, char delim = ',', bool quoted_string = true);
-
-
- /**
- * Parse an argv-style array and return it as a list.
- *
- * @param str The string to parse.
- * @param delim String containing the delimiter characters.
- * @param multiple_delim Should multiple delimiters count as one?
- * @param handle_comments Handle # as a comment character.
- */
- string_list_t str_to_array(const std::string& str,
- const std::string& delim,
- bool multiple_delim,
- bool handle_comments);
-
- /**
- * return the current date in the palm format.
- */
- PalmLib::pi_uint32_t get_current_time(void);
-
- /**
- * fill a char array with a tm structure in the format passed.
- * @param s the char array filled.
- * @param format the string of the format to use to print the date.
- * @param tm a pointer to time structure.
- */
- char *strptime(const char *s, const char *format, struct tm *tm);
-
- /**
- * read one line from the input stream of a file
- */
- std::string readline(std::istream& stream);
-
- /**
- * add the quotes to a string
- */
- std::string quote_string(std::string str, bool extended_mode);
-
- /**
- * concatenate the path directory, the file name and the extension
- * to give the file path to a file
- */
- std::string concatenatepath(std::string p_Path, std::string p_FileName,
- std::string p_Ext = std::string(""));
-
-} // namespace StrOps
-
-#endif
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9b71314..0926b72 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -79,7 +79,6 @@ TARGET_LINK_LIBRARIES(tellico
tellicomodels
utils
newstuff
- pilotdb-tellico
rtf2html-tellico
${TELLICO_BTPARSE_LIBS}
${TELLICO_CSV_LIBS}
diff --git a/src/core/dbusinterface.h b/src/core/dbusinterface.h
index 96aa664..ddb988e 100644
--- a/src/core/dbusinterface.h
+++ b/src/core/dbusinterface.h
@@ -64,8 +64,6 @@ public slots:
{ return exportCollection(Export::HTML, KUrl::fromPath(file)); }
Q_SCRIPTABLE bool exportCSV(const QString& file)
{ return exportCollection(Export::CSV, KUrl::fromPath(file)); }
- Q_SCRIPTABLE bool exportPilotDB(const QString& file)
- { return exportCollection(Export::PilotDB, KUrl::fromPath(file)); }
Q_SCRIPTABLE QList<int> selectedEntries() const;
Q_SCRIPTABLE QList<int> filteredEntries() const;
diff --git a/src/exportdialog.cpp b/src/exportdialog.cpp
index b2e641d..996b5b6 100644
--- a/src/exportdialog.cpp
+++ b/src/exportdialog.cpp
@@ -37,7 +37,6 @@
#include "translators/bibtexexporter.h"
#include "translators/bibtexmlexporter.h"
#include "translators/xsltexporter.h"
-#include "translators/pilotdbexporter.h"
#include "translators/alexandriaexporter.h"
#include "translators/onixexporter.h"
#include "translators/gcstarexporter.h"
@@ -124,7 +123,7 @@ ExportDialog::ExportDialog(Tellico::Export::Format format_, Tellico::Data::CollP
setMainWidget(widget);
readOptions();
- if(format_ == Export::Alexandria || format_ == Export::PilotDB) {
+ if(format_ == Export::Alexandria) {
// no encoding options enabled
group2->setEnabled(false);
}
@@ -204,14 +203,6 @@ Tellico::Export::Exporter* ExportDialog::exporter(Tellico::Export::Format format
exporter = new Export::XSLTExporter(coll_);
break;
- case Export::PilotDB:
- {
- Export::PilotDBExporter* pdbExp = new Export::PilotDBExporter(coll_);
- pdbExp->setColumns(Controller::self()->visibleColumns());
- exporter = pdbExp;
- }
- break;
-
case Export::Alexandria:
exporter = new Export::AlexandriaExporter(coll_);
break;
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 32978ff..e37a38c 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -433,9 +433,6 @@ void MainWindow::initActions() {
EXPORT_ACTION(Export::CSV, "file_export_csv", i18n("Export to CSV..."),
i18n("Export to a comma-separated values file"), mimeIcon("text/csv", "text/x-csv"));
- EXPORT_ACTION(Export::PilotDB, "file_export_pilotdb", i18n("Export to PilotDB..."),
- i18n("Export to a PilotDB database"), BarIcon(QLatin1String("palm")));
-
EXPORT_ACTION(Export::Alexandria, "file_export_alexandria", i18n("Export to Alexandria..."),
i18n("Export to an Alexandria library"), BarIcon(QLatin1String("alexandria")));
diff --git a/src/tellicoui.rc b/src/tellicoui.rc
index 6f15410..29e2fad 100644
--- a/src/tellicoui.rc
+++ b/src/tellicoui.rc
@@ -1,6 +1,6 @@
<?xml version = '1.0'?>
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<kpartgui version="34" name="tellico">
+<kpartgui version="35" name="tellico">
<MenuBar>
<Menu name="file">
<text>&File</text>
@@ -56,7 +56,6 @@
<Action name="file_export_zip"/>
<Action name="file_export_html"/>
<Action name="file_export_csv"/>
- <Action name="file_export_pilotdb"/>
<Separator/>
<Action name="file_export_alexandria"/>
<Action name="file_export_bibtex"/>
diff --git a/src/translators/CMakeLists.txt b/src/translators/CMakeLists.txt
index a4838b4..eb2eb5c 100644
--- a/src/translators/CMakeLists.txt
+++ b/src/translators/CMakeLists.txt
@@ -32,7 +32,6 @@ SET(translators_STAT_SRCS
importer.cpp
onixexporter.cpp
pdfimporter.cpp
- pilotdbexporter.cpp
referencerimporter.cpp
risimporter.cpp
tellico_xml.cpp
diff --git a/src/translators/pilotdbexporter.cpp b/src/translators/pilotdbexporter.cpp
deleted file mode 100644
index d0d46d9..0000000
--- a/src/translators/pilotdbexporter.cpp
+++ /dev/null
@@ -1,246 +0,0 @@
-/***************************************************************************
- Copyright (C) 2003-2009 Robby Stephenson <robby at periapsis.org>
- ***************************************************************************/
-
-/***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License as *
- * published by the Free Software Foundation; either version 2 of *
- * the License or (at your option) version 3 or any later version *
- * accepted by the membership of KDE e.V. (or its successor approved *
- * by the membership of KDE e.V.), which shall act as a proxy *
- * defined in Section 14 of version 3 of the license. *
- * *
- * This program 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program. If not, see <http://www.gnu.org/licenses/>. *
- * *
- ***************************************************************************/
-
-#include "pilotdbexporter.h"
-#include "pilotdb/pilotdb.h"
-#include "pilotdb/libflatfile/DB.h"
-
-#include "../collection.h"
-#include "../core/filehandler.h"
-#include "../tellico_debug.h"
-
-#include <klocale.h>
-#include <KConfigGroup>
-#include <kglobal.h>
-#include <kcharsets.h>
-
-#include <QGroupBox>
-#include <QCheckBox>
-#include <QTextCodec>
-#include <QDateTime>
-#include <QVBoxLayout>
-
-using namespace Tellico;
-using Tellico::Export::PilotDBExporter;
-
-PilotDBExporter::PilotDBExporter(Data::CollPtr coll_) : Tellico::Export::Exporter(coll_),
- m_backup(true),
- m_widget(0),
- m_checkBackup(0) {
-}
-
-QString PilotDBExporter::formatString() const {
- return i18n("PilotDB");
-}
-
-QString PilotDBExporter::fileFilter() const {
- return i18n("*.pdb|Pilot Database Files (*.pdb)") + QLatin1Char('\n') + i18n("*|All Files");
-}
-
-bool PilotDBExporter::exec() {
- Data::CollPtr coll = collection();
- if(!coll) {
- return false;
- }
-
- // This is something of a hidden preference cause I don't want to put it in the GUI right now
- // Latin1 by default
- QTextCodec* codec = 0;
- {
- // Latin1 is default
- KConfigGroup group(KGlobal::config(), QString::fromLatin1("ExportOptions - %1").arg(formatString()));
- codec = KGlobal::charsets()->codecForName(group.readEntry("Charset"));
- }
- if(!codec) {
- myWarning() << "no QTextCodec!";
- return false;
-#ifndef NDEBUG
- } else {
- myDebug() << "encoding with " << codec->name();
-#endif
- }
-
- // DB 0.3.x format
- PalmLib::FlatFile::DB db;
-
- // set database title
- db.title(codec->fromUnicode(coll->title()).data());
-
- // set backup option
-// db.setOption("backup", (m_checkBackup && m_checkBackup->isChecked()) ? "true" : "false");
-
- // all fields are added
- // except that only one field of type NOTE
- bool hasNote = false;
- Data::FieldList outputFields; // not all fields will be output
- foreach(Data::FieldPtr fIt, fields()) {
- switch(fIt->type()) {
- case Data::Field::Choice:
- // the charSeparator is actually defined in DB.h
- db.appendField(codec->fromUnicode(fIt->title()).data(), PalmLib::FlatFile::Field::LIST,
- codec->fromUnicode(fIt->allowed().join(QLatin1String("/"))).data());
- outputFields.append(fIt);
- break;
-
- case Data::Field::Number:
- // the DB only supports single values of integers
- if(fIt->hasFlag(Data::Field::AllowMultiple)) {
- db.appendField(codec->fromUnicode(fIt->title()).data(), PalmLib::FlatFile::Field::STRING);
- } else {
- db.appendField(codec->fromUnicode(fIt->title()).data(), PalmLib::FlatFile::Field::INTEGER);
- }
- outputFields.append(fIt);
- break;
-
- case Data::Field::Bool:
- db.appendField(codec->fromUnicode(fIt->title()).data(), PalmLib::FlatFile::Field::BOOLEAN);
- outputFields.append(fIt);
- break;
-
- case Data::Field::Para:
- if(hasNote) { // only one is allowed, according to palm-db-tools documentation
- myDebug() << "adding note as string";
- db.appendField(codec->fromUnicode(fIt->title()).data(), PalmLib::FlatFile::Field::STRING);
- } else {
- myDebug() << "adding note";
- db.appendField(codec->fromUnicode(fIt->title()).data(), PalmLib::FlatFile::Field::NOTE);
- hasNote = true;
- }
- outputFields.append(fIt);
- break;
-
- case Data::Field::Date:
- db.appendField(codec->fromUnicode(fIt->title()).data(), PalmLib::FlatFile::Field::DATE);
- outputFields.append(fIt);
- break;
-
- case Data::Field::Image:
- // don't include images
- myDebug() << "skipping " << fIt->title() << "image field";
- break;
-
- default:
- db.appendField(codec->fromUnicode(fIt->title()).data(), PalmLib::FlatFile::Field::STRING);
- outputFields.append(fIt);
- break;
- }
- }
-
- // add view with visible fields
- if(m_columns.count() > 0) {
- PalmLib::FlatFile::ListView lv;
- lv.name = codec->fromUnicode(i18n("View Columns")).data();
- foreach(const QString& column, m_columns) {
- PalmLib::FlatFile::ListViewColumn col;
- col.field = coll->fieldTitles().indexOf(column);
- lv.push_back(col);
- }
- db.appendListView(lv);
- }
- db.doneWithSchema();
-
- FieldFormat::Request format = (options() & Export::ExportFormatted ?
- FieldFormat::ForceFormat :
- FieldFormat::AsIsFormat);
-
- QRegExp br(QLatin1String("<br/?>"));
- QRegExp tags(QLatin1String("<.*>"));
- tags.setMinimal(true);
-
- QString value;
- foreach(Data::EntryPtr entryIt, entries()) {
- PalmLib::FlatFile::Record record;
- unsigned i = 0;
- foreach(Data::FieldPtr fIt, outputFields) {
- value = entryIt->formattedField(fIt->name(), format);
-
- if(fIt->type() == Data::Field::Date) {
- QStringList s = value.split(QLatin1Char('-'), QString::KeepEmptyParts);
- bool ok = true;
- int y = s.count() > 0 ? s[0].toInt(&ok) : QDate::currentDate().year();
- if(!ok) {
- y = QDate::currentDate().year();
- }
- int m = s.count() > 1 ? s[1].toInt(&ok) : 1;
- if(!ok) {
- m = 1;
- }
- int d = s.count() > 2 ? s[2].toInt(&ok) : 1;
- if(!ok) {
- d = 1;
- }
- QDate date(y, m, d);
- value = date.toString(QLatin1String("yyyy/MM/dd"));
- } else if(fIt->type() == Data::Field::Para) {
- value.replace(br, QLatin1String("\n"));
- value.remove(tags);
- }
- // the number of fields in the record must match the number of fields in the database
- record.appendField(PilotDatabase::string2field(db.field_type(i),
- value.isEmpty() ? std::string() : codec->fromUnicode(value).data()));
- ++i;
- }
- // Add the record to the database.
- db.appendRecord(record);
- }
-
- PilotDatabase pdb;
- db.outputPDB(pdb);
-
- return FileHandler::writeDataURL(url(), pdb.data(), options() & Export::ExportForce);
-}
-
-QWidget* PilotDBExporter::widget(QWidget* parent_) {
- if(m_widget) {
- return m_widget;
- }
-
- m_widget = new QWidget(parent_);
- QVBoxLayout* l = new QVBoxLayout(m_widget);
-
- QGroupBox* gbox = new QGroupBox(i18n("PilotDB Options"), m_widget);
- QVBoxLayout* vlay = new QVBoxLayout(gbox);
-
- m_checkBackup = new QCheckBox(i18n("Set PDA backup flag for database"), gbox);
- m_checkBackup->setChecked(m_backup);
- m_checkBackup->setWhatsThis(i18n("Set PDA backup flag for database"));
-
- vlay->addWidget(m_checkBackup);
-
- l->addWidget(gbox);
- l->addStretch(1);
- return m_widget;
-}
-
-void PilotDBExporter::readOptions(KSharedConfigPtr config_) {
- KConfigGroup group(config_, QString::fromLatin1("ExportOptions - %1").arg(formatString()));
- m_backup = group.readEntry("Backup", m_backup);
-}
-
-void PilotDBExporter::saveOptions(KSharedConfigPtr config_) {
- KConfigGroup group(config_, QString::fromLatin1("ExportOptions - %1").arg(formatString()));
- m_backup = m_checkBackup->isChecked();
- group.writeEntry("Backup", m_backup);
-}
-
diff --git a/src/translators/pilotdbexporter.h b/src/translators/pilotdbexporter.h
deleted file mode 100644
index bc663d1..0000000
--- a/src/translators/pilotdbexporter.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/***************************************************************************
- Copyright (C) 2003-2009 Robby Stephenson <robby at periapsis.org>
- ***************************************************************************/
-
-/***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License as *
- * published by the Free Software Foundation; either version 2 of *
- * the License or (at your option) version 3 or any later version *
- * accepted by the membership of KDE e.V. (or its successor approved *
- * by the membership of KDE e.V.), which shall act as a proxy *
- * defined in Section 14 of version 3 of the license. *
- * *
- * This program 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program. If not, see <http://www.gnu.org/licenses/>. *
- * *
- ***************************************************************************/
-
-#ifndef TELLICO_PILOTDBEXPORTER_H
-#define TELLICO_PILOTDBEXPORTER_H
-
-class QCheckBox;
-
-#include "exporter.h"
-
-#include <QStringList>
-
-namespace Tellico {
- namespace Export {
-
-/**
- * @author Robby Stephenson
- */
-class PilotDBExporter : public Exporter {
-Q_OBJECT
-
-public:
- PilotDBExporter(Data::CollPtr coll);
-
- virtual bool exec();
- virtual QString formatString() const;
- virtual QString fileFilter() const;
-
- virtual QWidget* widget(QWidget* parent);
- virtual void readOptions(KSharedConfigPtr cfg);
- virtual void saveOptions(KSharedConfigPtr cfg);
-
- void setColumns(const QStringList& columns) { m_columns = columns; }
-
-private:
- bool m_backup;
-
- QWidget* m_widget;
- QCheckBox* m_checkBackup;
- QStringList m_columns;
-};
-
- } // end namespace
-} // end namespace
-#endif
diff --git a/src/translators/translators.h b/src/translators/translators.h
index 04ddd44..5735347 100644
--- a/src/translators/translators.h
+++ b/src/translators/translators.h
@@ -75,7 +75,7 @@ namespace Tellico {
CSV,
XSLT,
Text,
- PilotDB,
+ PilotDB, // Deprecated
Alexandria,
ONIX,
GCstar
diff --git a/tellico.appdata.xml b/tellico.appdata.xml
index f496f4c..27480b2 100644
--- a/tellico.appdata.xml
+++ b/tellico.appdata.xml
@@ -272,26 +272,26 @@
<li xml:lang="tr">MODS, Bibtex, RIS, CSV, PDF üst verisi ve pek çok diğer biçimi içe aktarır</li>
<li xml:lang="uk">Імпортування метаданих MODS, Bibtex, RIS, CSV, PDF та даних у багатьох інших форматах.</li>
<li xml:lang="x-test">xxImports MODS, Bibtex, RIS, CSV, PDF metadata, and many other formatsxx</li>
- <li>Exports to Bibtex, ONIX, CSV, HTML, PilotDB, and other formats</li>
- <li xml:lang="bs">Izvozi u Bibtex, ONIX, CSV, HTML, PilotDB, i druge formate</li>
- <li xml:lang="ca">Exporta a Bibtex, ONIX, CSV, HTML, PilotDB i altres formats</li>
- <li xml:lang="da">Eksporterer til Bibtex, ONIX, CSV, HTML, PilotDB og andre formater</li>
- <li xml:lang="de">Export zu Bibtex, ONIX, CSV, HTML, PilotDB, und andere Formate</li>
- <li xml:lang="en-GB">Exports to Bibtex, ONIX, CSV, HTML, PilotDB, and other formats</li>
- <li xml:lang="es">Exporta a Bibtex, ONIX, CSV, HTML, PilotDB, y otros formatos</li>
- <li xml:lang="et">Eksport Bibtexi, ONIX-i, CSV, HTML-i, PilotDB ja veel paljudesse vormingutesse</li>
- <li xml:lang="fr">Exporte vers Bibtex, ONIX, CSV, HTML, PilotDB, et beaucoup d'autres formats</li>
- <li xml:lang="ia">Il exporta a Bibtex, ONIX, CV, HTML, PilotDB, e altere formatos</li>
- <li xml:lang="nl">Exporteert naar Bibtex, ONIX, CSV, HTML, PilotDB en andere formaten</li>
- <li xml:lang="pl">Eksportowanie Bibtex, ONIX, CSV, HTML, PilotDB i innych formatów</li>
- <li xml:lang="pt">Exporta para o Bibtex, ONIX, CSV, HTML, PilotDB, entre outros formatos</li>
- <li xml:lang="pt-BR">Exporta para o Bibtex, ONIX, CSV, HTML, PilotDB, entre outros formatos</li>
- <li xml:lang="sk">Exportuje do Bibtex, ONIX, CSV, HTML, PilotDB a iných formátov</li>
- <li xml:lang="sl">Zna izvoziti v Bibtex, ONIX, CSV, HTML, PilotDB in druge vrste datotek</li>
- <li xml:lang="sv">Exporterar till Bibtex, ONIX, CSV, HTML, PilotDB och andra format</li>
- <li xml:lang="tr">Bibtex, ONIX, CSV, HTML, PilotDB ve pek çok diğer biçimi dışa aktarır</li>
- <li xml:lang="uk">Експортування даних у форматах Bibtex, ONIX, CSV, HTML, PilotDB тощо.</li>
- <li xml:lang="x-test">xxExports to Bibtex, ONIX, CSV, HTML, PilotDB, and other formatsxx</li>
+ <li>Exports to Bibtex, ONIX, CSV, HTML, and other formats</li>
+ <li xml:lang="bs">Izvozi u Bibtex, ONIX, CSV, HTML, i druge formate</li>
+ <li xml:lang="ca">Exporta a Bibtex, ONIX, CSV, HTML i altres formats</li>
+ <li xml:lang="da">Eksporterer til Bibtex, ONIX, CSV, HTML og andre formater</li>
+ <li xml:lang="de">Export zu Bibtex, ONIX, CSV, HTML, und andere Formate</li>
+ <li xml:lang="en-GB">Exports to Bibtex, ONIX, CSV, HTML, and other formats</li>
+ <li xml:lang="es">Exporta a Bibtex, ONIX, CSV, HTML, y otros formatos</li>
+ <li xml:lang="et">Eksport Bibtexi, ONIX-i, CSV, HTML-i ja veel paljudesse vormingutesse</li>
+ <li xml:lang="fr">Exporte vers Bibtex, ONIX, CSV, HTML, et beaucoup d'autres formats</li>
+ <li xml:lang="ia">Il exporta a Bibtex, ONIX, CV, HTML, e altere formatos</li>
+ <li xml:lang="nl">Exporteert naar Bibtex, ONIX, CSV, HTML en andere formaten</li>
+ <li xml:lang="pl">Eksportowanie Bibtex, ONIX, CSV, HTML i innych formatów</li>
+ <li xml:lang="pt">Exporta para o Bibtex, ONIX, CSV, HTML, entre outros formatos</li>
+ <li xml:lang="pt-BR">Exporta para o Bibtex, ONIX, CSV, HTML, entre outros formatos</li>
+ <li xml:lang="sk">Exportuje do Bibtex, ONIX, CSV, HTML a iných formátov</li>
+ <li xml:lang="sl">Zna izvoziti v Bibtex, ONIX, CSV, HTML in druge vrste datotek</li>
+ <li xml:lang="sv">Exporterar till Bibtex, ONIX, CSV, HTML och andra format</li>
+ <li xml:lang="tr">Bibtex, ONIX, CSV, HTML ve pek çok diğer biçimi dışa aktarır</li>
+ <li xml:lang="uk">Експортування даних у форматах Bibtex, ONIX, CSV, HTML тощо.</li>
+ <li xml:lang="x-test">xxExports to Bibtex, ONIX, CSV, HTML, and other formatsxx</li>
<li>Imports information directly from Amazon.com, IMDb, z39.50 servers, PubMed, SRU servers, CrossRef.org, various other websites, and from external scripts</li>
<li xml:lang="bs">Uvozi informacije direktno sa Amazon.com, IMDb, z39.50 servera, PubMed, SRU servera, CrossRef.org, različitih drugih web stranica, i iz vanjskih skripti</li>
<li xml:lang="ca">Importa informació directament des d'Amazon.com, IMDb, servidors z39.50, PubMed, servidors SRU, CrossRef.org, altres llocs web, i des d'scripts externs</li>
More information about the kde-doc-english
mailing list