rust_tcl_sys/
shims.rs

1use std::mem;
2use tcl::*;
3
4pub const TCL_OK: i32 = 0;
5pub const TCL_ERROR: i32 = 1;
6pub const TCL_RETURN: i32 = 2;
7pub const TCL_BREAK: i32 = 3;
8pub const TCL_CONTINUE: i32 = 4;
9
10pub const TCL_NO_EVAL: u32	= 0x010000;
11pub const TCL_EVAL_GLOBAL: u32	= 0x020000;
12pub const TCL_EVAL_DIRECT: u32 = 0x040000;
13pub const TCL_EVAL_INVOKE: u32 = 0x080000;
14pub const TCL_CANCEL_UNWIND: u32 = 0x100000;
15pub const TCL_EVAL_NOERR: u32 = 0x200000;
16
17pub const TCL_GLOBAL_ONLY: u32 = 1;
18pub const TCL_NAMESPACE_ONLY: u32 = 2;
19pub const TCL_APPEND_VALUE: u32 = 4;
20pub const TCL_LIST_ELEMENT: u32 = 8;
21pub const TCL_TRACE_READS: u32 = 0x10;
22pub const TCL_TRACE_WRITES: u32 = 0x20;
23pub const TCL_TRACE_UNSETS: u32 = 0x40;
24pub const TCL_TRACE_DESTROYED: u32 = 0x80;
25pub const TCL_INTERP_DESTROYED: u32 = 0x100;
26pub const TCL_LEAVE_ERR_MSG: u32 = 0x200;
27pub const TCL_TRACE_ARRAY: u32 = 0x800;
28pub const TCL_TRACE_RESULT_DYNAMIC: u32 = 0x8000;
29pub const TCL_TRACE_RESULT_OBJECT: u32 = 0x10000;
30
31pub unsafe fn Tcl_IncrRefCount(objPtr: *mut Tcl_Obj) -> () {
32    let transmuted: &mut Struct_Tcl_Obj = mem::transmute(objPtr);
33    transmuted.refCount += 1;
34}
35
36pub unsafe fn Tcl_DecrRefCount(objPtr: *mut Tcl_Obj) -> () {
37    let transmuted: &mut Struct_Tcl_Obj = mem::transmute(objPtr);
38    transmuted.refCount -= 1;
39    if transmuted.refCount <= 0 {
40        TclFreeObj(transmuted);
41    }
42}
43
44pub unsafe fn Tcl_IsShared(objPtr: *const Tcl_Obj) -> ::libc::c_int {
45    let transmuted: &Struct_Tcl_Obj = mem::transmute(objPtr);
46    if transmuted.refCount > 1 { 1 } else { 0 }
47}