
-- Initialize search paths so that lua can find the required DLLs

-- path to socket.dll
package.cpath = package.cpath..";../../client/3rdparty/lua5.2/?.dll"

-- path to grldc.dll
package.cpath = package.cpath..";../../client/visual/Debug/?.dll"

-- Load the GRLD client package and connect to the server which we assume to be running on the same machine and listening on port 4242
require( "grldc" )
grldc.connect( "127.0.0.1", 4242, "demo01" )

-- Now execute some basic lua statements with no particular purpose, just to demonstrate the debugger functionalities

-- some variables that can be explored from the server

local someTable = { "a", "a big string that won't be downloaded until requested by the user", subtable = setmetatable( { "another table" }, { "and its metatable" } ) }

someGlobalVariable = "Hello world"

local aRecursiveTable = { test = someTable }
aRecursiveTable.r = aRecursiveTable

local tableWithComplexKeys = { [aRecursiveTable] = function() print( "bouh" ) end }
tableWithComplexKeys[tableWithComplexKeys[aRecursiveTable]] = someTable

-- some functions to demonstrate stepping in code

function test()
	local a = 1
	return a
end

local function test1()
	local b = 2
	test()
	return b
end

function testMulCall( a, b )
	local c = a + b
	print( c )
end

function testTail()
	return test()
end

-- lua call
test()

-- C call
print( "a" )

-- tail call
testTail()

-- multiple calls, same line
testMulCall( test(), test1() )

-- and this file does not demonstrates all the debugger features, you can debug code that uses coroutines, userdata, multiple source files, directory mappings to make the server use a copy of the source files if the debugged program does not run on the same machine, etc.

print( "done" )
