2025-07-28 14:26:19 +08:00

95 lines
3.6 KiB
OpenEdge ABL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Define module
// target_namespace means the name exported to JS, could be same as which in other modules
// assets at the last means the suffix of binding function name, different modules should use unique name
// Note: doesn't support number prefix
%module(target_namespace="KunpoSDK") SDKHelper
// Disable some swig warnings, find warning number reference here ( https://www.swig.org/Doc4.1/Warnings.html )
// #pragma SWIG nowarn=503,302,401,317,402
// %insert(header_file) %{ ... }%} 代码块中的内容最终会被原封不动地插入到生成的头文件(.h)开头的地方
%insert(header_file) %{
#pragma once
#include "bindings/jswrapper/SeApi.h"
#include "bindings/manual/jsb_conversions.h"
#include "cocos/cocos.h"
#include "../../SDKHelper.h" // %include swig
%}
// %{ ... %} 代码块中的内容最终会被原封不动地插入到生成的源文件(.cpp)开头的地方
%{
#include "jsb_SDKHelper_auto.h"
%}
%include "SDKHelper.h"
// ----- 忽略的部分 ------
// Brief: 类、方法或属性需要被忽略
//
// Usage:
//
// %ignore your_namespace::your_class_name;
// %ignore your_namespace::your_class_name::your_method_name;
// %ignore your_namespace::your_class_name::your_attribute_name;
//
// Note:
// 1. 'Ignore Section' should be placed before attribute definition and %import/%include
// 2. namespace is needed
//
// ----- 重命名部分 ------
// Brief: 类、方法或属性需要被重命名
//
// Usage:
//
// %rename(rename_to_name) your_namespace::original_class_name;
// %rename(rename_to_name) your_namespace::original_class_name::method_name;
// %rename(rename_to_name) your_namespace::original_class_name::attribute_name;
//
// Note:
// 1. 'Rename Section' should be placed before attribute definition and %import/%include
// 2. namespace is needed
// ----- Module Macro Section ------
// Brief: Generated code should be wrapped inside a macro
// Usage:
// 1. Configure for class
// %module_macro(CC_USE_GEOMETRY_RENDERER) cc::pipeline::GeometryRenderer;
// 2. Configure for member function or attribute
// %module_macro(CC_USE_GEOMETRY_RENDERER) cc::pipeline::RenderPipeline::geometryRenderer;
// Note: Should be placed before 'Attribute Section'
// Write your code bellow
// ----- Attribute Section ------
// Brief: Define attributes ( JS properties with getter and setter )
// Usage:
// 1. Define an attribute without setter
// %attribute(your_namespace::your_class_name, cpp_member_variable_type, js_property_name, cpp_getter_name)
// 2. Define an attribute with getter and setter
// %attribute(your_namespace::your_class_name, cpp_member_variable_type, js_property_name, cpp_getter_name, cpp_setter_name)
// 3. Define an attribute without getter
// %attribute_writeonly(your_namespace::your_class_name, cpp_member_variable_type, js_property_name, cpp_setter_name)
//
// Note:
// 1. Don't need to add 'const' prefix for cpp_member_variable_type
// 2. The return type of getter should keep the same as the type of setter's parameter
// 3. If using reference, add '&' suffix for cpp_member_variable_type to avoid generated code using value assignment
// 4. 'Attribute Section' should be placed before 'Import Section' and 'Include Section'
//
// ----- Import Section ------
// Brief: Import header files which are depended by 'Include Section'
// Note:
// %import "your_header_file.h" will not generate code for that header file
//
// ----- Include Section ------
// Brief: Include header files in which classes and methods will be bound