⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datastruct.h

📁 微软的基于HMM的人脸识别原代码, 非常经典的说
💻 H
字号:

/* datastruct.h
 *
 *	(C) Copyright May  7 1995, Edmond J. Breen.
 *		   ALL RIGHTS RESERVED.
 * This code may be copied for personal, non-profit use only.
 *
 */

#define _need_eic_ptr

#include "sys/types.h"

#undef _need_eic_ptr

#include "stab.h"

#include "eicval.h"


typedef struct {
    int n;
    val_t * val;
}eicstack_t;

typedef struct {
    unsigned opcode;
    val_t  val;
    int ext;
    unsigned short line;
}inst_t;


typedef struct {
    unsigned int nextinst;  /* next instruction */
    unsigned int binst;     /* physical size */
    inst_t * inst;          /* instructions */
    char * Filename;        /* file with source code */
}code_t;

/* methods for code */
#define opcode(C,i)   ((C)->inst[i].opcode)
#define setopcode(C,i,y) (opcode(C,i) = y)
#define ivalcode(C,i) ((C)->inst[i].val.ival)
#define pvalcode(C,i) ((C)->inst[i].val.p.p)
#define nextinst(C)   ((C)->nextinst)
#define instline(C,i) ((C)->inst[i].line)
#define codeName(C)   (C)->Filename

typedef struct extern_t {
    char * name;
    type_expr * type;
    int  n;
    unsigned *loc;
    struct extern_t *nxt;
} extern_t;

/* methods for extern_t */
#define crt_extern()    xcalloc(sizeof(extern_t),1)
#define getExtName(x)   ((x)->name)
#define setExtName(x,y) ((x)->name = y)
#define getExtType(x)   ((x)->type)
#define setExtType(x,y) ((x)->type = y) 
#define getExtNext(x)   ((x)->nxt)
#define setExtNext(x,y) ((x)->nxt = y)


typedef struct {
    char cl;           /* closed flag */
    int n;             /* number of members */
    int tsize;         /* total size in bytes of struct */
    int align;         /* alignment of structure */
    type_expr **type;  /* member types */
    char **id;         /* member names */
    int *offset;       /* offsets to members data position*/
    int ntags;         /* number of tags */
    type_expr **tag;   /* tag types */
}struct_t;


typedef struct {
    unsigned short tok;
    int tab;		     /* name space table */
    char pflag;              /* processed flag */
    char sclass;             /* storage class */
    char typequal;           /* type qualifier */
    struct symentry_t * sym;
    code_t code;
    type_expr * type;
    val_t val;
}token_t;


/*CUT symEntry*/
typedef struct symentry_t  {
    unsigned int entry;        /* entry number */
    struct symentry_t *next;   /* link to next symentry */
    char *id;                  /* pointer to identifier string */
    char sclass;               /* storage class code */
    char typequal;             /* type qualifier */
    char level;                /* scope level */
    char nspace;               /* name space identifier */
    char ass;                  /* used to flag assignment */
    type_expr * type;          /* object type */
    val_t  val;                /* symbol value information */
    char *pname;               /* previous file name */
    char *fname;               /* file name pointer */
}symentry_t;
/*END CUT*/

typedef struct {
    stab_t stab;
    
    int level;
    code_t CODE;
    eicstack_t ARgar;        /* for garbage collection of AR units*/
    unsigned int ARsize,sp;
    AR_t *AR;   		 /* static activation record */
    unsigned int LARsize,lsp;
    AR_t *LAR;
    extern_t *link;
    
}environ_t;

#define getenvcode(env)  ((env)->CODE)

typedef struct {
    int n;                  /* number of enumerators */
    int *eval;              /* array of enumerator values */
    symentry_t **syms;      /* list of symbol tabel entries */
}enum_t;

typedef struct {
    int hsize;
    symentry_t **htab;
}hashtab_t;










⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -