146 lines
4.3 KiB
C
146 lines
4.3 KiB
C
#ifndef _tagUtils_h
|
|
#define _tagUtils_h
|
|
|
|
#include "fortran.h"
|
|
#include "fort.h"
|
|
/* #include "Sheet.h" */
|
|
/*
|
|
** The following describe two database files:
|
|
** The tag list file
|
|
** The comment list file
|
|
**
|
|
** the tag list file consists of at least IDBSIZ records.
|
|
**
|
|
** 1 : header tag for sequence 1
|
|
** 2 : header tag for sequence 2
|
|
** ...
|
|
** IDBSIZ-1: header tag for sequence IDBSIZ-1:
|
|
** IDBSIZ : descriptor record defining MAX_TAG
|
|
** IDBSIZ+1: supplimentary tags
|
|
** ...
|
|
** MAX_TAG : supplimentary tags
|
|
**
|
|
** the comment list file consists of at least 1 record.
|
|
**
|
|
** 1 : descriptor record defining MAX_COM
|
|
** 2 : supplimentary comment
|
|
** ...
|
|
** MAX_COM : supplimentary comment
|
|
**
|
|
*/
|
|
|
|
#define COMMENT_LENGTH 40
|
|
/* COMMENT_LENGTH is hard coded in dbsysnew.f */
|
|
/* grep for COMMENT_LENGTH */
|
|
#define FILE_NAME_LENGTH 18
|
|
/* FILE_NAME_LENGTH is hard coded in dbsysnew.f */
|
|
/* grep for FILE_NAME_LENGTH */
|
|
|
|
typedef int_f tag_id;
|
|
typedef int_f comment_id;
|
|
|
|
/*
|
|
** element in tag list
|
|
*/
|
|
typedef union {
|
|
char c[4];
|
|
int_f i;
|
|
} tag_types;
|
|
|
|
typedef struct _tagRecord{
|
|
int_f position; /* position in sequence */
|
|
int_f length; /* length of tag */
|
|
tag_types type;
|
|
comment_id comment; /* index to comment */
|
|
tag_id next; /* link to next in structure */
|
|
} tagRecord;
|
|
|
|
/*
|
|
** comment chain
|
|
*/
|
|
typedef struct _commentStruct{
|
|
char comment[COMMENT_LENGTH];
|
|
comment_id next;
|
|
} commentStruct;
|
|
|
|
typedef struct _tagstruct{
|
|
/*
|
|
** Data from the original file
|
|
*/
|
|
tagRecord tagrec;
|
|
/*
|
|
** Data for database management
|
|
*/
|
|
tag_id original_tag_id;
|
|
char *newcomment;
|
|
int newcommentlen;
|
|
long flags;
|
|
int time;
|
|
struct _tagstruct *next;
|
|
} tagStruct,*tagptr;
|
|
|
|
#define TAG_UNCHANGED (0)
|
|
#define TAG_POSITION_CHANGED (1L<<1)
|
|
#define TAG_LENGTH_CHANGED (1L<<2)
|
|
#define TAG_TYPE_CHANGED (1L<<3)
|
|
#define TAG_COMMENT_CHANGED (1L<<4)
|
|
#define TAG_INSERTED (1L<<5)
|
|
#define TAG_DELETED (1L<<6)
|
|
#define TAG_COMMENT_IN_MEMORY (1L<<7)
|
|
|
|
#define TAG_MALLOC(s) (char *)malloc(s)
|
|
#define TAG_FREE(c) free(c)
|
|
|
|
#define TAG_TYPE_INSERT "*INS"
|
|
#define TAG_TYPE_DELETE "*DEL"
|
|
#define TAG_TYPE_LCUT "*LC*"
|
|
#define TAG_TYPE_RCUT "*RC*"
|
|
#define TAG_TYPE_RAWDATA "*RAW"
|
|
|
|
#include "edUtils.h"
|
|
|
|
/* define external routines */
|
|
extern void force_comment(tagStruct *t);
|
|
|
|
/* comment interface */
|
|
extern tagStruct *readTagList(int seq);
|
|
extern void writeTagList(EdStruct *xx, int seq);
|
|
extern void destroyTagList(tagStruct *s);
|
|
|
|
extern void createTag(EdStruct *xx);
|
|
extern void editTag(EdStruct *xx);
|
|
extern void deleteTag(EdStruct *xx);
|
|
/* extern void getTagSplodge(EdStruct *xx, int seq, int pos, int width, XawSheetInk *ink); */
|
|
|
|
extern void insertTag(EdStruct *xx, int seq, tagStruct *t);
|
|
extern tagStruct *newTag();
|
|
/* this gives me lots of problems...why?
|
|
extern char normaliseBase(EdStruct *xx,int seq,char deletedBase);
|
|
*/
|
|
|
|
extern void tagInsertBase(EdStruct *xx,int seq,int pos,char *base);
|
|
extern void tagDeleteBase(EdStruct *xx,int seq,int pos,char *base);
|
|
extern void tagReplaceBase(EdStruct *xx,int seq,int pos,char *dbse,char *ibse);
|
|
extern tagStruct *findTag(EdStruct *xx,int seq,int pos);
|
|
extern int origpos(EdStruct *xx, int seq, int pos);
|
|
extern void getLeftCutOff(EdStruct *xx,int seq, int width, char *str);
|
|
extern void getRightCutOff(EdStruct *xx,int seq, int width, char *str);
|
|
extern char *get_comment(comment_id cp);
|
|
extern int lenLCut(EdStruct *xx, int seq);
|
|
extern int lenRCut(EdStruct *xx, int seq);
|
|
extern void getLCut(EdStruct *xx,int seq, int pos, int width, char *str);
|
|
extern void getRCut(EdStruct *xx,int seq, int pos, int width, char *str);
|
|
extern tagStruct *findTagByType(EdStruct *xx, int seq, char *type);
|
|
extern char normaliseBase(EdStruct *xx,int seq,char deletedBase);
|
|
extern void dump_tags(EdStruct *xx, int seq);
|
|
extern void setButtonName(Widget w, char *c);
|
|
extern void createTagTypeMenu(Widget parent, void (*call_back)() );
|
|
extern void delete_comment (comment_id cp);
|
|
extern comment_id put_comment(char *c);
|
|
extern int read_tag(tag_id n, tagRecord *t);
|
|
extern int invokeTagEditor(char *type_id, char *newType, char *tagComment, char **newComment);
|
|
extern int write_tag(tag_id n, tagRecord t);
|
|
extern tag_id get_free_tag();
|
|
extern void delete_tag_rec(tag_id t);
|
|
|
|
#endif /* _tagUtils_h */
|