#pragma once #include #include #include namespace Fig::Ast { struct FunctionParameters // for define { /* Positional Parameters: fun test(pp1, pp2: Int) Default Parameters: fun test2(dp1 = 10, dp2:String = "default parameter 2") */ using PosParasType = std::vector>; using DefParasType = std::vector>>; PosParasType posParas; DefParasType defParas; // default parameters FunctionParameters() { } FunctionParameters(PosParasType _posParas, DefParasType _defParas) { posParas = std::move(_posParas); defParas = std::move(_defParas); } size_t size() const { return posParas.size() + defParas.size(); } }; }