LCOV - code coverage report
Current view: top level - AP_Scripting/generator/gen - generated_cpp_deps.h (source / functions) Hit Total Coverage
Test: lcov.info Lines: 34 60 56.7 %
Date: 2026-09-09 11:02:08 Functions: 10 14 71.4 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : // for inclusion at the start of the generated .cpp
       4             : 
       5     2281943 : int binding_argcheck(lua_State *L, int expected_arg_count) {
       6     2281943 :     const int args = lua_gettop(L);
       7     2281943 :     if (args > expected_arg_count) {
       8           0 :         return luaL_argerror(L, args, "too many arguments");
       9     2281943 :     } else if (args < expected_arg_count) {
      10           0 :         return luaL_argerror(L, args, "too few arguments");
      11             :     }
      12             :     return 0;
      13             : }
      14             : 
      15           0 : int field_argerror(lua_State *L) {
      16           0 :     return binding_argcheck(L, -1); // force too many args error
      17             : }
      18             : 
      19      127947 : bool userdata_zero_arg_check(lua_State *L) {
      20      127947 :     if (lua_gettop(L) == 0) {
      21             :         return false;
      22             :     }
      23             :     lua_Debug ar;
      24           0 :     if (lua_getstack(L, 1, &ar)) {
      25           0 :         lua_getinfo(L, "Sl", &ar);
      26           0 :         if (ar.currentline != 0) {
      27           0 :             if (lua_getstack(L, 0, &ar)) {
      28           0 :                 lua_getinfo(L, "n", &ar);
      29           0 :                 if (ar.name != NULL) {
      30           0 :                     lua_scripts::set_and_print_new_error_message(MAV_SEVERITY_WARNING, "%s:%d Warning: %s does not take arguments, will be fatal in future", ar.short_src, ar.currentline, ar.name);
      31           0 :                     return true;
      32             :                 }
      33             :             }
      34             :         }
      35             :     }
      36           0 :     lua_scripts::set_and_print_new_error_message(MAV_SEVERITY_WARNING, "Warning: userdata creation does not take arguments, will be fatal in future");
      37           0 :     return true;
      38             : }
      39             : 
      40      257322 : lua_Integer get_integer(lua_State *L, int arg_num, lua_Integer min_val, lua_Integer max_val) {
      41      257322 :     const lua_Integer lua_int = luaL_checkinteger(L, arg_num);
      42      257322 :     luaL_argcheck(L, (lua_int >= min_val) && (lua_int <= max_val), arg_num, "out of range");
      43      257322 :     return lua_int;
      44             : }
      45             : 
      46             : // helpers for full range types
      47       17063 : int8_t get_int8_t(lua_State *L, int arg_num) {
      48       17063 :     return static_cast<int8_t>(get_integer(L, arg_num, INT8_MIN, INT8_MAX));
      49             : }
      50             : 
      51           0 : int16_t get_int16_t(lua_State *L, int arg_num) {
      52           0 :     return static_cast<int16_t>(get_integer(L, arg_num, INT16_MIN, INT16_MAX));
      53             : }
      54             : 
      55       34479 : uint8_t get_uint8_t(lua_State *L, int arg_num) {
      56       34479 :     return static_cast<uint8_t>(get_integer(L, arg_num, 0, UINT8_MAX));
      57             : }
      58             : 
      59       56406 : uint16_t get_uint16_t(lua_State *L, int arg_num) {
      60       56406 :     return static_cast<uint16_t>(get_integer(L, arg_num, 0, UINT16_MAX));
      61             : }
      62             : 
      63        6220 : float get_number(lua_State *L, int arg_num, float min_val, float max_val) {
      64        6220 :     const float lua_num = luaL_checknumber(L, arg_num);
      65        6220 :     luaL_argcheck(L, (lua_num >= min_val) && (lua_num <= max_val), arg_num, "out of range");
      66        6220 :     return lua_num;
      67             : }
      68             : 
      69          81 : uint32_t get_uint32(lua_State *L, int arg_num, uint32_t min_val, uint32_t max_val) {
      70          81 :     const uint32_t lua_unint32 = coerce_to_uint32_t(L, arg_num);
      71          81 :     luaL_argcheck(L, (lua_unint32 >= min_val) && (lua_unint32 <= max_val), arg_num, "out of range");
      72          81 :     return lua_unint32;
      73             : }
      74             : 
      75       60298 : void ** check_ap_object(lua_State *L, int arg_num, const char * name) {
      76       60298 :     void ** data = (void **)luaL_checkudata(L, arg_num, name);
      77       60298 :     if (*data == NULL) {
      78           0 :         luaL_error(L, "internal error: %s is null", name); // does not return
      79             :     }
      80       60298 :     return data;
      81             : }
      82             : 
      83           0 : static int not_supported_error(lua_State *L, int arg, const char* name) {
      84             :     char error_msg[50];
      85           0 :     snprintf(error_msg, sizeof(error_msg), "%s not supported on this firmware", name);
      86           0 :     return luaL_argerror(L, arg, error_msg);
      87             : }
      88             : 
      89             : struct userdata_enum {
      90             :     const char *name;
      91             :     int value;
      92             : };
      93             : 
      94             : struct userdata_meta {
      95             :     const char *name;
      96             :     lua_CFunction func;
      97             :     const luaL_Reg *operators;
      98             : };
      99             : 
     100     3111228 : static int load_function(lua_State *L, const luaL_Reg *list, const uint8_t length) {
     101     3111228 :     const char * name = luaL_checkstring(L, 2);
     102    30802493 :     for (uint8_t i = 0; i < length; i++) {
     103    30802493 :         if (strcmp(name,list[i].name) == 0) {
     104     3111228 :             lua_pushcfunction(L, list[i].func);
     105     3111228 :             return 1;
     106             :         }
     107             :     }
     108             :     return 0;
     109             : }
     110             : 
     111             : #pragma GCC diagnostic push
     112             : #pragma GCC diagnostic ignored "-Wunused-function"
     113           0 : static int load_enum(lua_State *L, const userdata_enum *list, const uint8_t length) {
     114           0 :     const char * name = luaL_checkstring(L, 2);
     115           0 :     for (uint8_t i = 0; i < length; i++) {
     116           0 :         if (strcmp(name,list[i].name) == 0) {
     117           0 :             lua_pushinteger(L, list[i].value);
     118           0 :             return 1;
     119             :         }
     120             :     }
     121             :     return 0;
     122             : }
     123             : #pragma GCC diagnostic pop

Generated by: LCOV version 1.14