kde-extraapps/okular/generators/plucker/unpluck/unpluckint.h

176 lines
5.1 KiB
C
Raw Normal View History

/* -*- mode: c; indent-tabs-mode: nil; -*-
* $Id: unpluckint.h,v 1.5 2003/12/28 20:59:21 chrish Exp $
*
* unpluck -- a library to read Plucker data files
* Copyright (c) 2002, Bill Janssen
*
* 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, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#ifndef UNPLUGINT_H
#define UNPLUGINT_H
/*
* This header file should be included after an #include of glib.h
*/
#define PLKR_TIMEADJUST 2082848400 /* difference in seconds between
Palm timebase of 12 AM Jan 1, 1904,
and UNIX timebase of 12 AM Jan 1, 1970 */
#define MAX_RESERVED 8
#define OWNER_ID_HASH_LEN 40
#ifndef MAX
#define MAX(a,b) (((a)>(b))?(a):(b))
#endif
#ifndef MIN
#define MIN(a,b) (((a)<(b))?(a):(b))
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
#define READ_BIGENDIAN_SHORT(p) (((p)[0] << 8)|((p)[1]))
#define READ_BIGENDIAN_LONG(p) (((p)[0] << 24)|((p)[1] << 16)|((p)[2] << 8)|((p)[3]))
typedef enum {
PLKR_HOME_NAME = 0,
PLKR_URLS_INDEX_NAME = 2,
PLKR_DEFAULT_CATEGORY_NAME = 3,
PLKR_METADATA_NAME = 4
} ReservedRecordName;
typedef struct {
int uid;
ReservedRecordName name;
} ReservedRecordEntry;
typedef enum {
PLKR_MDTYPE_DEFAULTCHARSET = 1,
PLKR_MDTYPE_EXCEPTCHARSETS = 2,
PLKR_MDTYPE_OWNERIDCRC = 3,
PLKR_MDTYPE_AUTHOR = 4,
PLKR_MDTYPE_TITLE = 5,
PLKR_MDTYPE_PUBLICATIONTIME = 6
} MetadataTypecodes;
typedef enum {
PLKR_COMPRESSION_DOC = 1,
PLKR_COMPRESSION_ZLIB = 2
} plkr_CompressionType;
typedef struct plkr_DataRecord_s plkr_DataRecord;
/* A structure to hold information about each record */
struct plkr_DataRecord_s {
long offset;
int size; /* size in DB */
int uncompressed_size; /* size of compressed portion, when uncompressed */
int cached_size; /* size of cached buffer, if cache is non-NULL */
int uid;
int nparagraphs;
plkr_DataRecordType type;
unsigned char *cache; /* cache of uncompressed full record */
int charset_mibenum;
};
/* The main data structure for the document */
struct plkr_Document_s {
plkr_DBHandle handle;
char *name; /* short name in header */
char *title; /* title in metadata, if any */
char *author; /* author in metadata, if any */
time_t publication_time; /* from metadata, if at all */
time_t creation_time; /* from header */
time_t modification_time;
plkr_CompressionType compression;
int nrecords;
plkr_DataRecord *records;
int max_record_size;
int home_record_uid;
int default_category_record_uid;
int metadata_record_uid;
int urls_index_record_uid;
char **urls;
int nurls;
plkr_CategoryList default_categories;
int default_charset_mibenum;
int owner_id_required; /* 1 for yes, 0 for no */
unsigned char owner_id_key[40];
};
/***********************************************************************/
/***********************************************************************/
/***** *****/
/***** Some simple utility routines so we don't need GLib *****/
/***** *****/
/***********************************************************************/
/***********************************************************************/
typedef struct HashTable HashTable;
void _plkr_message (
const char *formatSpec,
...
)
#ifdef __GNUC__
__attribute__ ((format (printf, 1, 2)))
#endif
;
/* Display the message to stderr */
char *_plkr_strndup (
char *str,
int len
);
/* return a freshly-malloced copy of str */
HashTable *_plkr_NewHashTable (
int size
);
/* create an instance of a string-keyed hash table and return it.
"size" is the number of buckets to start with -- should be prime. */
void *_plkr_FindInTable (
HashTable * ht,
char *key
);
/* lookup the specified "key" in the specified "ht". */
void *_plkr_RemoveFromTable (
HashTable * ht,
char *key
);
/* remove the entry with "key" from the table, if present, and return
the value as the result. */
int _plkr_AddToTable (
HashTable * ht,
char *key,
void *obj
);
/* Add the specified "obj" to the table with key "key". Returns
0 if key is already in table (and doesn't add "obj"), and returns
1 if key was added to table. */
#endif