Artifact [6ce701f58b]

Artifact 6ce701f58b9fb5058f881fff69edc393782d11f1:

Wiki page [Documentation] by rkeene on 2014-06-17 16:56:43.
D 2014-06-17T16:56:43.666
L Documentation
N text/x-markdown
P 3abed24b97a1099bbf57c0bd52a64bf997120cb1
U rkeene
W 2043
Manual Page

`package require tcc4tcl`

Creates a Tcl procedure that calls C code.


  1.  `tcc4tcl::cproc <procName> <argList> <returnType> <code>`
    1. `<procName>` is the name of the Tcl procedure to create
    1. `<argList>` is a list of arguments and their types for the C function;
      1. The list is in the format of: type1 name1 type2 name2 ... typeN nameN
      1. The supported types are:
         1. Tcl_Interp*: Must be first argument, will be the interpreter and the user will not need to pass this parameter
         1. int
         1. long
         1. float
         1. double
         1. char*
         1. Tcl_Obj*: Passes the Tcl object in unchanged
         1. void*
    1. `<returnType>` is the return type for the C function
      1. The supported types are:
         1. void: No return value
         1. ok: Return TCL\_OK or TCL_ERROR
         1. int
         1. long
         1. float
         1. double
         1. char*: TCL\_STATIC string (immutable from C -- use this for constants)
         1. string, dstring: return a (char*) that is a TCL\_DYNAMIC string (allocated from Tcl\_Alloc, will be managed by Tcl)
         1. vstring: return a (char*) that is a TCL\_VOLATILE string (mutable from C, will be copied be Tcl -- use this for local variables)
         1. default: Tcl\_Obj*, a Tcl Object
    1. `<code>` is the C code that comprises the function


  1.  Create a Tcl procedure called "add" which accepts 2 integers (a, b) and returns a long:
    1.  `tcc4tcl::cproc add {int a int b} long { return(a+b); }`
  2.  Create a Tcl procedure called "mkdir" which accepts a Tcl_Obj* and returns a return code:
    1.  `tcc4tcl::cproc mkdir {Tcl_Interp* interp char* dir} ok { int mkdir_ret; mkdir_ret = mkdir(dir); if (mkdir_ret != 0) { Tcl_SetObjResult(interp, Tcl_NewStringObj("failed", -1)); return(TCL_ERROR); }; return(TCL_OK); }`


Z 6bd114bf8e1fa9170e53cb18b36c4b31