亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xleval.c

?? Audacity是一款用於錄音和編輯聲音的、免費的開放源碼軟體。它可以執行於Mac OS X、Microsoft Windows、GNU/Linux和其它作業系統
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* xleval - xlisp evaluator *//*      Copyright (c) 1985, by David Michael Betz        All Rights Reserved        Permission is granted for unrestricted non-commercial use       *//* HISTORY   28 Apr 03  DM   eliminated some compiler warnings  12 Oct 90  RBD  added profiling support  */#include "string.h"#include "xlisp.h"/* macro to check for lambda list keywords */#define iskey(s) ((s) == lk_optional \               || (s) == lk_rest \               || (s) == lk_key \               || (s) == lk_aux \               || (s) == lk_allow_other_keys)/* macros to handle tracing */#define trenter(sym,argc,argv) {if (sym) doenter(sym,argc,argv);}#define trexit(sym,val) {if (sym) doexit(sym,val);}/* forward declarations */FORWARD LOCAL LVAL evalhook(LVAL expr);FORWARD LOCAL LVAL evform(LVAL form);FORWARD LOCAL LVAL evfun(LVAL fun, int argc, LVAL *argv);FORWARD LVAL xlclose(LVAL name, LVAL type, LVAL fargs, LVAL body, LVAL env, LVAL fenv);FORWARD LOCAL int member( LVAL x,  LVAL list);FORWARD LOCAL int evpushargs(LVAL fun, LVAL args);FORWARD LOCAL void doenter(LVAL sym, int argc, LVAL *argv);FORWARD LOCAL void doexit(LVAL sym, LVAL val);FORWARD LOCAL void badarglist(void);/* profiling extensions by RBD */extern LVAL s_profile, profile_fixnum;extern FIXTYPE *profile_count_ptr, profile_flag;/* xleval - evaluate an xlisp expression (checking for *evalhook*) */LVAL xleval(LVAL expr){    /* check for control codes */    if (--xlsample <= 0) {        xlsample = SAMPLE;        oscheck();    }    /* check for *evalhook* */    if (getvalue(s_evalhook))        return (evalhook(expr));    /* check for nil */    if (null(expr))        return (NIL);    /* dispatch on the node type */    switch (ntype(expr)) {    case CONS:        return (evform(expr));    case SYMBOL:        return (xlgetvalue(expr));    default:        return (expr);    }}/* xlxeval - evaluate an xlisp expression (bypassing *evalhook*) */LVAL xlxeval(LVAL expr){    /* check for nil */    if (null(expr))        return (NIL);    /* dispatch on node type */    switch (ntype(expr)) {    case CONS:        return (evform(expr));    case SYMBOL:        return (xlgetvalue(expr));    default:        return (expr);    }}/* xlapply - apply a function to arguments (already on the stack) */LVAL xlapply(int argc){    LVAL *oldargv,fun,val=NULL;    LVAL funname;    LVAL old_profile_fixnum = profile_fixnum;    FIXTYPE *old_profile_count_ptr = profile_count_ptr;    int oldargc;    /* get the function */    fun = xlfp[1];    /* get the functional value of symbols */    if (symbolp(fun)) {        funname = fun;  /* save it */        while ((val = getfunction(fun)) == s_unbound)            xlfunbound(fun);        fun = xlfp[1] = val;        if (profile_flag && atomp(funname)) {            LVAL profile_prop = findprop(funname, s_profile);            if (null(profile_prop)) {                /* make a new fixnum, don't use cvfixnum because                   it would return shared pointer to zero, but we                   are going to modify this integer in place --                   dangerous but efficient.                 */                profile_fixnum = newnode(FIXNUM);                profile_fixnum->n_fixnum = 0;                setplist(funname, cons(s_profile,                                       cons(profile_fixnum,                                            getplist(funname))));                setvalue(s_profile, cons(funname, getvalue(s_profile)));            } else profile_fixnum = car(profile_prop);            profile_count_ptr = &getfixnum(profile_fixnum);        }    }    /* check for nil */    if (null(fun))        xlerror("bad function",fun);    /* dispatch on node type */    switch (ntype(fun)) {    case SUBR:        oldargc = xlargc;        oldargv = xlargv;        xlargc = argc;        xlargv = xlfp + 3;        val = (*getsubr(fun))();        xlargc = oldargc;        xlargv = oldargv;        break;    case CONS:        if (!consp(cdr(fun)))            xlerror("bad function",fun);        if (car(fun) == s_lambda) {            fun = xlclose(NIL,                          s_lambda,                          car(cdr(fun)),                          cdr(cdr(fun)),                          xlenv,xlfenv);        } else            xlerror("bad function",fun);        /**** fall through into the next case ****/    case CLOSURE:        if (gettype(fun) != s_lambda)            xlerror("bad function",fun);        val = evfun(fun,argc,xlfp+3);        break;    default:        xlerror("bad function",fun);    }    /* restore original profile counting state */    profile_fixnum = old_profile_fixnum;    profile_count_ptr = old_profile_count_ptr;    /* remove the call frame */    xlsp = xlfp;    xlfp = xlfp - (int)getfixnum(*xlfp);    /* return the function value */    return (val);}/* evform - evaluate a form */LOCAL LVAL evform(LVAL form){    LVAL fun,args,val=NULL,type;    LVAL tracing=NIL;    LVAL *argv;    LVAL old_profile_fixnum = profile_fixnum;    FIXTYPE *old_profile_count_ptr = profile_count_ptr;    LVAL funname;    int argc;    /* protect some pointers */    xlstkcheck(2);    xlsave(fun);    xlsave(args);    (*profile_count_ptr)++; /* increment profile counter */    /* get the function and the argument list */    fun = car(form);    args = cdr(form);    funname = fun;    /* get the functional value of symbols */    if (symbolp(fun)) {        if (getvalue(s_tracelist) && member(fun,getvalue(s_tracelist)))            tracing = fun;        fun = xlgetfunction(fun);    }    /* check for nil */    if (null(fun))        xlerror("bad function",NIL);    /* dispatch on node type */    switch (ntype(fun)) {    case SUBR:        argv = xlargv;        argc = xlargc;        xlargc = evpushargs(fun,args);        xlargv = xlfp + 3;        trenter(tracing,xlargc,xlargv);        val = (*getsubr(fun))();        trexit(tracing,val);        xlsp = xlfp;        xlfp = xlfp - (int)getfixnum(*xlfp);        xlargv = argv;        xlargc = argc;        break;    case FSUBR:        argv = xlargv;        argc = xlargc;        xlargc = pushargs(fun,args);        xlargv = xlfp + 3;        val = (*getsubr(fun))();        xlsp = xlfp;        xlfp = xlfp - (int)getfixnum(*xlfp);        xlargv = argv;        xlargc = argc;        break;    case CONS:        if (!consp(cdr(fun)))            xlerror("bad function",fun);        if ((type = car(fun)) == s_lambda)             fun = xlclose(NIL,                           s_lambda,                           car(cdr(fun)),                           cdr(cdr(fun)),                           xlenv,xlfenv);        else            xlerror("bad function",fun);        /**** fall through into the next case ****/    case CLOSURE:        /* do profiling */        if (profile_flag && atomp(funname)) {            LVAL profile_prop = findprop(funname, s_profile);            if (null(profile_prop)) {                /* make a new fixnum, don't use cvfixnum because                   it would return shared pointer to zero, but we                   are going to modify this integer in place --                   dangerous but efficient.                 */                profile_fixnum = newnode(FIXNUM);                profile_fixnum->n_fixnum = 0;                setplist(funname, cons(s_profile,                                       cons(profile_fixnum,                                            getplist(funname))));                setvalue(s_profile, cons(funname, getvalue(s_profile)));            } else profile_fixnum = car(profile_prop);            profile_count_ptr = &getfixnum(profile_fixnum);        }        if (gettype(fun) == s_lambda) {            argc = evpushargs(fun,args);            argv = xlfp + 3;            trenter(tracing,argc,argv);            val = evfun(fun,argc,argv);            trexit(tracing,val);            xlsp = xlfp;            xlfp = xlfp - (int)getfixnum(*xlfp);        }        else {            macroexpand(fun,args,&fun);            val = xleval(fun);        }        profile_fixnum = old_profile_fixnum;        profile_count_ptr = old_profile_count_ptr;        break;    default:        xlerror("bad function",fun);    }    /* restore the stack */    xlpopn(2);    /* return the result value */    return (val);}/* xlexpandmacros - expand macros in a form */LVAL xlexpandmacros(LVAL form){    LVAL fun,args;        /* protect some pointers */    xlstkcheck(3);    xlprotect(form);    xlsave(fun);    xlsave(args);    /* expand until the form isn't a macro call */    while (consp(form)) {        fun = car(form);                /* get the macro name */        args = cdr(form);               /* get the arguments */        if (!symbolp(fun) || !fboundp(fun))            break;        fun = xlgetfunction(fun);       /* get the expansion function */        if (!macroexpand(fun,args,&form))            break;    }    /* restore the stack and return the expansion */    xlpopn(3);    return (form);}/* macroexpand - expand a macro call */int macroexpand(LVAL fun, LVAL args, LVAL *pval){    LVAL *argv;    int argc;        /* make sure it's really a macro call */    if (!closurep(fun) || gettype(fun) != s_macro)        return (FALSE);            /* call the expansion function */    argc = pushargs(fun,args);    argv = xlfp + 3;    *pval = evfun(fun,argc,argv);    xlsp = xlfp;    xlfp = xlfp - (int)getfixnum(*xlfp);    return (TRUE);}/* evalhook - call the evalhook function */LOCAL LVAL evalhook(LVAL expr){    LVAL *newfp,olddenv,val;    /* create the new call frame */    newfp = xlsp;    pusharg(cvfixnum((FIXTYPE)(newfp - xlfp)));    pusharg(getvalue(s_evalhook));    pusharg(cvfixnum((FIXTYPE)2));    pusharg(expr);    pusharg(cons(xlenv,xlfenv));    xlfp = newfp;    /* rebind the hook functions to nil */    olddenv = xldenv;    xldbind(s_evalhook,NIL);    xldbind(s_applyhook,NIL);    /* call the hook function */    val = xlapply(2);    /* unbind the symbols */    xlunbind(olddenv);    /* return the value */    return (val);}/* evpushargs - evaluate and push a list of arguments */LOCAL int evpushargs(LVAL fun, LVAL args){    LVAL *newfp;    int argc;        /* protect the argument list */    xlprot1(args);    /* build a new argument stack frame */    newfp = xlsp;    pusharg(cvfixnum((FIXTYPE)(newfp - xlfp)));    pusharg(fun);    pusharg(NIL); /* will be argc */    /* evaluate and push each argument */    for (argc = 0; consp(args); args = cdr(args), ++argc)        pusharg(xleval(car(args)));    /* establish the new stack frame */    newfp[2] = cvfixnum((FIXTYPE)argc);    xlfp = newfp;        /* restore the stack */    xlpop();    /* return the number of arguments */    return (argc);}/* pushargs - push a list of arguments */int pushargs(LVAL fun, LVAL args){    LVAL *newfp;    int argc;        /* build a new argument stack frame */    newfp = xlsp;    pusharg(cvfixnum((FIXTYPE)(newfp - xlfp)));    pusharg(fun);    pusharg(NIL); /* will be argc */    /* push each argument */    for (argc = 0; consp(args); args = cdr(args), ++argc)        pusharg(car(args));    /* establish the new stack frame */    newfp[2] = cvfixnum((FIXTYPE)argc);    xlfp = newfp;    /* return the number of arguments */    return (argc);}/* makearglist - make a list of the remaining arguments */LVAL makearglist(int argc, LVAL *argv){    LVAL list,this,last;    xlsave1(list);    for (last = NIL; --argc >= 0; last = this) {        this = cons(*argv++,NIL);        if (last) rplacd(last,this);        else list = this;        last = this;    }    xlpop();    return (list);}/* evfun - evaluate a function */LOCAL LVAL evfun(LVAL fun, int argc, LVAL *argv){    LVAL oldenv,oldfenv,cptr,name,val;    XLCONTEXT cntxt;    /* protect some pointers */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av亚洲精华国产精华| 亚洲综合图片区| 黄色精品一二区| 日韩免费观看高清完整版| 久久超碰97中文字幕| 久久综合精品国产一区二区三区 | 91福利视频久久久久| 亚洲成av人片观看| 日韩一区二区三区在线| 精品一区二区免费看| 日本一区二区视频在线观看| 99久久精品免费看国产| 一区二区三区美女| 91麻豆精品国产91久久久久| 国内外成人在线视频| 国产精品美女一区二区在线观看| 色综合久久久久网| 日韩电影在线一区二区三区| 国产午夜精品一区二区三区嫩草 | www.视频一区| 亚洲国产一二三| 精品国产乱码久久久久久浪潮 | 国产日韩欧美a| 91欧美一区二区| 午夜精品久久久久久不卡8050| 日韩免费高清av| 91亚洲国产成人精品一区二区三 | 国产成人自拍高清视频在线免费播放| 国产精品久久久久久一区二区三区| 一本大道久久a久久精品综合| 日韩精品电影在线| 国产精品高潮久久久久无| 欧美片在线播放| 国产精品综合av一区二区国产馆| 国产精品午夜免费| 日韩手机在线导航| 在线观看欧美黄色| 国产在线播精品第三| 亚洲综合久久久| 欧美激情一区二区三区四区| 欧美丰满一区二区免费视频| 国产成人午夜电影网| 日韩成人午夜电影| 亚洲日本乱码在线观看| 久久毛片高清国产| 欧美精品丝袜中出| 99热精品国产| 国产91对白在线观看九色| 日韩av不卡一区二区| 亚洲婷婷综合久久一本伊一区| 欧美xxxxx裸体时装秀| 欧美精品在线一区二区| 色天使久久综合网天天| 国产成人精品综合在线观看 | 精品乱人伦小说| 欧美午夜理伦三级在线观看| 成人一区在线观看| 国产麻豆一精品一av一免费| 另类欧美日韩国产在线| 图片区小说区国产精品视频| 亚洲综合一区二区精品导航| 亚洲人成网站色在线观看| 欧美高清在线精品一区| 久久精品一区二区三区不卡牛牛 | 色综合中文综合网| 精品少妇一区二区三区| 欧美一区二区视频在线观看2022| 色婷婷av一区二区三区大白胸| 成人av电影在线网| 国产91精品精华液一区二区三区 | 五月天中文字幕一区二区| 亚洲欧美色一区| 亚洲美女视频在线| 亚洲少妇最新在线视频| 亚洲色图清纯唯美| 亚洲嫩草精品久久| 亚洲精品成a人| 亚洲精品乱码久久久久久| 一区二区三区四区中文字幕| 亚洲品质自拍视频网站| 一区二区欧美国产| 亚洲成人免费观看| 日本中文在线一区| 精品一区二区在线观看| 韩日欧美一区二区三区| 国产精品亚洲第一区在线暖暖韩国 | 日韩欧美中文字幕公布| 日韩欧美国产综合在线一区二区三区| 6080午夜不卡| 久久久久成人黄色影片| 国产日产欧产精品推荐色| 国产欧美日韩激情| 日韩码欧中文字| 亚洲综合偷拍欧美一区色| 污片在线观看一区二区| 九九久久精品视频| 成人在线综合网| 色综合 综合色| 欧美一区二区三区系列电影| 精品久久一区二区| 中文字幕欧美区| 亚洲午夜激情网页| 久久国产精品99精品国产| 懂色av一区二区三区免费看| 91久久人澡人人添人人爽欧美| 欧美日韩中文字幕精品| 日韩欧美一区二区久久婷婷| 欧美激情综合在线| 亚洲一区在线观看免费| 精品午夜一区二区三区在线观看 | 亚洲综合无码一区二区| 日韩国产欧美三级| 高清不卡一区二区| 欧美偷拍一区二区| 久久先锋资源网| 怡红院av一区二区三区| 精品一区二区三区影院在线午夜| 成人免费毛片a| 在线播放日韩导航| 国产精品亲子伦对白| 日本亚洲天堂网| 91丝袜美女网| 欧美zozozo| 亚洲国产欧美一区二区三区丁香婷| 国产在线不卡一卡二卡三卡四卡| 色综合av在线| 国产日韩欧美精品一区| 五月婷婷另类国产| 97se亚洲国产综合在线| 日韩视频一区二区三区在线播放| 中文字幕在线不卡国产视频| 久久成人久久爱| 欧美日韩一区二区三区免费看| 久久久精品免费免费| 视频在线观看一区二区三区| 99久久精品国产精品久久| 久久亚洲捆绑美女| 丝袜亚洲另类丝袜在线| 99re这里只有精品6| www一区二区| 视频一区二区欧美| 欧美亚洲尤物久久| 中文字幕在线观看一区| 国产一区久久久| 欧美一级理论性理论a| 亚洲一区在线视频观看| 99精品在线观看视频| 精品成人私密视频| 裸体歌舞表演一区二区| 91精品国产综合久久婷婷香蕉| 一区二区三区欧美| 成人国产免费视频| 久久久精品黄色| 精品无码三级在线观看视频| 91精品久久久久久蜜臀| 视频精品一区二区| 欧美男人的天堂一二区| 亚洲一区二区综合| 在线免费不卡视频| 亚洲精品国产一区二区三区四区在线 | 美女网站在线免费欧美精品| 欧美日韩一二区| 亚洲国产综合91精品麻豆| 色拍拍在线精品视频8848| 成人欧美一区二区三区1314| 成人av一区二区三区| 欧美—级在线免费片| 成人免费福利片| 国产精品传媒在线| 99亚偷拍自图区亚洲| 亚洲六月丁香色婷婷综合久久| 色综合天天综合狠狠| 亚洲久草在线视频| 欧美偷拍一区二区| 强制捆绑调教一区二区| 欧美一区二区三区喷汁尤物| 奇米精品一区二区三区四区| 日韩色在线观看| 国产毛片精品一区| 国产精品福利一区二区三区| 一本一道综合狠狠老| 亚洲香肠在线观看| 欧美精品久久久久久久多人混战| 亚洲福利国产精品| 精品少妇一区二区| 成人国产电影网| 一区二区国产视频| 91麻豆精品国产91久久久| 韩国理伦片一区二区三区在线播放| 久久久午夜电影| 99久久精品情趣| 日韩国产欧美在线视频| 久久精品在线免费观看| 色哟哟一区二区在线观看| 亚洲成人av在线电影| 精品粉嫩超白一线天av| 91亚洲国产成人精品一区二三| 亚洲va韩国va欧美va精品| 欧美不卡视频一区| 色综合欧美在线|