hedgewars/uScript.pas
changeset 10285 03b615d3c6e1
parent 10284 e9c85a0acdd2
child 10286 1940e937fc08
equal deleted inserted replaced
10284:e9c85a0acdd2 10285:03b615d3c6e1
   117 procedure LuaCallError(error, call, paramsyntax: shortstring);
   117 procedure LuaCallError(error, call, paramsyntax: shortstring);
   118 begin
   118 begin
   119     LuaError(call + ': ' + error + '       function syntax: ' + call + ' ( ' + paramsyntax + ' )');
   119     LuaError(call + ': ' + error + '       function syntax: ' + call + ' ( ' + paramsyntax + ' )');
   120 end;
   120 end;
   121 
   121 
       
   122 procedure LuaParameterCountError(expected, call, paramsyntax: shortstring; wrongcount: LongInt); inline;
       
   123 begin
       
   124     // TODO: i18n?
       
   125     LuaCallError('Wrong number of parameters! (is: ' + inttostr(wrongcount) + ', should be: '+ expected + ')', call, paramsyntax);
       
   126 end;
       
   127 
       
   128 // TODO remove this precedure after all references have been changed to one of the checks below
   122 procedure LuaParameterCountError(call, paramsyntax: shortstring; wrongcount: LongInt); inline;
   129 procedure LuaParameterCountError(call, paramsyntax: shortstring; wrongcount: LongInt); inline;
   123 begin
   130 begin
   124     // TODO: i18n?
   131     LuaCallError('Wrong number of parameters! (actual: ' + inttostr(wrongcount) + ')', call, paramsyntax);
   125     LuaCallError('Wrong number of parameters (' + inttostr(wrongcount) + ')!', call, paramsyntax);
       
   126 end;
   132 end;
   127 
   133 
   128 // compare with allowed count
   134 // compare with allowed count
   129 function CheckLuaParameterCount(L : Plua_State; count: LongInt; call, paramsyntax: shortstring): boolean; inline;
   135 function CheckLuaParameterCount(L : Plua_State; count: LongInt; call, paramsyntax: shortstring): boolean; inline;
   130 var c: LongInt;
   136 var c: LongInt;
   131 begin
   137 begin
   132     c:= lua_gettop(L);
   138     c:= lua_gettop(L);
   133     if c <> count then
   139     if c <> count then
   134         begin
   140         begin
   135         LuaParameterCountError(call, paramsyntax, c);
   141         LuaParameterCountError('exactly ' + inttostr(count), call, paramsyntax, c);
   136         exit(false);
   142         exit(false);
   137         end;
   143         end;
   138 
   144 
   139     CheckLuaParameterCount:= true;
   145     CheckLuaParameterCount:= true;
   140 end;
   146 end;
   143 function CheckAndFetchLuaParameterCount(L : Plua_State; count1, count2: LongInt; call, paramsyntax: shortstring; out actual: LongInt): boolean; inline;
   149 function CheckAndFetchLuaParameterCount(L : Plua_State; count1, count2: LongInt; call, paramsyntax: shortstring; out actual: LongInt): boolean; inline;
   144 begin
   150 begin
   145     actual:= lua_gettop(L);
   151     actual:= lua_gettop(L);
   146     if (actual <> count1) and (actual <> count2) then
   152     if (actual <> count1) and (actual <> count2) then
   147         begin
   153         begin
   148         LuaParameterCountError(call, paramsyntax, actual);
   154         LuaParameterCountError('either ' + inttostr(count1) + ' or ' + inttostr(count2), call, paramsyntax, actual);
   149         exit(false);
   155         exit(false);
   150         end;
   156         end;
   151 
   157 
   152     CheckAndFetchLuaParameterCount:= true;
   158     CheckAndFetchLuaParameterCount:= true;
   153 end;
   159 end;
   156 function CheckAndFetchLuaParameterCount(L : Plua_State; minCount: LongInt; call, paramsyntax: shortstring; out actual: LongInt): boolean; inline;
   162 function CheckAndFetchLuaParameterCount(L : Plua_State; minCount: LongInt; call, paramsyntax: shortstring; out actual: LongInt): boolean; inline;
   157 begin
   163 begin
   158     actual:= lua_gettop(L);
   164     actual:= lua_gettop(L);
   159     if (actual < minCount) then
   165     if (actual < minCount) then
   160         begin
   166         begin
   161         LuaParameterCountError(call, paramsyntax, actual);
   167         LuaParameterCountError(inttostr(minCount) + ' or more', call, paramsyntax, actual);
   162         exit(false);
   168         exit(false);
   163         end;
   169         end;
   164 
   170 
   165     CheckAndFetchLuaParameterCount:= true;
   171     CheckAndFetchLuaParameterCount:= true;
   166 end;
   172 end;