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

📄 tcltest.c

📁 linux系统下的音频通信
💻 C
📖 第 1 页 / 共 5 页
字号:
    Tcl_SetResult(interp, "This is a result", TCL_STATIC);    result = Tcl_ExprLong(interp, "4+1", &exprResult);    if (result != TCL_OK) {        return result;    }    sprintf(buf, ": %ld", exprResult);    Tcl_AppendResult(interp, buf, NULL);    return TCL_OK;}/* *---------------------------------------------------------------------- * * TestexprstringCmd -- * *	This procedure tests the basic operation of Tcl_ExprString. * * Results: *	A standard Tcl result. * * Side effects: *	None. * *---------------------------------------------------------------------- */static intTestexprstringCmd(clientData, interp, argc, argv)    ClientData clientData;		/* Not used. */    Tcl_Interp *interp;			/* Current interpreter. */    int argc;				/* Number of arguments. */    char **argv;			/* Argument strings. */{    if (argc != 2) {        Tcl_AppendResult(interp, "wrong # arguments: should be \"", argv[0],                " expression\"", (char *) NULL);        return TCL_ERROR;    }    return Tcl_ExprString(interp, argv[1]);}/* *---------------------------------------------------------------------- * * TestgetassocdataCmd -- * *	This procedure implements the "testgetassocdata" command. It is *	used to test Tcl_GetAssocData. * * Results: *	A standard Tcl result. * * Side effects: *	None. * *---------------------------------------------------------------------- */static intTestgetassocdataCmd(clientData, interp, argc, argv)    ClientData clientData;		/* Not used. */    Tcl_Interp *interp;			/* Current interpreter. */    int argc;				/* Number of arguments. */    char **argv;			/* Argument strings. */{    char *res;        if (argc != 2) {        Tcl_AppendResult(interp, "wrong # arguments: should be \"", argv[0],                " data_key\"", (char *) NULL);        return TCL_ERROR;    }    res = (char *) Tcl_GetAssocData(interp, argv[1], NULL);    if (res != NULL) {        Tcl_AppendResult(interp, res, NULL);    }    return TCL_OK;}/* *---------------------------------------------------------------------- * * TestgetplatformCmd -- * *	This procedure implements the "testgetplatform" command. It is *	used to retrievel the value of the tclPlatform global variable. * * Results: *	A standard Tcl result. * * Side effects: *	None. * *---------------------------------------------------------------------- */static intTestgetplatformCmd(clientData, interp, argc, argv)    ClientData clientData;		/* Not used. */    Tcl_Interp *interp;			/* Current interpreter. */    int argc;				/* Number of arguments. */    char **argv;			/* Argument strings. */{    static char *platformStrings[] = { "unix", "mac", "windows" };    TclPlatformType *platform;#ifdef __WIN32__    platform = TclWinGetPlatform();#else    platform = &tclPlatform;#endif        if (argc != 1) {        Tcl_AppendResult(interp, "wrong # arguments: should be \"", argv[0],		(char *) NULL);        return TCL_ERROR;    }    Tcl_AppendResult(interp, platformStrings[*platform], NULL);    return TCL_OK;}/* *---------------------------------------------------------------------- * * TestinterpdeleteCmd -- * *	This procedure tests the code in tclInterp.c that deals with *	interpreter deletion. It deletes a user-specified interpreter *	from the hierarchy, and subsequent code checks integrity. * * Results: *	A standard Tcl result. * * Side effects: *	Deletes one or more interpreters. * *---------------------------------------------------------------------- */	/* ARGSUSED */static intTestinterpdeleteCmd(dummy, interp, argc, argv)    ClientData dummy;			/* Not used. */    Tcl_Interp *interp;			/* Current interpreter. */    int argc;				/* Number of arguments. */    char **argv;			/* Argument strings. */{    Tcl_Interp *slaveToDelete;    if (argc != 2) {        Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],                " path\"", (char *) NULL);        return TCL_ERROR;    }    if (argv[1][0] == '\0') {        Tcl_AppendResult(interp, "cannot delete current interpreter",                (char *) NULL);        return TCL_ERROR;    }    slaveToDelete = Tcl_GetSlave(interp, argv[1]);    if (slaveToDelete == (Tcl_Interp *) NULL) {        Tcl_AppendResult(interp, "could not find interpreter \"",                argv[1], "\"", (char *) NULL);        return TCL_ERROR;    }    Tcl_DeleteInterp(slaveToDelete);    return TCL_OK;}/* *---------------------------------------------------------------------- * * TestlinkCmd -- * *	This procedure implements the "testlink" command.  It is used *	to test Tcl_LinkVar and related library procedures. * * Results: *	A standard Tcl result. * * Side effects: *	Creates and deletes various variable links, plus returns *	values of the linked variables. * *---------------------------------------------------------------------- */	/* ARGSUSED */static intTestlinkCmd(dummy, interp, argc, argv)    ClientData dummy;			/* Not used. */    Tcl_Interp *interp;			/* Current interpreter. */    int argc;				/* Number of arguments. */    char **argv;			/* Argument strings. */{    static int intVar = 43;    static int boolVar = 4;    static double realVar = 1.23;    static char *stringVar = NULL;    static int created = 0;    char buffer[TCL_DOUBLE_SPACE];    int writable, flag;    if (argc < 2) {	Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],		" option ?arg arg arg?\"", (char *) NULL);	return TCL_ERROR;    }    if (strcmp(argv[1], "create") == 0) {	if (created) {	    Tcl_UnlinkVar(interp, "int");	    Tcl_UnlinkVar(interp, "real");	    Tcl_UnlinkVar(interp, "bool");	    Tcl_UnlinkVar(interp, "string");	}	created = 1;	if (Tcl_GetBoolean(interp, argv[2], &writable) != TCL_OK) {	    return TCL_ERROR;	}	flag = (writable != 0) ? 0 : TCL_LINK_READ_ONLY;	if (Tcl_LinkVar(interp, "int", (char *) &intVar,		TCL_LINK_INT | flag) != TCL_OK) {	    return TCL_ERROR;	}	if (Tcl_GetBoolean(interp, argv[3], &writable) != TCL_OK) {	    return TCL_ERROR;	}	flag = (writable != 0) ? 0 : TCL_LINK_READ_ONLY;	if (Tcl_LinkVar(interp, "real", (char *) &realVar,		TCL_LINK_DOUBLE | flag) != TCL_OK) {	    return TCL_ERROR;	}	if (Tcl_GetBoolean(interp, argv[4], &writable) != TCL_OK) {	    return TCL_ERROR;	}	flag = (writable != 0) ? 0 : TCL_LINK_READ_ONLY;	if (Tcl_LinkVar(interp, "bool", (char *) &boolVar,		TCL_LINK_BOOLEAN | flag) != TCL_OK) {	    return TCL_ERROR;	}	if (Tcl_GetBoolean(interp, argv[5], &writable) != TCL_OK) {	    return TCL_ERROR;	}	flag = (writable != 0) ? 0 : TCL_LINK_READ_ONLY;	if (Tcl_LinkVar(interp, "string", (char *) &stringVar,		TCL_LINK_STRING | flag) != TCL_OK) {	    return TCL_ERROR;	}    } else if (strcmp(argv[1], "delete") == 0) {	Tcl_UnlinkVar(interp, "int");	Tcl_UnlinkVar(interp, "real");	Tcl_UnlinkVar(interp, "bool");	Tcl_UnlinkVar(interp, "string");	created = 0;    } else if (strcmp(argv[1], "get") == 0) {	sprintf(buffer, "%d", intVar);	Tcl_AppendElement(interp, buffer);	Tcl_PrintDouble((Tcl_Interp *) NULL, realVar, buffer);	Tcl_AppendElement(interp, buffer);	sprintf(buffer, "%d", boolVar);	Tcl_AppendElement(interp, buffer);	Tcl_AppendElement(interp, (stringVar == NULL) ? "-" : stringVar);    } else if (strcmp(argv[1], "set") == 0) {	if (argc != 6) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		argv[0], " ", argv[1],		"intValue realValue boolValue stringValue\"", (char *) NULL);	    return TCL_ERROR;	}	if (argv[2][0] != 0) {	    if (Tcl_GetInt(interp, argv[2], &intVar) != TCL_OK) {		return TCL_ERROR;	    }	}	if (argv[3][0] != 0) {	    if (Tcl_GetDouble(interp, argv[3], &realVar) != TCL_OK) {		return TCL_ERROR;	    }	}	if (argv[4][0] != 0) {	    if (Tcl_GetInt(interp, argv[4], &boolVar) != TCL_OK) {		return TCL_ERROR;	    }	}	if (argv[5][0] != 0) {	    if (stringVar != NULL) {		ckfree(stringVar);	    }	    if (strcmp(argv[5], "-") == 0) {		stringVar = NULL;	    } else {		stringVar = (char *) ckalloc((unsigned) (strlen(argv[5]) + 1));		strcpy(stringVar, argv[5]);	    }	}    } else if (strcmp(argv[1], "update") == 0) {	if (argc != 6) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		argv[0], " ", argv[1],		"intValue realValue boolValue stringValue\"", (char *) NULL);	    return TCL_ERROR;	}	if (argv[2][0] != 0) {	    if (Tcl_GetInt(interp, argv[2], &intVar) != TCL_OK) {		return TCL_ERROR;	    }	    Tcl_UpdateLinkedVar(interp, "int");	}	if (argv[3][0] != 0) {	    if (Tcl_GetDouble(interp, argv[3], &realVar) != TCL_OK) {		return TCL_ERROR;	    }	    Tcl_UpdateLinkedVar(interp, "real");	}	if (argv[4][0] != 0) {	    if (Tcl_GetInt(interp, argv[4], &boolVar) != TCL_OK) {		return TCL_ERROR;	    }	    Tcl_UpdateLinkedVar(interp, "bool");	}	if (argv[5][0] != 0) {	    if (stringVar != NULL) {		ckfree(stringVar);	    }	    if (strcmp(argv[5], "-") == 0) {		stringVar = NULL;	    } else {		stringVar = (char *) ckalloc((unsigned) (strlen(argv[5]) + 1));		strcpy(stringVar, argv[5]);	    }	    Tcl_UpdateLinkedVar(interp, "string");	}    } else {	Tcl_AppendResult(interp, "bad option \"", argv[1],		"\": should be create, delete, get, set, or update",		(char *) NULL);	return TCL_ERROR;    }    return TCL_OK;}/* *---------------------------------------------------------------------- * * TestMathFunc -- * *	This is a user-defined math procedure to test out math procedures *	with no arguments. * * Results: *	A normal Tcl completion code. * * Side effects: *	None. * *---------------------------------------------------------------------- */	/* ARGSUSED */static intTestMathFunc(clientData, interp, args, resultPtr)    ClientData clientData;		/* Integer value to return. */    Tcl_Interp *interp;			/* Not used. */    Tcl_Value *args;			/* Not used. */    Tcl_Value *resultPtr;		/* Where to store result. */{    resultPtr->type = TCL_INT;    resultPtr->intValue = (int) clientData;    return TCL_OK;}/* *---------------------------------------------------------------------- * * TestMathFunc2 -- * *	This is a user-defined math procedure to test out math procedures *	that do have arguments, in this case 2. * * Results: *	A normal Tcl completion code. * * Side effects: *	None. * *---------------------------------------------------------------------- */	/* ARGSUSED */static intTestMathFunc2(clientData, interp, args, resultPtr)    ClientData clientData;		/* Integer value to return. */    Tcl_Interp *interp;			/* Used to report errors. */    Tcl_Value *args;			/* Points to an array of two					 * Tcl_Values for the two					 * arguments. */    Tcl_Value *resultPtr;		/* Where to store the result. */{    int result = TCL_OK;        /*     * Return the maximum of the two arguments with the correct type.     */        if (args[0].type == TCL_INT) {	int i0 = args[0].intValue;		if (args[1].type == TCL_INT) {	    int i1 = args[1].intValue;	    	    resultPtr->type = TCL_INT;	    resultPtr->intValue = ((i0 > i1)? i0 : i1);	} else if (args[1].type == TCL_DOUBLE) {	    double d0 = i0;	    double d1 = args[1].doubleValue;	    resultPtr->type = TCL_DOUBLE;	    resultPtr->doubleValue = ((d0 > d1)? d0 : d1);	} else {	    Tcl_SetResult(interp, "T2: wrong type for arg 2", TCL_STATIC);	    result = TCL_ERROR;	}    } else if (args[0].type == TCL_DOUBLE) {	double d0 = args[0].doubleValue;		if (args[1].type == TCL_INT) {	    double d1 = args[1].intValue;	    	    resultPtr->type = TCL_DOUBLE;	    resultPtr->doubleValue = ((d0 > d1)? d0 : d1);	} else if (args[1].type == TCL_DOUBLE) {	    double d1 = args[1].doubleValue;

⌨️ 快捷键说明

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