enum {
STACKSIZE = 2048 * sizeof(void*),
};
/* Keywords */
typedef enum {
Category,
Cddata,
Cmd,
File,
Include,
Key,
Lyrics,
Part,
Path,
Performance,
Recording,
Root,
Search,
Soloists,
Time,
Track,
Work,
Ntoken, /* Initializer for ntoken */
Eof = -1,
Txt = -2,
BraceO = -3,
BraceC = -4,
Equals = -5,
Newcat = -6,
} Type;
typedef struct Object Object;
typedef struct Catset Catset;
typedef struct Token Token;
typedef struct Cmdlist Cmdlist;
/* Token-only types */
typedef enum {
Obj,
Cat,
} Kind;
struct Catset {
uchar *bitpiece; /* mallocated */
int nbitpiece;
};
struct Token {
char *name;
Kind kind;
long value;
char *kname;
Catset categories;
};
typedef enum {
Hierarchy,
Typelist,
Nlisttype,
} Listtype;
struct Cmdlist {
int flag;
char *name;
};
#define KEYLEN 128
struct Object {
Type type;
int tabno; /* entry in object table */
Object *parent;
Object **children; /* mallocated */
Object **catparents;
Object *orig; /* back pointer from search object */
int nchildren;
int ncatparents;
Catset categories; /* was int */
int flags;
int num; /* for enumerations */
char *value; /* mallocated */
char key[KEYLEN];
char *path; /* mallocated */
};
#define Sort 0x01
#define Enum 0x02
#define Hier 0x04
#define Elab 0x10 /* elaborated rune string */
extern Token *tokenlist;
extern int ncat;
extern Object **catobjects;
extern Biobuf *f;
extern char *file;
extern Object *root;
extern int ntoken;
extern Object **otab; // object table
extern int notab; // no of entries used
extern int sotab; // no of entries mallocated
extern int hotab; // no of holes in tab
extern char *user;
void io(void *);
long printchildren(char*, int, Object*);
long printdigest(char*, int, Object*);
long printfiles(char*, int, Object*);
long printfulltext(char*, int, Object*);
long printkey(char*, int, Object*);
long printminiparentage(char*, int, Object*);
long printparent(char*, int, Object*);
long printparentage(char*, int, Object*);
long printtext(char*, int, Object*);
long printtype(char*, int, Object*);
void reread(void);
void listfiles(Object *o);
|