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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? itcl_methods.c

?? 這是一個(gè)Linux下的集成開發(fā)環(huán)境
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/* * ------------------------------------------------------------------------ *      PACKAGE:  [incr Tcl] *  DESCRIPTION:  Object-Oriented Extensions to Tcl * *  [incr Tcl] provides object-oriented extensions to Tcl, much as *  C++ provides object-oriented extensions to C.  It provides a means *  of encapsulating related procedures together with their shared data *  in a local namespace that is hidden from the outside world.  It *  promotes code re-use through inheritance.  More than anything else, *  it encourages better organization of Tcl applications through the *  object-oriented paradigm, leading to code that is easier to *  understand and maintain. * *  These procedures handle commands available within a class scope. *  In [incr Tcl], the term "method" is used for a procedure that has *  access to object-specific data, while the term "proc" is used for *  a procedure that has access only to common class data. * * ======================================================================== *  AUTHOR:  Michael J. McLennan *           Bell Labs Innovations for Lucent Technologies *           mmclennan@lucent.com *           http://www.tcltk.com/itcl * *     RCS:  $Id: itcl_methods.c,v 1.1 2003/02/05 10:53:53 mdejong Exp $ * ======================================================================== *           Copyright (c) 1993-1998  Lucent Technologies, Inc. * ------------------------------------------------------------------------ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. */#include "itclInt.h"#include "tclCompile.h"/* *  FORWARD DECLARATIONS */static int ItclParseConfig _ANSI_ARGS_((Tcl_Interp *interp,    int objc, Tcl_Obj *CONST objv[], ItclObject *contextObj,    int *rargc, ItclVarDefn ***rvars, char ***rvals));static int ItclHandleConfig _ANSI_ARGS_((Tcl_Interp *interp,    int argc, ItclVarDefn **vars, char **vals, ItclObject *contextObj));/* * ------------------------------------------------------------------------ *  Itcl_BodyCmd() * *  Invoked by Tcl whenever the user issues an "itcl::body" command to *  define or redefine the implementation for a class method/proc. *  Handles the following syntax: * *    itcl::body <class>::<func> <arglist> <body> * *  Looks for an existing class member function with the name <func>, *  and if found, tries to assign the implementation.  If an argument *  list was specified in the original declaration, it must match *  <arglist> or an error is flagged.  If <body> has the form "@name" *  then it is treated as a reference to a C handling procedure; *  otherwise, it is taken as a body of Tcl statements. * *  Returns TCL_OK/TCL_ERROR to indicate success/failure. * ------------------------------------------------------------------------ *//* ARGSUSED */intItcl_BodyCmd(dummy, interp, objc, objv)    ClientData dummy;        /* unused */    Tcl_Interp *interp;      /* current interpreter */    int objc;                /* number of arguments */    Tcl_Obj *CONST objv[];   /* argument objects */{    int status = TCL_OK;    char *head, *tail, *token, *arglist, *body;    ItclClass *cdefn;    ItclMemberFunc *mfunc;    Tcl_HashEntry *entry;    Tcl_DString buffer;    if (objc != 4) {        token = Tcl_GetStringFromObj(objv[0], (int*)NULL);        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),            "wrong # args: should be \"",            token, " class::func arglist body\"",            (char*)NULL);        return TCL_ERROR;    }    /*     *  Parse the member name "namesp::namesp::class::func".     *  Make sure that a class name was specified, and that the     *  class exists.     */    token = Tcl_GetStringFromObj(objv[1], (int*)NULL);    Itcl_ParseNamespPath(token, &buffer, &head, &tail);    if (!head || *head == '\0') {        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),            "missing class specifier for body declaration \"", token, "\"",            (char*)NULL);        status = TCL_ERROR;        goto bodyCmdDone;    }    cdefn = Itcl_FindClass(interp, head, /* autoload */ 1);    if (cdefn == NULL) {        status = TCL_ERROR;        goto bodyCmdDone;    }    /*     *  Find the function and try to change its implementation.     *  Note that command resolution table contains *all* functions,     *  even those in a base class.  Make sure that the class     *  containing the method definition is the requested class.     */    if (objc != 4) {        token = Tcl_GetStringFromObj(objv[0], (int*)NULL);        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),            "wrong # args: should be \"",            token, " class::func arglist body\"",            (char*)NULL);        status = TCL_ERROR;        goto bodyCmdDone;    }    mfunc = NULL;    entry = Tcl_FindHashEntry(&cdefn->resolveCmds, tail);    if (entry) {        mfunc = (ItclMemberFunc*)Tcl_GetHashValue(entry);        if (mfunc->member->classDefn != cdefn) {            mfunc = NULL;        }    }    if (mfunc == NULL) {        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),            "function \"", tail, "\" is not defined in class \"",            cdefn->fullname, "\"",            (char*)NULL);        status = TCL_ERROR;        goto bodyCmdDone;    }    arglist = Tcl_GetStringFromObj(objv[2], (int*)NULL);    body    = Tcl_GetStringFromObj(objv[3], (int*)NULL);    if (Itcl_ChangeMemberFunc(interp, mfunc, arglist, body) != TCL_OK) {        status = TCL_ERROR;        goto bodyCmdDone;    }bodyCmdDone:    Tcl_DStringFree(&buffer);    return status;}/* * ------------------------------------------------------------------------ *  Itcl_ConfigBodyCmd() * *  Invoked by Tcl whenever the user issues an "itcl::configbody" command *  to define or redefine the configuration code associated with a *  public variable.  Handles the following syntax: * *    itcl::configbody <class>::<publicVar> <body> * *  Looks for an existing public variable with the name <publicVar>, *  and if found, tries to assign the implementation.  If <body> has *  the form "@name" then it is treated as a reference to a C handling *  procedure; otherwise, it is taken as a body of Tcl statements. * *  Returns TCL_OK/TCL_ERROR to indicate success/failure. * ------------------------------------------------------------------------ *//* ARGSUSED */intItcl_ConfigBodyCmd(dummy, interp, objc, objv)    ClientData dummy;        /* unused */    Tcl_Interp *interp;      /* current interpreter */    int objc;                /* number of arguments */    Tcl_Obj *CONST objv[];   /* argument objects */{    int status = TCL_OK;    char *head, *tail, *token;    Tcl_DString buffer;    ItclClass *cdefn;    ItclVarLookup *vlookup;    ItclMember *member;    ItclMemberCode *mcode;    Tcl_HashEntry *entry;    if (objc != 3) {        Tcl_WrongNumArgs(interp, 1, objv, "class::option body");        return TCL_ERROR;    }    /*     *  Parse the member name "namesp::namesp::class::option".     *  Make sure that a class name was specified, and that the     *  class exists.     */    token = Tcl_GetStringFromObj(objv[1], (int*)NULL);    Itcl_ParseNamespPath(token, &buffer, &head, &tail);    if (!head || *head == '\0') {        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),            "missing class specifier for body declaration \"", token, "\"",            (char*)NULL);        status = TCL_ERROR;        goto configBodyCmdDone;    }    cdefn = Itcl_FindClass(interp, head, /* autoload */ 1);    if (cdefn == NULL) {        status = TCL_ERROR;        goto configBodyCmdDone;    }    /*     *  Find the variable and change its implementation.     *  Note that variable resolution table has *all* variables,     *  even those in a base class.  Make sure that the class     *  containing the variable definition is the requested class.     */    vlookup = NULL;    entry = Tcl_FindHashEntry(&cdefn->resolveVars, tail);    if (entry) {        vlookup = (ItclVarLookup*)Tcl_GetHashValue(entry);        if (vlookup->vdefn->member->classDefn != cdefn) {            vlookup = NULL;        }    }    if (vlookup == NULL) {        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),            "option \"", tail, "\" is not defined in class \"",            cdefn->fullname, "\"",            (char*)NULL);        status = TCL_ERROR;        goto configBodyCmdDone;    }    member = vlookup->vdefn->member;    if (member->protection != ITCL_PUBLIC) {        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),            "option \"", member->fullname,            "\" is not a public configuration option",            (char*)NULL);        status = TCL_ERROR;        goto configBodyCmdDone;    }    token = Tcl_GetStringFromObj(objv[2], (int*)NULL);    if (Itcl_CreateMemberCode(interp, cdefn, (char*)NULL, token,        &mcode) != TCL_OK) {        status = TCL_ERROR;        goto configBodyCmdDone;    }    Itcl_PreserveData((ClientData)mcode);    Itcl_EventuallyFree((ClientData)mcode, Itcl_DeleteMemberCode);    if (member->code) {        Itcl_ReleaseData((ClientData)member->code);    }    member->code = mcode;configBodyCmdDone:    Tcl_DStringFree(&buffer);    return status;}/* * ------------------------------------------------------------------------ *  Itcl_CreateMethod() * *  Installs a method into the namespace associated with a class. *  If another command with the same name is already installed, then *  it is overwritten. * *  Returns TCL_OK on success, or TCL_ERROR (along with an error message *  in the specified interp) if anything goes wrong. * ------------------------------------------------------------------------ */intItcl_CreateMethod(interp, cdefn, name, arglist, body)    Tcl_Interp* interp;  /* interpreter managing this action */    ItclClass *cdefn;    /* class definition */    char* name;          /* name of new method */    char* arglist;       /* space-separated list of arg names */    char* body;          /* body of commands for the method */{    ItclMemberFunc *mfunc;    Tcl_DString buffer;    /*     *  Make sure that the method name does not contain anything     *  goofy like a "::" scope qualifier.     */    if (strstr(name,"::")) {        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),            "bad method name \"", name, "\"",            (char*)NULL);        return TCL_ERROR;    }    /*     *  Create the method definition.     */    if (Itcl_CreateMemberFunc(interp, cdefn, name, arglist, body, &mfunc)        != TCL_OK) {        return TCL_ERROR;    }    /*     *  Build a fully-qualified name for the method, and install     *  the command handler.     */    Tcl_DStringInit(&buffer);    Tcl_DStringAppend(&buffer, cdefn->namesp->fullName, -1);    Tcl_DStringAppend(&buffer, "::", 2);    Tcl_DStringAppend(&buffer, name, -1);    name = Tcl_DStringValue(&buffer);    Itcl_PreserveData((ClientData)mfunc);    mfunc->accessCmd = Tcl_CreateObjCommand(interp, name, Itcl_ExecMethod,        (ClientData)mfunc, Itcl_ReleaseData);    Tcl_DStringFree(&buffer);    return TCL_OK;}/* * ------------------------------------------------------------------------ *  Itcl_CreateProc() * *  Installs a class proc into the namespace associated with a class. *  If another command with the same name is already installed, then *  it is overwritten.  Returns TCL_OK on success, or TCL_ERROR (along *  with an error message in the specified interp) if anything goes *  wrong. * ------------------------------------------------------------------------ */intItcl_CreateProc(interp, cdefn, name, arglist, body)    Tcl_Interp* interp;  /* interpreter managing this action */    ItclClass *cdefn;    /* class definition */    char* name;          /* name of new proc */    char* arglist;       /* space-separated list of arg names */    char* body;          /* body of commands for the proc */{    ItclMemberFunc *mfunc;    Tcl_DString buffer;    /*     *  Make sure that the proc name does not contain anything     *  goofy like a "::" scope qualifier.     */    if (strstr(name,"::")) {        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),            "bad proc name \"", name, "\"",            (char*)NULL);        return TCL_ERROR;    }    /*     *  Create the proc definition.     */    if (Itcl_CreateMemberFunc(interp, cdefn, name, arglist, body, &mfunc)        != TCL_OK) {        return TCL_ERROR;    }    /*     *  Mark procs as "common".  This distinguishes them from methods.     */    mfunc->member->flags |= ITCL_COMMON;    /*     *  Build a fully-qualified name for the proc, and install     *  the command handler.     */    Tcl_DStringInit(&buffer);    Tcl_DStringAppend(&buffer, cdefn->namesp->fullName, -1);    Tcl_DStringAppend(&buffer, "::", 2);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区在线电影| 免费观看在线综合| 欧美xxxx老人做受| 91国偷自产一区二区三区观看| 免费成人小视频| 一级日本不卡的影视| 国产欧美一区二区精品仙草咪| 欧美日韩在线播放三区四区| 丁香另类激情小说| 久久 天天综合| 视频一区国产视频| 亚洲精品福利视频网站| 中文字幕精品—区二区四季| 日韩欧美色电影| 欧美日韩三级一区| 在线影院国内精品| 91日韩在线专区| 成人一级视频在线观看| 精品亚洲成av人在线观看| 亚洲bt欧美bt精品777| 一区二区三区四区精品在线视频| 国产欧美日韩精品在线| 久久色成人在线| 欧美www视频| 日韩女优电影在线观看| 日韩视频免费观看高清完整版| 欧美亚洲国产一区在线观看网站| a4yy欧美一区二区三区| av电影天堂一区二区在线观看| 国产成人8x视频一区二区| 国产福利一区二区| 国产精品123| 国产一区二区影院| 国产一区二区网址| 国产成人日日夜夜| 国产成a人无v码亚洲福利| 国产精品中文欧美| 国产iv一区二区三区| 懂色av一区二区在线播放| 国产69精品久久777的优势| 东方欧美亚洲色图在线| 成人av在线观| 色综合久久综合网97色综合| 91黄色免费看| 欧美视频在线播放| 欧美一区二区三区人| 日韩一区二区精品在线观看| 精品1区2区在线观看| 国产日韩一级二级三级| 国产精品的网站| 亚洲黄色免费电影| 亚洲大型综合色站| 久久精品国产99久久6| 国产成人在线视频网址| 99国产精品久久久| 欧美性色综合网| 日韩女优毛片在线| 中文文精品字幕一区二区| 亚洲欧美激情视频在线观看一区二区三区| 亚洲蜜桃精久久久久久久| 亚洲444eee在线观看| 精品一区二区日韩| 成人av网站免费观看| 欧美午夜精品一区| 欧美videofree性高清杂交| 国产欧美视频在线观看| 亚洲一区二区三区四区的| 美女脱光内衣内裤视频久久网站 | 麻豆精品新av中文字幕| 国产美女精品在线| 色婷婷激情综合| 日韩三级免费观看| 中文字幕一区三区| 日本成人在线电影网| 成人在线综合网| 欧美日韩一区不卡| 国产亚洲人成网站| 午夜国产精品一区| 国产成人啪免费观看软件 | 欧美电影一区二区三区| 久久综合色天天久久综合图片| 国产精品久久久久三级| 日韩av电影免费观看高清完整版在线观看| 久久99精品一区二区三区 | 成人av在线看| 欧美一区国产二区| 自拍偷拍国产亚洲| 久久精品国产77777蜜臀| 色婷婷av一区二区三区gif| 精品久久一区二区| 亚洲国产精品久久艾草纯爱| 国产98色在线|日韩| 欧美日本免费一区二区三区| 国产精品久久久久三级| 激情综合色播五月| 欧美私人免费视频| 亚洲视频一区在线观看| 国产**成人网毛片九色| 91麻豆精品国产自产在线观看一区 | 色综合久久天天| 久久你懂得1024| 美国十次了思思久久精品导航| 色一情一乱一乱一91av| 久久免费美女视频| 麻豆精品一区二区av白丝在线| 欧美又粗又大又爽| 亚洲天天做日日做天天谢日日欢 | 日韩电影在线免费观看| 色婷婷亚洲精品| 国产女人18毛片水真多成人如厕| 麻豆视频一区二区| 欧美日韩亚洲高清一区二区| 亚洲人成7777| av电影在线观看完整版一区二区| 久久综合视频网| 久久精品国产在热久久| 69成人精品免费视频| 亚洲国产精品综合小说图片区| 99久久精品国产麻豆演员表| 国产人伦精品一区二区| 国产一区二区三区久久悠悠色av| 日韩午夜精品电影| 美女视频免费一区| 日韩免费电影网站| 麻豆精品视频在线| 日韩欧美成人一区二区| 美国一区二区三区在线播放| 欧美一区午夜精品| 美女视频网站久久| 日韩一级在线观看| 精品亚洲成av人在线观看| 精品日韩欧美在线| 精品在线播放午夜| 欧美v日韩v国产v| 国产一区二区三区免费观看| 2020国产精品自拍| 国产suv精品一区二区6| 中文字幕av不卡| 色综合天天综合在线视频| 中文字幕一区免费在线观看| 91网站在线播放| 亚洲激情五月婷婷| 欧美日韩一区中文字幕| 日韩av电影天堂| 精品日产卡一卡二卡麻豆| 极品少妇xxxx偷拍精品少妇| 2021中文字幕一区亚洲| 东方aⅴ免费观看久久av| 亚洲色图视频免费播放| 在线免费观看日本一区| 五月婷婷激情综合| 欧美大片日本大片免费观看| 国产精品一级二级三级| 国产精品情趣视频| 在线观看免费视频综合| 美女一区二区在线观看| 久久精品一区蜜桃臀影院| 91美女在线视频| 日韩精品电影一区亚洲| 久久先锋影音av| av中文字幕亚洲| 天天操天天综合网| 久久综合中文字幕| 91在线免费播放| 日日摸夜夜添夜夜添亚洲女人| 精品国产乱码久久久久久蜜臀| 国产成人av资源| 亚洲综合小说图片| 久久综合久久99| 一本高清dvd不卡在线观看| 日产国产高清一区二区三区| 国产色产综合色产在线视频| 在线观看日韩毛片| 激情综合色播激情啊| 亚洲美女屁股眼交3| 欧美一区二区三区男人的天堂| 国产成人精品午夜视频免费| 伊人色综合久久天天人手人婷| 欧美一区二区三区视频在线| 成年人午夜久久久| 日韩电影在线观看电影| 国产精品系列在线| 欧美一区在线视频| 色呦呦国产精品| 国产精品一区二区久久不卡 | 亚洲综合精品自拍| 久久久久久久久久看片| 欧美丝袜丝交足nylons图片| 国产成人精品免费在线| 亚洲国产成人精品视频| 国产精品网站在线| 精品国产一二三| 欧美综合色免费| 高清成人在线观看| 蜜臀av在线播放一区二区三区| 国产精品久久久久久亚洲伦| 精品粉嫩超白一线天av| 欧美高清视频www夜色资源网| 成人免费黄色在线| 国模无码大尺度一区二区三区|