X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=apps%2FHawk%2FCVEiCL%2FEiC%2Fsrc%2Ffunc.c;fp=apps%2FHawk%2FCVEiCL%2FEiC%2Fsrc%2Ffunc.c;h=0000000000000000000000000000000000000000;hb=e4c14cdbdf2fe805e79cd96ded236f57e7b89060;hp=5d831257e77dfed2dc8851594621ea3855aa0efc;hpb=454138ff8a20f6edb9b65a910101403d8b520643;p=opencv diff --git a/apps/Hawk/CVEiCL/EiC/src/func.c b/apps/Hawk/CVEiCL/EiC/src/func.c deleted file mode 100644 index 5d83125..0000000 --- a/apps/Hawk/CVEiCL/EiC/src/func.c +++ /dev/null @@ -1,368 +0,0 @@ -/* func.c - * - * (C) Copyright Nov 23 1996, Edmond J. Breen. - * ALL RIGHTS RESERVED. - * This code may be copied for personal, non-profit use only. - * - * - * This file contains the methods for dealing with EiC function - * house keeping. - */ - -#include -#include -#include - -#include "global.h" -#include "typemod.h" -#include "func.h" -#include "xalloc.h" -#include "error.h" -#include "symbol.h" -#include "cdecl.h" - -int EiC_gotMissingNames(func_t *f) -{ - /* check to see that all parameters have a name */ - int i; - - if(!EiC_hasPrototype(f) || EiC_gettype(getFPty(f, 0)) == t_void) - return 0; - - for (i = 0; i < getFNp(f); ++i) - if(!getFPname(f,i)) - if(EiC_gettype(getFPty(f, i)) != t_var) - return i+1; - return 0; -} - -int EiC_IsVariadic(func_t *f) -{ - return f ? getFNp(f) > 1 && EiC_gettype(getFPty(f,getFNp(f)-1)) == - t_var : 0; -} - -int EiC_hasPrototype(func_t *f) -{ - - return f ? EiC_gettype(getFPty(f, 0)) != t_var: 0; -} - -void EiC_swapFPLists(func_t *f1, func_t *f2) -{ - /* swap parameter lists */ - parm_t *t = getFPtyList(f1); - setFPtyList(f1,getFPtyList(f2)); - setFPtyList(f2,t); -} - - -int EiC_HasHiddenParm(type_expr *ty) -{ - int t = EiC_gettype(nextType(ty)); - if(t == t_struct || t == t_union) - return 1; - return 0; -} - -int EiC_sameFuncs(type_expr * t1, type_expr * t2) -{ - /* check for compatible function types */ - - func_t * f1, *f2; - int i; - - f1 = EiC_getInf(t1); - f2 = EiC_getInf(t2); - if(!f1 || !f2) /* watch for builtin types before prototype */ - return 0; - if(EiC_hasPrototype(f1) && EiC_hasPrototype(f2)) { - if (getFNp(f1) != getFNp(f2)) - return 0; - for (i = 0; i < getFNp(f1); ++i) - if(!EiC_sametypes(getFPty(f1,i),getFPty(f2,i))) - return 0; - } else if(EiC_IsVariadic(f1) || EiC_IsVariadic(f2)) - return 0; - else { /* now check parameters are not convertable */ - if(EiC_hasPrototype(f2)) - f1 = f2; - for (i = 0; i < getFNp(f1); ++i) - switch(EiC_gettype(getFPty(f1,i))) { - case t_char: case t_uchar: - case t_short: case t_ushort: - case t_float: - return 0; - } - } - /* check function return types */ - return EiC_sametypes(t1->nxt, t2->nxt); -} - - -void EiC_make_func(token_t * e1) -{ - /* if (EiC_gettype(e1->type) == t_array || - EiC_gettype(e1->type) == t_funcdec) { - EiC_error("Illegal type construction"); - } - */ - e1->Type = EiC_addtype(t_funcdec, e1->Type); - setInf(e1->Type,xcalloc(1, sizeof(func_t))); -} - -void EiC_adjustParam(type_expr **type) -{ - int t = EiC_gettype(*type); - if(t == t_funcdec) - *type = EiC_addtype(t_pointer, *type); - else if(t == t_array) - EiC_exchtype(t_pointer,*type); -} - - -static void newParam(func_t *f,char *name, type_expr *type) -{ - - setFPtyList(f,xrealloc(getFPtyList(f), - sizeof(parm_t) * (getFNp(f) +1))); - - - if(name) - setFPname(f,getFNp(f), EiC_strsave(name)); - else - setFPname(f,getFNp(f), NULL); - - setFPcomm(f,getFNp(f),NULL); - setFPval(f,getFNp(f),NULL); - - setFPty(f,getFNp(f),EiC_copytype(type)); -} - - -void EiC_add_func_parm(func_t * f, type_expr ** type, char * name) -{ - int t; - type_expr *t1, *t2; - /* must handle storage class, as yet not done. */ - if ((t = EiC_gettype(*type)) != t_funcdec && t != t_array) - t = 0; - - newParam(f,name,*type); - - /* - * Because, parameters will be removed - * from the lookup table the function types stored - * need to be as complete as possible. - */ - t1 = getFPty(f,getFNp(f)); - t2 = *type; - while (t2) { - if (!t2->alias) { - t2->alias = 1; - t1->alias = 0; - } - t2 = nextType(t2); - t1 = nextType(t1); - } - - EiC_adjustParam(&getFPty(f,getFNp(f))); - setFNp(f,getFNp(f)+1); -} - -void EiC_add_func_str(func_t * f, char *s) -{ - if (!f->sn) - f->strs = (char **) xcalloc(1, sizeof(char *)); - else - f->strs = (char **) xrealloc(f->strs, - sizeof(char *) * (f->sn + 1)); - f->strs[f->sn] = s; - f->sn++; -} - - -void EiC_add_func_static(func_t * f, int n) -{ - if (!f->stn) - f->st = (int *) xcalloc(1, sizeof(int)); - else - f->st = (int *) xrealloc(f->st, - sizeof(int) * (f->stn + 1)); - f->st[f->stn] = n; - f->stn++; -} - -void EiC_add_func_initialiser(func_t * f, void *s) -{ - if (!f->ni) - f->inzs = (void **) xcalloc(1, sizeof(void *)); - else - f->inzs = (void **) xrealloc(f->inzs, - sizeof(void *) * (f->ni + 1)); - f->inzs[f->ni] = s; - f->ni++; -} - -void add_param_initialiser(func_t *f) -{ - if (f->ni) - setFPval(f,f->ni-1,f->inzs[f->ni-1]); - else - EiC_error("Error in with parameter initialisation"); -} - - - -void EiC_freeFuncComments(func_t *f) -{ - - if(getFComm(f)) { - xfree(getFComm(f)); - setFComm(f,NULL); - } -} - -static void freeCallBack(func_t *f) -{ - if(f->callBack) { - void EiC_freecode(code_t * code); - EiC_freecode(getFcallBack(f)); - xfree(getFcallBack(f)); - setFcallBack(f,NULL); - } -} - -void EiC_free_func_inf(func_t * f) -{ - int i; - if (!f) - return; - if (getFNp(f)) { - for (i = 0; i < getFNp(f); i++) { - EiC_freetype(getFPty(f,i)); - if(getFPname(f,i)) - xfree(getFPname(f,i)); - } - - xfree(getFPtyList(f)); - } - if (f->sn) { - for (i = 0; i < f->sn; ++i) - xfree(f->strs[i]); - xfree(f->strs); - f->sn = 0; - } - if (f->ni) { - for (i = 0; i < f->ni; ++i) - xfree(f->inzs[i]); - xfree(f->inzs); - f->ni= 0; - } - if (f->stn) { - for (i = 0; i < f->stn; ++i) - xfree(EiC_ENV->AR[f->st[i]].v.p.p); - xfree(f->st); - f->stn = 0; - } - - freeCallBack(f); - - EiC_freeFuncComments(f); - xfree(f); -} - -void EiC_markFunc(type_expr * type, int mark) -{ - func_t * f = EiC_getInf(type); - int i; - - xmark(f,mark); - /* mark paramaters */ - if(getFNp(f)) { - xmark(getFPtyList(f),mark); - for(i=0;isn) { - xmark(f->strs,mark); - for(i=0;isn;i++) - xmark(f->strs[i],mark); - - } - /* mark initializers */ - if(f->ni) { - xmark(f->inzs,mark); - for(i=0;ini;i++) - xmark(f->inzs[i],mark); - } - /* mark static arrays */ - if(f->stn) { - xmark(f->st,mark); - for(i=0;istn;i++) - xmark(EiC_ENV->AR[f->st[i]].v.p.p,mark); - } - if(getFcallBack(f)) { - code_t *code = getFcallBack(f); - xmark(code,mark); - xmark(code->inst,mark); - } - - if(getFComm(f)) - xmark(getFComm(f),mark); - -} - -void add_func_comment(char *s) -{ - extern token_t *EiC_RETURNEXPR; - func_t * f = EiC_getInf(EiC_RETURNEXPR->Type); - setFComm(f,s); -} - -void (*EiC_saveComment(void)) (char * s) -{ - if(EiC_INFUNC) { - extern token_t *EiC_RETURNEXPR; - func_t * f = EiC_getInf(EiC_RETURNEXPR->Type); - if(f && !getFComm(f)) - return add_func_comment; - } - return NULL; -} - - -#if 0 - -void savecode(char * filename, - func_t *func) -{ - - int i; - FILE *fp = fopen(filename,"wb"); - for(i=0;inextinst;++i) - fwrite(&CODE->inst[i],sizeof(InsT_t),1,fp); - -#endif - - - - - - - - - - - - - - - -