Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/tcl8.5.2/unix/dltest/pkga.c @ 25

Last change on this file since 25 was 25, checked in by landauf, 16 years ago

added tcl to libs

File size: 3.4 KB
Line 
1/*
2 * pkga.c --
3 *
4 *      This file contains a simple Tcl package "pkga" that is intended for
5 *      testing the Tcl dynamic loading facilities.
6 *
7 * Copyright (c) 1995 Sun Microsystems, Inc.
8 *
9 * See the file "license.terms" for information on usage and redistribution of
10 * this file, and for a DISCLAIMER OF ALL WARRANTIES.
11 *
12 * RCS: @(#) $Id: pkga.c,v 1.12 2007/12/13 15:28:42 dgp Exp $
13 */
14
15#include "tcl.h"
16
17/*
18 * Prototypes for procedures defined later in this file:
19 */
20
21static int    Pkga_EqObjCmd(ClientData clientData,
22                Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
23static int    Pkga_QuoteObjCmd(ClientData clientData,
24                Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
25
26/*
27 *----------------------------------------------------------------------
28 *
29 * Pkga_EqObjCmd --
30 *
31 *      This procedure is invoked to process the "pkga_eq" Tcl command. It
32 *      expects two arguments and returns 1 if they are the same, 0 if they
33 *      are different.
34 *
35 * Results:
36 *      A standard Tcl result.
37 *
38 * Side effects:
39 *      See the user documentation.
40 *
41 *----------------------------------------------------------------------
42 */
43
44static int
45Pkga_EqObjCmd(
46    ClientData dummy,           /* Not used. */
47    Tcl_Interp *interp,         /* Current interpreter. */
48    int objc,                   /* Number of arguments. */
49    Tcl_Obj *CONST objv[])      /* Argument objects. */
50{
51    int result;
52    CONST char *str1, *str2;
53    int len1, len2;
54
55    if (objc != 3) {
56        Tcl_WrongNumArgs(interp, 1, objv,  "string1 string2");
57        return TCL_ERROR;
58    }
59
60    str1 = Tcl_GetStringFromObj(objv[1], &len1);
61    str2 = Tcl_GetStringFromObj(objv[2], &len2);
62    if (len1 == len2) {
63        result = (Tcl_UtfNcmp(str1, str2, len1) == 0);
64    } else {
65        result = 0;
66    }
67    Tcl_SetObjResult(interp, Tcl_NewIntObj(result));
68    return TCL_OK;
69}
70
71/*
72 *----------------------------------------------------------------------
73 *
74 * Pkga_QuoteObjCmd --
75 *
76 *      This procedure is invoked to process the "pkga_quote" Tcl command. It
77 *      expects one argument, which it returns as result.
78 *
79 * Results:
80 *      A standard Tcl result.
81 *
82 * Side effects:
83 *      See the user documentation.
84 *
85 *----------------------------------------------------------------------
86 */
87
88static int
89Pkga_QuoteObjCmd(
90    ClientData dummy,           /* Not used. */
91    Tcl_Interp *interp,         /* Current interpreter. */
92    int objc,                   /* Number of arguments. */
93    Tcl_Obj *CONST objv[])      /* Argument strings. */
94{
95    if (objc != 2) {
96        Tcl_WrongNumArgs(interp, 1, objv, "value");
97        return TCL_ERROR;
98    }
99    Tcl_SetObjResult(interp, objv[1]);
100    return TCL_OK;
101}
102
103/*
104 *----------------------------------------------------------------------
105 *
106 * Pkga_Init --
107 *
108 *      This is a package initialization procedure, which is called by Tcl
109 *      when this package is to be added to an interpreter.
110 *
111 * Results:
112 *      None.
113 *
114 * Side effects:
115 *      None.
116 *
117 *----------------------------------------------------------------------
118 */
119
120int
121Pkga_Init(
122    Tcl_Interp *interp)         /* Interpreter in which the package is to be
123                                 * made available. */
124{
125    int code;
126
127    if (Tcl_InitStubs(interp, TCL_VERSION, 0) == NULL) {
128        return TCL_ERROR;
129    }
130    code = Tcl_PkgProvide(interp, "Pkga", "1.0");
131    if (code != TCL_OK) {
132        return code;
133    }
134    Tcl_CreateObjCommand(interp, "pkga_eq", Pkga_EqObjCmd,
135            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);
136    Tcl_CreateObjCommand(interp, "pkga_quote", Pkga_QuoteObjCmd,
137            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);
138    return TCL_OK;
139}
Note: See TracBrowser for help on using the repository browser.