Экспорт функций
Руководство по экспорту функций из вашего плагина на Python для использования другими языковыми модулями в Plugify.
В экосистеме Plugify плагины на Python могут экспортировать функции, чтобы сделать их доступными для других плагинов. Это руководство объясняет, как определять и экспортировать функции в Python, и предоставляет примеры, которые помогут вам беспрепятственно интегрировать ваши плагины.
Базовое сопоставление типов
В следующей таблице перечислены способы представления типов в Python API:
Тип C++ | Тип Python | Псевдоним Plugify | Поддержка ссылок ? |
---|---|---|---|
void | None | void | ❌ |
bool | bool | bool | ✅ |
char | str | char8 | ✅ |
char16_t | str | char16 | ✅ |
int8_t | int | int8 | ✅ |
int16_t | int | int16 | ✅ |
int32_t | int | int32 | ✅ |
int64_t | int | int64 | ✅ |
uint8_t | int | uint8 | ✅ |
uint16_t | int | uint16 | ✅ |
uint32_t | int | uint32 | ✅ |
uint64_t | int | uint64 | ✅ |
uintptr_t | int | ptr64 | ✅ |
uintptr_t | int | ptr32 | ✅ |
float | float | float | ✅ |
double | float | double | ✅ |
void* | Callable | function | ❌ |
plg::string | str | string | ✅ |
plg::any | Any | any | ✅ |
plg::vector<bool> | list[bool] | bool[] | ✅ |
plg::vector<char> | list[str] | char8[] | ✅ |
plg::vector<char16_t> | list[str] | char16[] | ✅ |
plg::vector<int8_t> | list[int] | int8[] | ✅ |
plg::vector<int16_t> | list[int] | int16[] | ✅ |
plg::vector<int32_t> | list[int] | int32[] | ✅ |
plg::vector<int64_t> | list[int] | int64[] | ✅ |
plg::vector<uint8_t> | list[int] | uint8[] | ✅ |
plg::vector<uint16_t> | list[int] | uint16[] | ✅ |
plg::vector<uint32_t> | list[int] | uint32[] | ✅ |
plg::vector<uint64_t> | list[int] | uint64[] | ✅ |
plg::vector<uintptr_t> | list[int] | ptr64[] | ✅ |
plg::vector<uintptr_t> | list[int] | ptr32[] | ✅ |
plg::vector<float> | list[float] | float[] | ✅ |
plg::vector<double> | list[float] | double[] | ✅ |
plg::vector<plg::string> | list[str] | string[] | ✅ |
plg::vector<plg::any> | list[Any] | any[] | ✅ |
plg::vector<plg::vec2> | list[Vector2] | vec2[] | ✅ |
plg::vector<plg::vec3> | list[Vector3] | vec3[] | ✅ |
plg::vector<plg::vec4> | list[Vectpr4] | vec4[] | ✅ |
plg::vector<plg::mat4x4> | list[Matrix4x4] | mat4x4[] | ✅ |
plg::vec2 | Vector2 | vec2 | ✅ |
plg::vec3 | Vector3 | vec3 | ✅ |
plg::vec4 | Vector4 | vec4 | ✅ |
plg::mat4x4 | Matrix4x4 | mat4x4 | ✅ |
Экспорт функций в Python
Экспорт функций в Python проще, чем в C++, потому что Python — это динамически типизированный язык. Вам нужно только определить функцию и указать ее в манифесте плагина. Языковой модуль Python от Plugify позаботится обо всем остальном.
Базовый пример
Вот простой пример экспорта функции в плагине на Python:
Определение функции
Манифест плагина
Чтобы экспортировать функцию, опишите ее в манифесте плагина в разделе exportedMethods
:
Продвинутый пример: Экспорт сложных функций
Вот пример экспорта функции со сложными типами параметров и возвращаемого значения:
Определение функции
Манифест плагина
Обработка обратных вызовов (callbacks)
Plugify позволяет экспортировать функции, которые принимают обратные вызовы в качестве параметров. Вот пример:
Определение функции
Манифест плагина
Рекомендации
- Четко определяйте функции: Убедитесь, что ваши функции хорошо документированы и легки для понимания.
- Следуйте соглашениям о типах: Придерживайтесь соглашений о типах Plugify для параметров и возвращаемых значений.
- Тщательно тестируйте: Тестируйте ваши экспортированные функции, чтобы убедиться, что они работают как ожидалось при вызове из других плагинов.
- Обновляйте манифест: Всегда описывайте экспортированные функции в манифесте плагина в разделе
exportedMethods
.
Заключение
Экспорт функций в плагинах на Python прост и понятен. Определяя ваши функции и описывая их в манифесте плагина, вы можете создавать надежные и совместимые плагины. Для более сложных сценариев использования, таких как обработка обратных вызовов, используйте методы, изложенные в этом руководстве.