1421 * @name Type-Qualified Function Export Macros
1422 *
1423 * These macros export C++ functions to Python with explicit type qualification to resolve
1424 * function overload ambiguities. They provide fine-grained control over function signatures
1425 * and are essential when exporting overloaded functions that would otherwise be ambiguous.
1426 *
1427 * The macros are organized in layers:
1428 * - PY_MODULE_FUNCTION_QUALIFIED_EX(): Full control with custom dispatcher and meta::TypeTuple for parameters
1429 * - PY_MODULE_FUNCTION_QUALIFIED_EX_0() through PY_MODULE_FUNCTION_QUALIFIED_EX_15(): Full control with custom dispatcher, for 0-15 parameters
1430 * - PY_MODULE_FUNCTION_QUALIFIED_NAME_DOC(): Automatic dispatcher with custom name and documentation, and meta::TypeTuple for parameters
1431 * - PY_MODULE_FUNCTION_QUALIFIED_NAME_DOC_0() through PY_MODULE_FUNCTION_QUALIFIED_NAME_DOC_15(): Automatic dispatcher with custom name, for 0-15 parameters
1432 * - PY_MODULE_FUNCTION_QUALIFIED_NAME(): Automatic dispatcher with custom name, no documentation, and meta::TypeTuple for parameters
1433 * - PY_MODULE_FUNCTION_QUALIFIED_NAME_0() through PY_MODULE_FUNCTION_QUALIFIED_NAME_15(): Automatic dispatcher with custom name, no documentation, for 0-15 parameters
1434 * - PY_MODULE_FUNCTION_QUALIFIED_DOC(): Automatic dispatcher with documentation, and meta::TypeTuple for parameters
1435 * - PY_MODULE_FUNCTION_QUALIFIED_DOC_0() through PY_MODULE_FUNCTION_QUALIFIED_DOC_15(): Automatic dispatcher with documentation, for 0-15 parameters
1436 * - PY_MODULE_FUNCTION_QUALIFIED(): Automatic dispatcher, no documentation, and meta::TypeTuple for parameters
1437 * - PY_MODULE_FUNCTION_QUALIFIED_0() through PY_MODULE_FUNCTION_QUALIFIED_15(): Automatic dispatcher, no documentation, for 0-15 parameters
1438 *
1439 * @{
1440 */
1441
1442
1443/** @ingroup ModuleDefinition
1444 * Export a C++ free function to Python with explicit type qualification to resolve ambiguities.
1445 *
1446 * Use this macro instead of PY_MODULE_FUNCTION_EX when there are overloaded C++ functions
1447 * that would create ambiguity. By explicitly specifying return type and parameter types,
1448 * you can disambiguate which overload to export.
1449 *
1450 * @param i_module Module identifier declared by PY_DECLARE_MODULE_*
1451 * @param f_cppFunction C++ function to export (can be overloaded)
1452 * @param t_return Return type of the function (for disambiguation)
1453 * @param t_params Parameter types as lass::meta::TypeTuple (for disambiguation)
1454 * @param s_functionName Python function name (const char* string with static storage duration)
1455 * @param s_doc Function documentation string (const char* string with static storage duration, or nullptr)
1456 * @param i_dispatcher Unique name for the generated dispatcher function (must be unscoped identifier for token concatenation)
1457 *
1458 * This macro helps resolve function overload ambiguities by explicitly specifying
1459 * the function signature to export.
1460 *
1461 * @par Example:
1462 * @code
1463 * void bar(int a);
1464 * void bar(const std::string& b);
1465 *
1466 * PY_MODULE_FUNCTION_QUALIFIED_EX(foo_module, bar, void, meta::TypeTuple<int>, "bar", nullptr, foo_bar_a)
1467 * PY_MODULE_FUNCTION_QUALIFIED_EX(foo_module, bar, void, meta::TypeTuple<const std::string&>, "bar", nullptr, foo_bar_b)
3314 * These macros export C++ class methods to Python with explicit type qualification to resolve
3315 * method overload ambiguities. They provide fine-grained control over method signatures
3316 * and are essential when exporting overloaded methods that would otherwise be ambiguous.
3317 *
3318 * Use these macros when you have overloaded C++ methods and need to specify exactly which
3319 * overload to export to Python by providing explicit return and parameter types.
3320 *
3321 * The macros are organized in layers:
3322 * - PY_CLASS_METHOD_QUALIFIED_EX(): Full control with custom dispatcher and meta::TypeTuple for parameters
3323 * - PY_CLASS_METHOD_QUALIFIED_EX_0() through PY_CLASS_METHOD_QUALIFIED_EX_15(): Full control with custom dispatcher, for 0-15 parameters
3324 * - PY_CLASS_METHOD_QUALIFIED_NAME_DOC(): Automatic dispatcher with custom name and documentation, and meta::TypeTuple for parameters
3325 * - PY_CLASS_METHOD_QUALIFIED_NAME_DOC_0() through PY_CLASS_METHOD_QUALIFIED_NAME_DOC_15(): Automatic dispatcher with custom name, for 0-15 parameters
3326 * - PY_CLASS_METHOD_QUALIFIED_NAME(): Automatic dispatcher with custom name, no documentation, and meta::TypeTuple for parameters
3327 * - PY_CLASS_METHOD_QUALIFIED_NAME_0() through PY_CLASS_METHOD_QUALIFIED_NAME_15(): Automatic dispatcher with custom name, no documentation, for 0-15 parameters
3328 * - PY_CLASS_METHOD_QUALIFIED_DOC(): Automatic dispatcher with documentation, and meta::TypeTuple for parameters
3329 * - PY_CLASS_METHOD_QUALIFIED_DOC_0() through PY_CLASS_METHOD_QUALIFIED_DOC_15(): Automatic dispatcher with documentation, for 0-15 parameters
3330 * - PY_CLASS_METHOD_QUALIFIED(): Automatic dispatcher, no documentation, and meta::TypeTuple for parameters
3331 * - PY_CLASS_METHOD_QUALIFIED_0() through PY_CLASS_METHOD_QUALIFIED_15(): Automatic dispatcher, no documentation, for 0-15 parameters
3332 *
3333 * @{
3334 */
3335
3336/** @ingroup ClassDefinition
3337 * @brief Export a C++ method to Python with explicit type qualification to resolve ambiguities.
3338 *
3339 * Use this macro instead of PY_CLASS_METHOD_EX when there are overloaded C++ methods
3340 * that would create ambiguity. By explicitly specifying return type and parameter types,
3341 * you can disambiguate which overload to export.
3342 *
3343 * @param t_cppClass C++ class containing the method
3344 * @param i_cppMethod C++ method name to export (can be overloaded)
3345 * @param t_return Return type of the method (for disambiguation)
3346 * @param t_params Parameter types as lass::meta::TypeTuple (for disambiguation)
3347 * @param s_methodName Python method name (null-terminated C string literal or special method from lass::python::methods namespace)
3348 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
3349 * @param i_dispatcher Unique identifier for the generated dispatcher function
3350 *
3351 * This macro helps resolve method overload ambiguities by explicitly specifying
3352 * the method signature to export. Overloads can be mixed with PY_CLASS_METHOD_EX methods.
3353 *
3354 * ```cpp
3355 * class Foo {
3356 * PY_HEADER(python::PyObjectPlus)
3357 * public:
3358 * void bar(int a);
3359 * void bar(const std::string& b) const;
3360 * };
3361 *
3362 * PY_DECLARE_CLASS(Foo)
3363 * PY_CLASS_METHOD_QUALIFIED_EX(Foo, bar, void, meta::TypeTuple<int>, "bar", nullptr, foo_bar_a)
3364 * PY_CLASS_METHOD_QUALIFIED_EX(Foo, bar, void, meta::TypeTuple<const std::string&>, "bar", nullptr, foo_bar_b)
3365 * // Python: foo_instance.bar(42) or foo_instance.bar("hello")
6087 * @brief Export a C++ free function as a Python method with type qualification for 0-parameter functions and custom documentation (method name derived from function name).
6088 *
6089 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_0() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6090 *
6091 * @param i_cppClass C++ class you're exporting the method for
6092 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 0 parameters, used as Python method name, can be overloaded)
6093 * @param t_return Return type of the free function (for disambiguation)
6094 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6103 * @brief Export a C++ free function as a Python method with type qualification for 1-parameter functions and custom documentation (method name derived from function name).
6104 *
6105 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_1() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6106 *
6107 * @param i_cppClass C++ class you're exporting the method for
6108 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 1 parameters, used as Python method name, can be overloaded)
6109 * @param t_return Return type of the free function (for disambiguation)
6110 * @param t_P1 Parameter types for the free function (disambiguation)
6111 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6120 * @brief Export a C++ free function as a Python method with type qualification for 2-parameter functions and custom documentation (method name derived from function name).
6121 *
6122 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_2() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6123 *
6124 * @param i_cppClass C++ class you're exporting the method for
6125 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 2 parameters, used as Python method name, can be overloaded)
6126 * @param t_return Return type of the free function (for disambiguation)
6127 * @param t_P1, t_P2 Parameter types for the free function (disambiguation)
6128 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6137 * @brief Export a C++ free function as a Python method with type qualification for 3-parameter functions and custom documentation (method name derived from function name).
6138 *
6139 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_3() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6140 *
6141 * @param i_cppClass C++ class you're exporting the method for
6142 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 3 parameters, used as Python method name, can be overloaded)
6143 * @param t_return Return type of the free function (for disambiguation)
6144 * @param t_P1, t_P2, t_P3 Parameter types for the free function (disambiguation)
6145 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6154 * @brief Export a C++ free function as a Python method with type qualification for 4-parameter functions and custom documentation (method name derived from function name).
6155 *
6156 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_4() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6157 *
6158 * @param i_cppClass C++ class you're exporting the method for
6159 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 4 parameters, used as Python method name, can be overloaded)
6160 * @param t_return Return type of the free function (for disambiguation)
6161 * @param t_P1, t_P2, t_P3, t_P4 Parameter types for the free function (disambiguation)
6162 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6171 * @brief Export a C++ free function as a Python method with type qualification for 5-parameter functions and custom documentation (method name derived from function name).
6172 *
6173 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_5() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6174 *
6175 * @param i_cppClass C++ class you're exporting the method for
6176 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 5 parameters, used as Python method name, can be overloaded)
6177 * @param t_return Return type of the free function (for disambiguation)
6178 * @param t_P1, t_P2, t_P3, t_P4, t_P5 Parameter types for the free function (disambiguation)
6179 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6188 * @brief Export a C++ free function as a Python method with type qualification for 6-parameter functions and custom documentation (method name derived from function name).
6189 *
6190 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_6() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6191 *
6192 * @param i_cppClass C++ class you're exporting the method for
6193 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 6 parameters, used as Python method name, can be overloaded)
6194 * @param t_return Return type of the free function (for disambiguation)
6195 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6 Parameter types for the free function (disambiguation)
6196 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6205 * @brief Export a C++ free function as a Python method with type qualification for 7-parameter functions and custom documentation (method name derived from function name).
6206 *
6207 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_7() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6208 *
6209 * @param i_cppClass C++ class you're exporting the method for
6210 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 7 parameters, used as Python method name, can be overloaded)
6211 * @param t_return Return type of the free function (for disambiguation)
6212 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7 Parameter types for the free function (disambiguation)
6213 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6222 * @brief Export a C++ free function as a Python method with type qualification for 8-parameter functions and custom documentation (method name derived from function name).
6223 *
6224 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_8() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6225 *
6226 * @param i_cppClass C++ class you're exporting the method for
6227 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 8 parameters, used as Python method name, can be overloaded)
6228 * @param t_return Return type of the free function (for disambiguation)
6229 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8 Parameter types for the free function (disambiguation)
6230 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6239 * @brief Export a C++ free function as a Python method with type qualification for 9-parameter functions and custom documentation (method name derived from function name).
6240 *
6241 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_9() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6242 *
6243 * @param i_cppClass C++ class you're exporting the method for
6244 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 9 parameters, used as Python method name, can be overloaded)
6245 * @param t_return Return type of the free function (for disambiguation)
6246 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8, t_P9 Parameter types for the free function (disambiguation)
6247 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6256 * @brief Export a C++ free function as a Python method with type qualification for 10-parameter functions and custom documentation (method name derived from function name).
6257 *
6258 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_10() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6259 *
6260 * @param i_cppClass C++ class you're exporting the method for
6261 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 10 parameters, used as Python method name, can be overloaded)
6262 * @param t_return Return type of the free function (for disambiguation)
6263 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8, t_P9, t_P10 Parameter types for the free function (disambiguation)
6264 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6273 * @brief Export a C++ free function as a Python method with type qualification for 11-parameter functions and custom documentation (method name derived from function name).
6274 *
6275 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_11() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6276 *
6277 * @param i_cppClass C++ class you're exporting the method for
6278 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 11 parameters, used as Python method name, can be overloaded)
6279 * @param t_return Return type of the free function (for disambiguation)
6280 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8, t_P9, t_P10, t_P11 Parameter types for the free function (disambiguation)
6281 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6290 * @brief Export a C++ free function as a Python method with type qualification for 12-parameter functions and custom documentation (method name derived from function name).
6291 *
6292 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_12() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6293 *
6294 * @param i_cppClass C++ class you're exporting the method for
6295 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 12 parameters, used as Python method name, can be overloaded)
6296 * @param t_return Return type of the free function (for disambiguation)
6297 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8, t_P9, t_P10, t_P11, t_P12 Parameter types for the free function (disambiguation)
6298 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6307 * @brief Export a C++ free function as a Python method with type qualification for 13-parameter functions and custom documentation (method name derived from function name).
6308 *
6309 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_13() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6310 *
6311 * @param i_cppClass C++ class you're exporting the method for
6312 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 13 parameters, used as Python method name, can be overloaded)
6313 * @param t_return Return type of the free function (for disambiguation)
6314 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8, t_P9, t_P10, t_P11, t_P12, t_P13 Parameter types for the free function (disambiguation)
6315 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6324 * @brief Export a C++ free function as a Python method with type qualification for 14-parameter functions and custom documentation (method name derived from function name).
6325 *
6326 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_14() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6327 *
6328 * @param i_cppClass C++ class you're exporting the method for
6329 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 14 parameters, used as Python method name, can be overloaded)
6330 * @param t_return Return type of the free function (for disambiguation)
6331 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8, t_P9, t_P10, t_P11, t_P12, t_P13, t_P14 Parameter types for the free function (disambiguation)
6332 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6341 * @brief Export a C++ free function as a Python method with type qualification for 15-parameter functions and custom documentation (method name derived from function name).
6342 *
6343 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_NAME_DOC_15() with s_methodName = LASS_STRINGIFY(i_cppFreeMethod).
6344 *
6345 * @param i_cppClass C++ class you're exporting the method for
6346 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 15 parameters, used as Python method name, can be overloaded)
6347 * @param t_return Return type of the free function (for disambiguation)
6348 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8, t_P9, t_P10, t_P11, t_P12, t_P13, t_P14, t_P15 Parameter types for the free function (disambiguation)
6349 * @param s_doc Method documentation string (null-terminated C string literal, may be nullptr)
6374 * @brief Export a C++ free function as a Python method with type qualification for 0-parameter functions (method name derived from function name, no documentation).
6375 *
6376 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_0() with s_doc = nullptr.
6377 *
6378 * @param i_cppClass C++ class you're exporting the method for
6379 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 0 parameters, used as Python method name, can be overloaded)
6380 * @param t_return Return type of the free function (for disambiguation)
6388 * @brief Export a C++ free function as a Python method with type qualification for 1-parameter functions (method name derived from function name, no documentation).
6389 *
6390 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_1() with s_doc = nullptr.
6391 *
6392 * @param i_cppClass C++ class you're exporting the method for
6393 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 1 parameters, used as Python method name, can be overloaded)
6394 * @param t_return Return type of the free function (for disambiguation)
6395 * @param t_P1 Parameter types for the free function (for disambiguation)
6403 * @brief Export a C++ free function as a Python method with type qualification for 2-parameter functions (method name derived from function name, no documentation).
6404 *
6405 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_2() with s_doc = nullptr.
6406 *
6407 * @param i_cppClass C++ class you're exporting the method for
6408 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 2 parameters, used as Python method name, can be overloaded)
6409 * @param t_return Return type of the free function (for disambiguation)
6410 * @param t_P1, t_P2 Parameter types for the free function (for disambiguation)
6418 * @brief Export a C++ free function as a Python method with type qualification for 3-parameter functions (method name derived from function name, no documentation).
6419 *
6420 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_3() with s_doc = nullptr.
6421 *
6422 * @param i_cppClass C++ class you're exporting the method for
6423 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 3 parameters, used as Python method name, can be overloaded)
6424 * @param t_return Return type of the free function (for disambiguation)
6425 * @param t_P1, t_P2, t_P3 Parameter types for the free function (for disambiguation)
6433 * @brief Export a C++ free function as a Python method with type qualification for 4-parameter functions (method name derived from function name, no documentation).
6434 *
6435 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_4() with s_doc = nullptr.
6436 *
6437 * @param i_cppClass C++ class you're exporting the method for
6438 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 4 parameters, used as Python method name, can be overloaded)
6439 * @param t_return Return type of the free function (for disambiguation)
6440 * @param t_P1, t_P2, t_P3, t_P4 Parameter types for the free function (for disambiguation)
6448 * @brief Export a C++ free function as a Python method with type qualification for 5-parameter functions (method name derived from function name, no documentation).
6449 *
6450 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_5() with s_doc = nullptr.
6451 *
6452 * @param i_cppClass C++ class you're exporting the method for
6453 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 5 parameters, used as Python method name, can be overloaded)
6454 * @param t_return Return type of the free function (for disambiguation)
6455 * @param t_P1, t_P2, t_P3, t_P4, t_P5 Parameter types for the free function (for disambiguation)
6463 * @brief Export a C++ free function as a Python method with type qualification for 6-parameter functions (method name derived from function name, no documentation).
6464 *
6465 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_6() with s_doc = nullptr.
6466 *
6467 * @param i_cppClass C++ class you're exporting the method for
6468 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 6 parameters, used as Python method name, can be overloaded)
6469 * @param t_return Return type of the free function (for disambiguation)
6470 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6 Parameter types for the free function (for disambiguation)
6478 * @brief Export a C++ free function as a Python method with type qualification for 7-parameter functions (method name derived from function name, no documentation).
6479 *
6480 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_7() with s_doc = nullptr.
6481 *
6482 * @param i_cppClass C++ class you're exporting the method for
6483 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 7 parameters, used as Python method name, can be overloaded)
6484 * @param t_return Return type of the free function (for disambiguation)
6485 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7 Parameter types for the free function (for disambiguation)
6493 * @brief Export a C++ free function as a Python method with type qualification for 8-parameter functions (method name derived from function name, no documentation).
6494 *
6495 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_8() with s_doc = nullptr.
6496 *
6497 * @param i_cppClass C++ class you're exporting the method for
6498 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 8 parameters, used as Python method name, can be overloaded)
6499 * @param t_return Return type of the free function (for disambiguation)
6500 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8 Parameter types for the free function (for disambiguation)
6508 * @brief Export a C++ free function as a Python method with type qualification for 9-parameter functions (method name derived from function name, no documentation).
6509 *
6510 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_9() with s_doc = nullptr.
6511 *
6512 * @param i_cppClass C++ class you're exporting the method for
6513 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 9 parameters, used as Python method name, can be overloaded)
6514 * @param t_return Return type of the free function (for disambiguation)
6515 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8, t_P9 Parameter types for the free function (for disambiguation)
6523 * @brief Export a C++ free function as a Python method with type qualification for 10-parameter functions (method name derived from function name, no documentation).
6524 *
6525 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_10() with s_doc = nullptr.
6526 *
6527 * @param i_cppClass C++ class you're exporting the method for
6528 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 10 parameters, used as Python method name, can be overloaded)
6529 * @param t_return Return type of the free function (for disambiguation)
6530 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8, t_P9, t_P10 Parameter types for the free function (for disambiguation)
6538 * @brief Export a C++ free function as a Python method with type qualification for 11-parameter functions (method name derived from function name, no documentation).
6539 *
6540 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_11() with s_doc = nullptr.
6541 *
6542 * @param i_cppClass C++ class you're exporting the method for
6543 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 11 parameters, used as Python method name, can be overloaded)
6544 * @param t_return Return type of the free function (for disambiguation)
6545 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8, t_P9, t_P10, t_P11 Parameter types for the free function (for disambiguation)
6553 * @brief Export a C++ free function as a Python method with type qualification for 12-parameter functions (method name derived from function name, no documentation).
6554 *
6555 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_12() with s_doc = nullptr.
6556 *
6557 * @param i_cppClass C++ class you're exporting the method for
6558 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 12 parameters, used as Python method name, can be overloaded)
6559 * @param t_return Return type of the free function (for disambiguation)
6560 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8, t_P9, t_P10, t_P11, t_P12 Parameter types for the free function (for disambiguation)
6568 * @brief Export a C++ free function as a Python method with type qualification for 13-parameter functions (method name derived from function name, no documentation).
6569 *
6570 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_13() with s_doc = nullptr.
6571 *
6572 * @param i_cppClass C++ class you're exporting the method for
6573 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 13 parameters, used as Python method name, can be overloaded)
6574 * @param t_return Return type of the free function (for disambiguation)
6575 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8, t_P9, t_P10, t_P11, t_P12, t_P13 Parameter types for the free function (for disambiguation)
6583 * @brief Export a C++ free function as a Python method with type qualification for 14-parameter functions (method name derived from function name, no documentation).
6584 *
6585 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_14() with s_doc = nullptr.
6586 *
6587 * @param i_cppClass C++ class you're exporting the method for
6588 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 14 parameters, used as Python method name, can be overloaded)
6589 * @param t_return Return type of the free function (for disambiguation)
6590 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8, t_P9, t_P10, t_P11, t_P12, t_P13, t_P14 Parameter types for the free function (for disambiguation)
6598 * @brief Export a C++ free function as a Python method with type qualification for 15-parameter functions (method name derived from function name, no documentation).
6599 *
6600 * Convenience macro that wraps PY_CLASS_FREE_METHOD_QUALIFIED_DOC_15() with s_doc = nullptr.
6601 *
6602 * @param i_cppClass C++ class you're exporting the method for
6603 * @param i_cppFreeMethod C++ function identifier to export (must be valid identifier, 15 parameters, used as Python method name, can be overloaded)
6604 * @param t_return Return type of the free function (for disambiguation)
6605 * @param t_P1, t_P2, t_P3, t_P4, t_P5, t_P6, t_P7, t_P8, t_P9, t_P10, t_P11, t_P12, t_P13, t_P14, t_P15 Parameter types for the free function (for disambiguation)
7593// --- data members --------------------------------------------------------------------------------
7594
7595/** @addtogroup ClassDefinition
7596 * @name Data Member Export Macros
7597 *
7598 * Export C++ class data members as Python properties/attributes.
7599 * These macros create Python properties that provide access to C++ class
7600 * data through various access patterns: getter/setter methods, free functions,
7601 * or direct public member access.
7602 *
7603 * | Member Methods (Read/Write) | Member Methods (Read-only) | Free Functions (Read/Write) | Free Functions (Read-only) | Public Member (Read/Write) | Public Member (Read-only) |
8506 * @brief Export C++ constructor as Python class constructor with 5 parameters.
8507 *
8508 * Convenience macro for exporting a C++ constructor with exactly 5 parameters.
8509 * Automatically creates the required meta::TypeTuple from the parameter types.
8510 *
8511 * @param t_cppClass C++ class to add the constructor to
8512 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5
8523 * @brief Export C++ constructor as Python class constructor with 6 parameters.
8524 *
8525 * Convenience macro for exporting a C++ constructor with exactly 6 parameters.
8526 * Automatically creates the required meta::TypeTuple from the parameter types.
8527 *
8528 * @param t_cppClass C++ class to add the constructor to
8529 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6
8540 * @brief Export C++ constructor as Python class constructor with 7 parameters.
8541 *
8542 * Convenience macro for exporting a C++ constructor with exactly 7 parameters.
8543 * Automatically creates the required meta::TypeTuple from the parameter types.
8544 *
8545 * @param t_cppClass C++ class to add the constructor to
8546 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7
8557 * @brief Export C++ constructor as Python class constructor with 8 parameters.
8558 *
8559 * Convenience macro for exporting a C++ constructor with exactly 8 parameters.
8560 * Automatically creates the required meta::TypeTuple from the parameter types.
8561 *
8562 * @param t_cppClass C++ class to add the constructor to
8563 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8
8574 * @brief Export C++ constructor as Python class constructor with 9 parameters.
8575 *
8576 * Convenience macro for exporting a C++ constructor with exactly 9 parameters.
8577 * Automatically creates the required meta::TypeTuple from the parameter types.
8578 *
8579 * @param t_cppClass C++ class to add the constructor to
8580 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8, @param t_P9 Type of parameter 9
8591 * @brief Export C++ constructor as Python class constructor with 10 parameters.
8592 *
8593 * Convenience macro for exporting a C++ constructor with exactly 10 parameters.
8594 * Automatically creates the required meta::TypeTuple from the parameter types.
8595 *
8596 * @param t_cppClass C++ class to add the constructor to
8597 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8, @param t_P9 Type of parameter 9, @param t_P10 Type of parameter 10
8608 * @brief Export C++ constructor as Python class constructor with 11 parameters.
8609 *
8610 * Convenience macro for exporting a C++ constructor with exactly 11 parameters.
8611 * Automatically creates the required meta::TypeTuple from the parameter types.
8612 *
8613 * @param t_cppClass C++ class to add the constructor to
8614 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8, @param t_P9 Type of parameter 9, @param t_P10 Type of parameter 10, @param t_P11 Type of parameter 11
8625 * @brief Export C++ constructor as Python class constructor with 12 parameters.
8626 *
8627 * Convenience macro for exporting a C++ constructor with exactly 12 parameters.
8628 * Automatically creates the required meta::TypeTuple from the parameter types.
8629 *
8630 * @param t_cppClass C++ class to add the constructor to
8631 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8, @param t_P9 Type of parameter 9, @param t_P10 Type of parameter 10, @param t_P11 Type of parameter 11, @param t_P12 Type of parameter 12
8642 * @brief Export C++ constructor as Python class constructor with 13 parameters.
8643 *
8644 * Convenience macro for exporting a C++ constructor with exactly 13 parameters.
8645 * Automatically creates the required meta::TypeTuple from the parameter types.
8646 *
8647 * @param t_cppClass C++ class to add the constructor to
8648 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8, @param t_P9 Type of parameter 9, @param t_P10 Type of parameter 10, @param t_P11 Type of parameter 11, @param t_P12 Type of parameter 12, @param t_P13 Type of parameter 13
8659 * @brief Export C++ constructor as Python class constructor with 14 parameters.
8660 *
8661 * Convenience macro for exporting a C++ constructor with exactly 14 parameters.
8662 * Automatically creates the required meta::TypeTuple from the parameter types.
8663 *
8664 * @param t_cppClass C++ class to add the constructor to
8665 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8, @param t_P9 Type of parameter 9, @param t_P10 Type of parameter 10, @param t_P11 Type of parameter 11, @param t_P12 Type of parameter 12, @param t_P13 Type of parameter 13, @param t_P14 Type of parameter 14
8676 * @brief Export C++ constructor as Python class constructor with 15 parameters.
8677 *
8678 * Convenience macro for exporting a C++ constructor with exactly 15 parameters.
8679 * Automatically creates the required meta::TypeTuple from the parameter types.
8680 *
8681 * @param t_cppClass C++ class to add the constructor to
8682 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8, @param t_P9 Type of parameter 9, @param t_P10 Type of parameter 10, @param t_P11 Type of parameter 11, @param t_P12 Type of parameter 12, @param t_P13 Type of parameter 13, @param t_P14 Type of parameter 14, @param t_P15 Type of parameter 15
8872 * @brief Export C++ factory function as Python constructor with 5 parameters.
8873 *
8874 * Convenience macro for exporting a factory function with exactly 5 parameters.
8875 * Automatically creates the required meta::TypeTuple from the parameter types.
8876 *
8877 * @param t_cppClass C++ class to add the constructor to
8878 * @param f_cppFunction Factory function that creates the class instance
8879 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5
8890 * @brief Export C++ factory function as Python constructor with 6 parameters.
8891 *
8892 * Convenience macro for exporting a factory function with exactly 6 parameters.
8893 * Automatically creates the required meta::TypeTuple from the parameter types.
8894 *
8895 * @param t_cppClass C++ class to add the constructor to
8896 * @param f_cppFunction Factory function that creates the class instance
8897 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6
8908 * @brief Export C++ factory function as Python constructor with 7 parameters.
8909 *
8910 * Convenience macro for exporting a factory function with exactly 7 parameters.
8911 * Automatically creates the required meta::TypeTuple from the parameter types.
8912 *
8913 * @param t_cppClass C++ class to add the constructor to
8914 * @param f_cppFunction Factory function that creates the class instance
8915 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7
8926 * @brief Export C++ factory function as Python constructor with 8 parameters.
8927 *
8928 * Convenience macro for exporting a factory function with exactly 8 parameters.
8929 * Automatically creates the required meta::TypeTuple from the parameter types.
8930 *
8931 * @param t_cppClass C++ class to add the constructor to
8932 * @param f_cppFunction Factory function that creates the class instance
8933 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8
8944 * @brief Export C++ factory function as Python constructor with 9 parameters.
8945 *
8946 * Convenience macro for exporting a factory function with exactly 9 parameters.
8947 * Automatically creates the required meta::TypeTuple from the parameter types.
8948 *
8949 * @param t_cppClass C++ class to add the constructor to
8950 * @param f_cppFunction Factory function that creates the class instance
8951 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8, @param t_P9 Type of parameter 9
8962 * @brief Export C++ factory function as Python constructor with 10 parameters.
8963 *
8964 * Convenience macro for exporting a factory function with exactly 10 parameters.
8965 * Automatically creates the required meta::TypeTuple from the parameter types.
8966 *
8967 * @param t_cppClass C++ class to add the constructor to
8968 * @param f_cppFunction Factory function that creates the class instance
8969 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8, @param t_P9 Type of parameter 9, @param t_P10 Type of parameter 10
8980 * @brief Export C++ factory function as Python constructor with 11 parameters.
8981 *
8982 * Convenience macro for exporting a factory function with exactly 11 parameters.
8983 * Automatically creates the required meta::TypeTuple from the parameter types.
8984 *
8985 * @param t_cppClass C++ class to add the constructor to
8986 * @param f_cppFunction Factory function that creates the class instance
8987 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8, @param t_P9 Type of parameter 9, @param t_P10 Type of parameter 10, @param t_P11 Type of parameter 11
8998 * @brief Export C++ factory function as Python constructor with 12 parameters.
8999 *
9000 * Convenience macro for exporting a factory function with exactly 12 parameters.
9001 * Automatically creates the required meta::TypeTuple from the parameter types.
9002 *
9003 * @param t_cppClass C++ class to add the constructor to
9004 * @param f_cppFunction Factory function that creates the class instance
9005 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8, @param t_P9 Type of parameter 9, @param t_P10 Type of parameter 10, @param t_P11 Type of parameter 11, @param t_P12 Type of parameter 12
9016 * @brief Export C++ factory function as Python constructor with 13 parameters.
9017 *
9018 * Convenience macro for exporting a factory function with exactly 13 parameters.
9019 * Automatically creates the required meta::TypeTuple from the parameter types.
9020 *
9021 * @param t_cppClass C++ class to add the constructor to
9022 * @param f_cppFunction Factory function that creates the class instance
9023 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8, @param t_P9 Type of parameter 9, @param t_P10 Type of parameter 10, @param t_P11 Type of parameter 11, @param t_P12 Type of parameter 12, @param t_P13 Type of parameter 13
9034 * @brief Export C++ factory function as Python constructor with 14 parameters.
9035 *
9036 * Convenience macro for exporting a factory function with exactly 14 parameters.
9037 * Automatically creates the required meta::TypeTuple from the parameter types.
9038 *
9039 * @param t_cppClass C++ class to add the constructor to
9040 * @param f_cppFunction Factory function that creates the class instance
9041 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8, @param t_P9 Type of parameter 9, @param t_P10 Type of parameter 10, @param t_P11 Type of parameter 11, @param t_P12 Type of parameter 12, @param t_P13 Type of parameter 13, @param t_P14 Type of parameter 14
9052 * @brief Export C++ factory function as Python constructor with 15 parameters.
9053 *
9054 * Convenience macro for exporting a factory function with exactly 15 parameters.
9055 * Automatically creates the required meta::TypeTuple from the parameter types.
9056 *
9057 * @param t_cppClass C++ class to add the constructor to
9058 * @param f_cppFunction Factory function that creates the class instance
9059 * @param t_P1 Type of parameter 1, @param t_P2 Type of parameter 2, @param t_P3 Type of parameter 3, @param t_P4 Type of parameter 4, @param t_P5 Type of parameter 5, @param t_P6 Type of parameter 6, @param t_P7 Type of parameter 7, @param t_P8 Type of parameter 8, @param t_P9 Type of parameter 9, @param t_P10 Type of parameter 10, @param t_P11 Type of parameter 11, @param t_P12 Type of parameter 12, @param t_P13 Type of parameter 13, @param t_P14 Type of parameter 14, @param t_P15 Type of parameter 15