/* interface for citation routines */

#define REF_AUTHOR	'A'
#define REF_TITLE	'T'
#define REF_DATE	'D'
#define REF_REPORT	'R'
#define REF_URL		'U'
#define REF_ABSTRACT	'X'
#define REF_CATEGORY	'Y'
#define REF_KEYWORDS	'K'
#define REF_INST	'I'
#define REF_LASTMOD	'Z'

#define ABS_SIZE 16384

typedef struct {
   char *author;
   char *trId;
   char *poster;
   char *title;
   char *date;
   char *modified;
   char *keywords;
   char *categories;
   char *abstract;
   char *url;
   char *org;
   char *filepath;
} Citation, *CitationPtr;

void freeCitation (CitationPtr C);
CitationPtr initCitation ();
CitationPtr read_one_citation (FILE *fp);
int  write_one_citation (FILE *fp, CitationPtr C);
int  readEntry (FILE *fp, char *buffer);

char *getAuthor  (CitationPtr C);
char *getTrId    (CitationPtr C);
char *getPoster  (CitationPtr C);
char *getTitle   (CitationPtr C);
char *getDate    (CitationPtr C);
char *getModDate    (CitationPtr C);
char *getKeywords (CitationPtr C);
char *getCategories (CitationPtr C);
char *getAbstract (CitationPtr C);
char *getUrl      (CitationPtr C);
char *getOrg      (CitationPtr C);
char *getFilepath (CitationPtr C);

