⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 luaparsernode.pas

📁 从Delphi中调用lua
💻 PAS
📖 第 1 页 / 共 2 页
字号:
        argOut : plua_pushstring(l, 'Out');
      else
        result := 0;
      end;
    end
  else
    result := 0;
end;

function GetArgType(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : Integer;
begin
  result := 1;
  if target is TPasArgument then
    PushExistingNode(l, (target as TPasArgument).ArgType)
  else
    result := 0;
end;

function GetIsOfObject(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : Integer;
begin
  result := 1;
  if target is TPasProcedureType then
    lua_pushboolean(l, (target as TPasProcedureType).IsOfObject)
  else
    result := 0;
end;

function GetResultType(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : Integer;
begin
  result := 1;
  if target is TPasResultElement then
    PushExistingNode(l, (target as TPasResultElement).ResultType)
  else
    result := 0;
end;

function GetResultEl(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : Integer;
begin
  result := 1;
  if target is TPasFunctionType then
    PushExistingNode(l, (target as TPasFunctionType).ResultEl)
  else
    result := 0;
end;

function GetRefType(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : Integer;
begin
  result := 1;
  if target is TPasTypeRef then
    PushExistingNode(l, (target as TPasTypeRef).RefType)
  else
    result := 0;
end;

function GetVarType(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : Integer;
begin
  result := 1;
  if target is TPasVariable then
    PushExistingNode(l, (target as TPasVariable).VarType)
  else
    result := 0;
end;

function GetModifiers(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : Integer;
begin
  result := 1;
  if target is TPasVariable then
    plua_pushstring(l, (target as TPasVariable).Modifiers)
  else
    result := 0;
end;

function GetAbsoluteLocation(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : Integer;
begin
  result := 1;
  if target is TPasVariable then
    plua_pushstring(l, (target as TPasVariable).AbsoluteLocation)
  else
    result := 0;
end;

function GetIndexValue(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProperty then
    plua_pushstring(l, (target as TPasProperty).IndexValue)
  else
    result := 0;
end;

function GetReadAccessorName(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProperty then
    plua_pushstring(l, (target as TPasProperty).ReadAccessorName)
  else
    result := 0;
end;

function GetWriteAccessorName(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProperty then
    plua_pushstring(l, (target as TPasProperty).WriteAccessorName)
  else
    result := 0;
end;

function GetStoredAccessorName(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProperty then
    plua_pushstring(l, (target as TPasProperty).StoredAccessorName)
  else
    result := 0;
end;

function GetDefaultValue(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProperty then
    plua_pushstring(l, (target as TPasProperty).DefaultValue)
  else
    result := 0;
end;

function GetIsDefault(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProperty then
    lua_pushboolean(l, (target as TPasProperty).IsDefault)
  else
    result := 0;
end;

function GetIsNodefault(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProperty then
    lua_pushboolean(l, (target as TPasProperty).IsNodefault)
  else
    result := 0;
end;

function GetTypeName(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProcedureBase then
    plua_pushstring(l, (target as TPasProcedureBase).TypeName)
  else
    result := 0;
end;

function GetProcType(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProcedure then
    PushExistingNode(l, (target as TPasProcedure).ProcType)
  else
    result := 0;
end;

function GetIsVirtual(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProcedure then
    lua_pushboolean(l, (target as TPasProcedure).IsVirtual)
  else
    result := 0;
end;

function GetIsDynamic(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProcedure then
    lua_pushboolean(l, (target as TPasProcedure).IsDynamic)
  else
    result := 0;
end;

function GetIsAbstract(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProcedure then
    lua_pushboolean(l, (target as TPasProcedure).IsAbstract)
  else
    result := 0;
end;

function GetIsOverride(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProcedure then
    lua_pushboolean(l, (target as TPasProcedure).IsOverride)
  else
    result := 0;
end;

function GetIsOverload(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProcedure then
    lua_pushboolean(l, (target as TPasProcedure).IsOverload)
  else
    result := 0;
end;

function GetIsMessage(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProcedure then
    lua_pushboolean(l, (target as TPasProcedure).IsMessage)
  else
    result := 0;
end;

function GetisReintroduced(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProcedure then
    lua_pushboolean(l, (target as TPasProcedure).isReintroduced)
  else
    result := 0;
end;

function GetisStatic(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
begin
  result := 1;
  if target is TPasProcedure then
    lua_pushboolean(l, (target as TPasProcedure).isStatic)
  else
    result := 0;
end;

function GetVisibility(target : TObject; l : Plua_State; paramidxstart, paramcount : integer) : integer;
var
  itm : TPasElement;
begin
  result := 1;
  itm := TPasElement(target);
  plua_pushstring(l, VisibilityNames[itm.Visibility]);
end;

procedure InitClassInfo;
var
  ci : PLuaClassInfo;
begin
  ci := ClassTypesList.Add('TPasElement');
  plua_AddClassProperty(ci^, 'Visibility', @GetVisibility, nil);
  plua_AddClassProperty(ci^, 'SourceFilename', @GetFileName, nil);
  plua_AddClassProperty(ci^, 'SourceLinenumber', @GetLineNumber, nil);
  plua_AddClassProperty(ci^, 'FullName', @GetFullName, nil);
  plua_AddClassProperty(ci^, 'PathName', @GetPathName, nil);
  plua_AddClassProperty(ci^, 'ElementTypeName', @GetElementTypeName, nil);
  plua_AddClassProperty(ci^, 'Name', @GetName, nil);
  plua_AddClassProperty(ci^, 'Parent', @GetParent, nil);
  plua_AddClassProperty(ci^, 'ClassName', @GetClassName, nil);
  plua_AddClassProperty(ci^, 'DestType', @GetDestType, nil);
  plua_AddClassProperty(ci^, 'PackageName', @GetPackageName, nil);
  plua_AddClassProperty(ci^, 'Value', @GetValue, nil);
  plua_AddClassProperty(ci^, 'RangeStart', @GetRangeStart, nil);
  plua_AddClassProperty(ci^, 'RangeEnd', @GetRangeEnd, nil);
  plua_AddClassProperty(ci^, 'IndexRange', @GetIndexRange, nil);
  plua_AddClassProperty(ci^, 'IsPacked', @GetIsPacked, nil);
  plua_AddClassProperty(ci^, 'ElType', @GetElType, nil);
  plua_AddClassProperty(ci^, 'IsValueUsed', @GetIsValueUsed, nil);
  plua_AddClassProperty(ci^, 'AssignedValue', @GetAssignedValue, nil);
  plua_AddClassProperty(ci^, 'EnumType', @GetEnumType, nil);
  plua_AddClassProperty(ci^, 'VariantName', @GetVariantName, nil);
  plua_AddClassProperty(ci^, 'VariantType', @GetVariantType, nil);
  plua_AddClassProperty(ci^, 'Members', @GetMembers, nil);
  plua_AddClassProperty(ci^, 'ObjKind', @GetObjKind, nil);
  plua_AddClassProperty(ci^, 'AncestorType', @GetAncestorType, nil);
  plua_AddClassProperty(ci^, 'InterfaceGUID', @GetInterfaceGUID, nil);
  plua_AddClassProperty(ci^, 'Access', @GetAccess, nil);
  plua_AddClassProperty(ci^, 'ArgType', @GetArgType, nil);
  plua_AddClassProperty(ci^, 'IsOfObject', @GetIsOfObject, nil);
  plua_AddClassProperty(ci^, 'ResultType', @GetResultType, nil);
  plua_AddClassProperty(ci^, 'ResultEl', @GetResultEl, nil);
  plua_AddClassProperty(ci^, 'RefType', @GetRefType, nil);
  plua_AddClassProperty(ci^, 'VarType', @GetVarType, nil);
  plua_AddClassProperty(ci^, 'Modifiers', @GetModifiers, nil);
  plua_AddClassProperty(ci^, 'AbsoluteLocation', @GetAbsoluteLocation, nil);
  plua_AddClassProperty(ci^, 'IndexValue', @GetIndexValue, nil);
  plua_AddClassProperty(ci^, 'ReadAccessorName', @GetReadAccessorName, nil);
  plua_AddClassProperty(ci^, 'WriteAccessorName', @GetWriteAccessorName, nil);
  plua_AddClassProperty(ci^, 'StoredAccessorName', @GetStoredAccessorName, nil);
  plua_AddClassProperty(ci^, 'DefaultValue', @GetDefaultValue, nil);
  plua_AddClassProperty(ci^, 'IsDefault', @GetIsDefault, nil);
  plua_AddClassProperty(ci^, 'IsNodefault', @GetIsNodefault, nil);
  plua_AddClassProperty(ci^, 'TypeName', @GetTypeName, nil);
  plua_AddClassProperty(ci^, 'ProcType', @GetProcType, nil);
  plua_AddClassProperty(ci^, 'IsVirtual', @GetIsVirtual, nil);
  plua_AddClassProperty(ci^, 'IsDynamic', @GetIsDynamic, nil);
  plua_AddClassProperty(ci^, 'IsAbstract', @GetIsAbstract, nil);
  plua_AddClassProperty(ci^, 'IsOverride', @GetIsOverride, nil);
  plua_AddClassProperty(ci^, 'IsOverload', @GetIsOverload, nil);
  plua_AddClassProperty(ci^, 'IsMessage', @GetIsMessage, nil);
  plua_AddClassProperty(ci^, 'isReintroduced', @GetisReintroduced, nil);
  plua_AddClassProperty(ci^, 'isStatic', @GetisStatic, nil);

  plua_AddClassMethod(ci^, 'GetDeclaration', @GetDeclaration);
  plua_AddClassMethod(ci^, 'GetGetEnumNames', @GetGetEnumNames);
end;

procedure RegisterExistingNode(L: PLua_State; Name: AnsiString;
  Node: TPasElement);
begin
  plua_registerExisting(l, Name, Node, ClassTypesList['TPasElement']);
end;

procedure PushExistingNode(L: PLua_State; Node: TPasElement);
begin
  plua_pushexisting(l, Node, ClassTypesList['TPasElement']);
end;

initialization
  InitClassInfo;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -