diff options
Diffstat (limited to 'gamemode/shared/lockbox/stream.lua')
| -rw-r--r-- | gamemode/shared/lockbox/stream.lua | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/gamemode/shared/lockbox/stream.lua b/gamemode/shared/lockbox/stream.lua new file mode 100644 index 0000000..aeb3b18 --- /dev/null +++ b/gamemode/shared/lockbox/stream.lua @@ -0,0 +1,112 @@ +local Queue = include("queue.lua"); +local String = string + +local Stream = {}; + + +Stream.fromString = function(string) + local i=0; + return function() + print("string is:" .. string) + print("len is:" .. string.len(string)) + print("i is:" .. i) + i=i+1; + if(i <= string.len(string)) then + return string.byte(string,i); + else + return nil; + end + end +end + + +Stream.toString = function(stream) + local array = {}; + local i=1; + + local byte = stream(); + while byte ~= nil do + array[i] = String.char(byte); + i = i+1; + byte = stream(); + end + + return table.concat(array,""); +end + + +Stream.fromArray = function(array) + local queue = Queue(); + local i=1; + + local byte = array[i]; + while byte ~= nil do + queue.push(byte); + i=i+1; + byte = array[i]; + end + + return queue.pop; +end + + +Stream.toArray = function(stream) + local array = {}; + local i=1; + + local byte = stream(); + while byte ~= nil do + array[i] = byte; + i = i+1; + byte = stream(); + end + + return array; +end + + +local fromHexTable = {}; +for i=0,255 do + fromHexTable[String.format("%02X",i)]=i; + fromHexTable[String.format("%02x",i)]=i; +end + +Stream.fromHex = function(hex) + local queue = Queue(); + + for i=1,String.len(hex)/2 do + local h = String.sub(hex,i*2-1,i*2); + queue.push(fromHexTable[h]); + end + + return queue.pop; +end + + + +local toHexTable = {}; +for i=0,255 do + toHexTable[i]=String.format("%02X",i); +end + +Stream.toHex = function(stream) + print("tohex called with stream") + print(stream) + local hex = {}; + local i = 1; + + local byte = stream(); + print("First byte is") + print(byte) + while byte ~= nil do + print("Createing hex:") + print(table.concat(hex,"")) + hex[i] = toHexTable[byte]; + i=i+1; + byte = stream(); + end + + return table.concat(hex,""); +end + +return Stream; |
