polserver/pol-core/bscript/compiler/representation/FunctionReferenceDescriptor.cpp
Kevin Eady a953a37fa7 Support function reference calls with default parameters (#710)
* Support default args in funcref calls
- Simplify BFunctionRef by using funcref index
- Emit default args when visiting function reference

* Move default args gen to second-pass visit

* Better error message on param count errors

* Check for constructor in MTH_NEW

* Address self-review comments
- Update code comments

* Introduce ResourceManager to pol testsuite
- Create a new class-based resource manager for deleting resources
(item NPCs, multis) after each test.
- Migrate house_set_multiid test to use new ResourceManager.

* Move resource cleanup
2024-10-10 18:06:04 +02:00

52 lines
1.3 KiB
C++

#include "FunctionReferenceDescriptor.h"
namespace Pol::Bscript::Compiler
{
FunctionReferenceDescriptor::FunctionReferenceDescriptor(
unsigned address, int parameter_count, int capture_count, bool is_variadic,
unsigned class_index, bool is_constructor, std::vector<unsigned> default_parameter_addresses )
: address_( address ),
parameter_count_( parameter_count ),
capture_count_( capture_count ),
is_variadic_( is_variadic ),
class_index_( class_index ),
is_constructor_( is_constructor ),
default_parameter_addresses_( std::move( default_parameter_addresses ) )
{
}
unsigned FunctionReferenceDescriptor::address() const
{
return address_;
}
int FunctionReferenceDescriptor::parameter_count() const
{
return parameter_count_;
}
int FunctionReferenceDescriptor::capture_count() const
{
return capture_count_;
}
bool FunctionReferenceDescriptor::is_variadic() const
{
return is_variadic_;
}
unsigned FunctionReferenceDescriptor::class_index() const
{
return class_index_;
}
bool FunctionReferenceDescriptor::is_constructor() const
{
return is_constructor_;
}
const std::vector<unsigned>& FunctionReferenceDescriptor::default_parameter_addresses() const
{
return default_parameter_addresses_;
}
} // namespace Pol::Bscript::Compiler