grendel-1.0.0a7/backup/
grendel-1.0.0a7/bin/
grendel-1.0.0a7/boards/
grendel-1.0.0a7/clans/
grendel-1.0.0a7/documentation/todo/
grendel-1.0.0a7/help/
grendel-1.0.0a7/logs/
grendel-1.0.0a7/players/
grendel-1.0.0a7/progs/
grendel-1.0.0a7/races/
grendel-1.0.0a7/src/contrib/
grendel-1.0.0a7/src/modules/speller/
grendel-1.0.0a7/src/modules/status/
grendel-1.0.0a7/src/tests/
grendel-1.0.0a7/src/tests/dunit/
program gvmtest;
uses gvm, Classes, TypInfo;

{$M+}
type GMath = class
     published
			 procedure blaat(a : string); stdcall;
     end;
{$M-}

procedure GMath.blaat(a : string); stdcall;
begin
  writeln('a: ', a);
end;

var
	gm : GMath;
  sig : GSignature;
  c : GContext;
  cb : GCodeBlock;
  p : integer;

begin
  sig.resultType := varNull;
  setLength(sig.paramTypes, 1);
  sig.paramTypes[0] := varString;

  gm := GMath.Create;
  registerExternalMethod('blaat', gm, gm.MethodAddress('blaat'), sig);

  c := GContext.Create;

  cb := loadCode('test.cod');

  c.Load(cb);

  p := c.findSymbol('main');

  if (p <> -1) then
    begin
    writeln('Executing at ', p, '...');
    c.setEntryPoint(p);
    c.Execute;
    end
  else
    writeln('Could not find entrypoint.');
end.