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.