#include "function.h" #include #include struct t_parameter { std::string name; uint32_t type; }; struct t_function { std::string name; uint32_t address; uint32_t type; std::vector parameters; }; static std::vector functions; static int current_function = -1; const bool function_register(const std::string name, const uint32_t address) { for (auto f : functions) if (f.name == name) return false; functions.push_back({name, address}); current_function = functions.size()-1; return true; } void function_set_type(const uint32_t type) { functions[current_function].type = type; } const int function_get_type() { return functions[current_function].type; } const bool function_parameter_add(const std::string name, const uint32_t type) { for (auto p : functions[current_function].parameters) if (p.name == name) return false; functions[current_function].parameters.push_back({name, type}); return true; } const bool function_exists(const std::string name) { for (auto f : functions) if (f.name == name) return true; return false; } const uint32_t function_get_address(const std::string name) { for (auto f : functions) if (f.name == name) return f.address; return 0; } const int function_get_num_parameters() { return functions[current_function].parameters.size(); } const int function_get_parameter_type(const int index) { return functions[current_function].parameters[index].type; }