Allocating Memory

LayGO for Tcl/Tk 8.1 contains 4 functions which make it easy to allocate memory suitable for passing to the C language functions of the LayGO API.

For example:

set maxBuffer [lgo_MaxBufferSize $cid]
set inBuffer  [lgo_BufferNew $maxBuffer]
set outBuffer [lgo_BufferNew $maxBuffer]

for {set i 0} {$i < $maxBuffer} {incr i} {
    lgo_BufferSet $outBuffer $i [expr 65 + $i % 26]
}

set result [lgo_Write $cid $outBuffer $maxBuffer]

if {$result < 0} then {
    puts "Error writing: [lgo_ErrorMessage $result]."
} else {
    puts "$result bytes written."

    for {set i 0} {$i < $result} {incr i 16} {
        for {set j $i} {$j < $result && [expr $j - $i] < 16} {incr j} {
            puts -nonewline [format " %02X" [lgo_BufferGet $outBuffer $j]]
        }
        puts ""
    }

    set result 0
    while {$result <= 0} {
        after 1
        set result [lgo_Read $cid $inBuffer $maxBuffer]
    }

    puts "$result bytes received."

    for {set i 0} {$i < $result} {incr i 16} {
        for {set j $i} {$j < $result && [expr $j - $i] < 16} {incr j} {
            puts -nonewline [format " %02X" [lgo_BufferGet $inBuffer $j]]
        }
        puts ""
    }
}

lgo_BufferFree $inBuffer
lgo_BufferFree $outBuffer