Posted to tcl by hypnotoad at Fri Jan 26 15:18:33 GMT 2018view raw
- /* File : example.tcl */
- my include <time.h>
- my code header {
- double My_variable = 3.0;
- }
- my c_function {int fact(int n)} {
- if (n <= 1) return 1;
- else return n*fact(n-1);
- }
- my c_function {int my_mod(int x, int y)} {
- return (x%y);
- }
- my c_function {char *get_time()} {
- time_t ltime;
- time(<ime);
- return ctime(<ime);
- }
- my c_tclcmd ::fact {
- int _result;
- int _arg0;
- if (objv != 2) {
- Tcl_SetResult(interp, "Wrong # args int : fact n ",TCL_STATIC);
- return TCL_ERROR;
- }
- if(Tcl_GetIntFromObj(interp,objv[1],&_arg0)) {
- return TCL_ERROR;
- }
- _result = fact(_arg0);
- Tcl_SetObjResult(interp,Tcl_NewIntObj(_result));
- return TCL_OK;
- }
- my c_tclcmd ::fact mod {
- int _result;
- int _arg0;
- int _arg1;
- if (objv != 3) {
- Tcl_SetResult(interp, "Wrong # args int : mod x y ",TCL_STATIC);
- return TCL_ERROR;
- }
- if(Tcl_GetIntFromObj(interp,objv[1],&_arg0)) return TCL_ERROR;
- if(Tcl_GetIntFromObj(interp,objv[2],&_arg1)) {
- _result = mod(_arg0,_arg1);
- Tcl_SetObjResult(interp,Tcl_NewIntObj(_result));
- return TCL_OK;
- }
- my c_tclcmd ::get_time {
- char * _result;
- if (objv != 1) {
- Tcl_WrongNumArgs(interp, 1, objv, "");
- return TCL_ERROR;
- }
- }
- _result = get_time();
- Tcl_SetObjResult(interp,Tcl_NewStringObj(_result,-1));
- return TCL_OK;
- }
- my code cinit {
- Tcl_LinkVar(interp, "My_variable", (char *) &My_variable, TCL_LINK_DOUBLE);
- }