mirror of
https://github.com/godotengine/godot-git-plugin.git
synced 2026-01-06 02:09:44 +03:00
Compare commits
20 Commits
v3.0.0-bet
...
v3.1.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f6002fab42 | ||
|
|
d6582fa939 | ||
|
|
259ae989f4 | ||
|
|
2f160a2b79 | ||
|
|
55b09bf0f7 | ||
|
|
ae2f2d3826 | ||
|
|
3ab28b1d33 | ||
|
|
3fc541feb8 | ||
|
|
04602dc5dc | ||
|
|
bb5da70aa4 | ||
|
|
4cb6ec0edd | ||
|
|
34850841fc | ||
|
|
74342b298e | ||
|
|
3c50df7af0 | ||
|
|
65a643c8d8 | ||
|
|
6a4b23a2c0 | ||
|
|
63d72ffc21 | ||
|
|
6a6f7d1810 | ||
|
|
f22b2e6bf5 | ||
|
|
820c623912 |
47
.github/workflows/build.yml
vendored
47
.github/workflows/build.yml
vendored
@@ -2,18 +2,29 @@ name: C/C++ CI
|
|||||||
|
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
env:
|
||||||
|
# Only used for the cache key. Increment version to force clean build.
|
||||||
|
GODOT_BASE_BRANCH: master
|
||||||
|
SCONS_CACHE: ${{ github.workspace }}/.scons-cache/
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
linux-x64:
|
linux-x64:
|
||||||
runs-on: ubuntu-18.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
- name: Setup Godot build cache
|
||||||
|
uses: ./godot-cpp/.github/actions/godot-cache
|
||||||
|
with:
|
||||||
|
cache-name: linux-x86_64
|
||||||
|
continue-on-error: true
|
||||||
- name: build-linux-editor-x64
|
- name: build-linux-editor-x64
|
||||||
run: |
|
run: |
|
||||||
git submodule update --init --recursive
|
|
||||||
pip3 install --user scons
|
pip3 install --user scons
|
||||||
scons platform=linux target=editor generate_bindings=yes gdextension_dir="../ci/" -j $(nproc)
|
scons platform=linux target=editor generate_bindings=yes -j $(nproc)
|
||||||
ldd demo/addons/godot-git-plugin/linux/*.so
|
ldd demo/addons/godot-git-plugin/linux/*.so
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: libgit_plugin.linux.x86_64.editor.so-${{ github.sha }}
|
name: libgit_plugin.linux.x86_64.editor.so-${{ github.sha }}
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
@@ -23,7 +34,13 @@ jobs:
|
|||||||
windows-x64:
|
windows-x64:
|
||||||
runs-on: windows-2019
|
runs-on: windows-2019
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
- name: Setup Godot build cache
|
||||||
|
uses: ./godot-cpp/.github/actions/godot-cache
|
||||||
|
with:
|
||||||
|
cache-name: windows-x86_64
|
||||||
- uses: actions/setup-python@v2
|
- uses: actions/setup-python@v2
|
||||||
with:
|
with:
|
||||||
python-version: "3.x"
|
python-version: "3.x"
|
||||||
@@ -31,11 +48,10 @@ jobs:
|
|||||||
- uses: ilammy/msvc-dev-cmd@v1
|
- uses: ilammy/msvc-dev-cmd@v1
|
||||||
- name: build-windows-editor-x64
|
- name: build-windows-editor-x64
|
||||||
run: |
|
run: |
|
||||||
git submodule update --init --recursive
|
|
||||||
pip3 install --user scons
|
pip3 install --user scons
|
||||||
scons platform=windows target=editor generate_bindings=yes gdextension_dir="../ci/" -j $env:NUMBER_OF_PROCESSORS
|
scons platform=windows target=editor generate_bindings=yes -j $env:NUMBER_OF_PROCESSORS
|
||||||
dumpbin /dependents .\demo\addons\godot-git-plugin\win64\*.dll
|
dumpbin /dependents .\demo\addons\godot-git-plugin\win64\*.dll
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: libgit_plugin.windows.x86_64.editor.dll-${{ github.sha }}
|
name: libgit_plugin.windows.x86_64.editor.dll-${{ github.sha }}
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
@@ -45,14 +61,19 @@ jobs:
|
|||||||
macos-universal:
|
macos-universal:
|
||||||
runs-on: macos-11
|
runs-on: macos-11
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
- name: Setup Godot build cache
|
||||||
|
uses: ./godot-cpp/.github/actions/godot-cache
|
||||||
|
with:
|
||||||
|
cache-name: macos-universal
|
||||||
- name: build-macos-editor-universal
|
- name: build-macos-editor-universal
|
||||||
run: |
|
run: |
|
||||||
git submodule update --init --recursive
|
|
||||||
brew install scons
|
brew install scons
|
||||||
scons platform=macos target=editor generate_bindings=yes gdextension_dir="../ci/" macos_arch=universal use_llvm=yes macos_deployment_target=10.13 -j $(sysctl -n hw.logicalcpu)
|
scons platform=macos target=editor generate_bindings=yes macos_arch=universal use_llvm=yes macos_deployment_target=10.13 -j $(sysctl -n hw.logicalcpu)
|
||||||
otool -L demo/addons/godot-git-plugin/macos/*.dylib
|
otool -L demo/addons/godot-git-plugin/macos/*.dylib
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: libgit_plugin.macos.universal.editor.dylib-${{ github.sha }}
|
name: libgit_plugin.macos.universal.editor.dylib-${{ github.sha }}
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|||||||
1
.gitmodules
vendored
1
.gitmodules
vendored
@@ -5,6 +5,7 @@
|
|||||||
[submodule "libgit2"]
|
[submodule "libgit2"]
|
||||||
path = thirdparty/git2/libgit2
|
path = thirdparty/git2/libgit2
|
||||||
url = https://github.com/libgit2/libgit2
|
url = https://github.com/libgit2/libgit2
|
||||||
|
ignore = untracked
|
||||||
[submodule "thirdparty/ssh2/libssh2"]
|
[submodule "thirdparty/ssh2/libssh2"]
|
||||||
path = thirdparty/ssh2/libssh2
|
path = thirdparty/ssh2/libssh2
|
||||||
url = https://github.com/libssh2/libssh2
|
url = https://github.com/libssh2/libssh2
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2016-2022 The Godot Engine community
|
Copyright (c) 2016-2023 The Godot Engine community
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ This section onwards is only meant to be used if you intend to compile the plugi
|
|||||||
### Release Build
|
### Release Build
|
||||||
|
|
||||||
```
|
```
|
||||||
scons platform=<platform> target=editor gdextension_dir="../path/to/gdextension/dump/" -j 6
|
scons platform=<platform> target=editor -j 6
|
||||||
```
|
```
|
||||||
|
|
||||||
> You may get the gdextension dump yourself from Godot using the instructions in the next section, or use the ones provided in `godot-cpp/gdextension` or `ci/`.
|
> You may get the gdextension dump yourself from Godot using the instructions in the next section, or use the ones provided in `godot-cpp/gdextension` or `ci/`.
|
||||||
@@ -56,7 +56,7 @@ cd local/copy/of/godot/source
|
|||||||
2. Build the plugin along with the godot-cpp library.
|
2. Build the plugin along with the godot-cpp library.
|
||||||
|
|
||||||
```
|
```
|
||||||
scons platform=<platform> target=editor generate_bindings=yes dev_build=yes gdextension_dir="path/to/gdextension/dump" -j 6
|
scons platform=<platform> target=editor generate_bindings=yes dev_build=yes -j 6
|
||||||
```
|
```
|
||||||
|
|
||||||
> You only need to build godot-cpp once every change in the GDExtension API, hence, `generate_bindings=yes` should only be passed in during the first time after generating a new GDExtension API dump.
|
> You only need to build godot-cpp once every change in the GDExtension API, hence, `generate_bindings=yes` should only be passed in during the first time after generating a new GDExtension API dump.
|
||||||
|
|||||||
266325
ci/extension_api.json
266325
ci/extension_api.json
File diff suppressed because it is too large
Load Diff
@@ -1,619 +0,0 @@
|
|||||||
/*************************************************************************/
|
|
||||||
/* gdextension_interface.h */
|
|
||||||
/*************************************************************************/
|
|
||||||
/* This file is part of: */
|
|
||||||
/* GODOT ENGINE */
|
|
||||||
/* https://godotengine.org */
|
|
||||||
/*************************************************************************/
|
|
||||||
/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
|
|
||||||
/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
|
|
||||||
/* */
|
|
||||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
|
||||||
/* a copy of this software and associated documentation files (the */
|
|
||||||
/* "Software"), to deal in the Software without restriction, including */
|
|
||||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
|
||||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
|
||||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
|
||||||
/* the following conditions: */
|
|
||||||
/* */
|
|
||||||
/* The above copyright notice and this permission notice shall be */
|
|
||||||
/* included in all copies or substantial portions of the Software. */
|
|
||||||
/* */
|
|
||||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
|
||||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
|
||||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
|
||||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
|
||||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
|
||||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
|
||||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
#ifndef GDEXTENSION_INTERFACE_H
|
|
||||||
#define GDEXTENSION_INTERFACE_H
|
|
||||||
|
|
||||||
/* This is a C class header, you can copy it and use it directly in your own binders.
|
|
||||||
* Together with the JSON file, you should be able to generate any binder.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#ifndef __cplusplus
|
|
||||||
typedef uint32_t char32_t;
|
|
||||||
typedef uint16_t char16_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* VARIANT TYPES */
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
GDEXTENSION_VARIANT_TYPE_NIL,
|
|
||||||
|
|
||||||
/* atomic types */
|
|
||||||
GDEXTENSION_VARIANT_TYPE_BOOL,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_INT,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_FLOAT,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_STRING,
|
|
||||||
|
|
||||||
/* math types */
|
|
||||||
GDEXTENSION_VARIANT_TYPE_VECTOR2,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_VECTOR2I,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_RECT2,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_RECT2I,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_VECTOR3,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_VECTOR3I,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_TRANSFORM2D,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_VECTOR4,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_VECTOR4I,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_PLANE,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_QUATERNION,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_AABB,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_BASIS,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_TRANSFORM3D,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_PROJECTION,
|
|
||||||
|
|
||||||
/* misc types */
|
|
||||||
GDEXTENSION_VARIANT_TYPE_COLOR,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_STRING_NAME,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_NODE_PATH,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_RID,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_OBJECT,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_CALLABLE,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_SIGNAL,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_DICTIONARY,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_ARRAY,
|
|
||||||
|
|
||||||
/* typed arrays */
|
|
||||||
GDEXTENSION_VARIANT_TYPE_PACKED_BYTE_ARRAY,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_PACKED_INT32_ARRAY,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_PACKED_INT64_ARRAY,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_PACKED_FLOAT32_ARRAY,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_PACKED_FLOAT64_ARRAY,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_PACKED_STRING_ARRAY,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_PACKED_VECTOR2_ARRAY,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_PACKED_VECTOR3_ARRAY,
|
|
||||||
GDEXTENSION_VARIANT_TYPE_PACKED_COLOR_ARRAY,
|
|
||||||
|
|
||||||
GDEXTENSION_VARIANT_TYPE_VARIANT_MAX
|
|
||||||
} GDExtensionVariantType;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
/* comparison */
|
|
||||||
GDEXTENSION_VARIANT_OP_EQUAL,
|
|
||||||
GDEXTENSION_VARIANT_OP_NOT_EQUAL,
|
|
||||||
GDEXTENSION_VARIANT_OP_LESS,
|
|
||||||
GDEXTENSION_VARIANT_OP_LESS_EQUAL,
|
|
||||||
GDEXTENSION_VARIANT_OP_GREATER,
|
|
||||||
GDEXTENSION_VARIANT_OP_GREATER_EQUAL,
|
|
||||||
|
|
||||||
/* mathematic */
|
|
||||||
GDEXTENSION_VARIANT_OP_ADD,
|
|
||||||
GDEXTENSION_VARIANT_OP_SUBTRACT,
|
|
||||||
GDEXTENSION_VARIANT_OP_MULTIPLY,
|
|
||||||
GDEXTENSION_VARIANT_OP_DIVIDE,
|
|
||||||
GDEXTENSION_VARIANT_OP_NEGATE,
|
|
||||||
GDEXTENSION_VARIANT_OP_POSITIVE,
|
|
||||||
GDEXTENSION_VARIANT_OP_MODULE,
|
|
||||||
GDEXTENSION_VARIANT_OP_POWER,
|
|
||||||
|
|
||||||
/* bitwise */
|
|
||||||
GDEXTENSION_VARIANT_OP_SHIFT_LEFT,
|
|
||||||
GDEXTENSION_VARIANT_OP_SHIFT_RIGHT,
|
|
||||||
GDEXTENSION_VARIANT_OP_BIT_AND,
|
|
||||||
GDEXTENSION_VARIANT_OP_BIT_OR,
|
|
||||||
GDEXTENSION_VARIANT_OP_BIT_XOR,
|
|
||||||
GDEXTENSION_VARIANT_OP_BIT_NEGATE,
|
|
||||||
|
|
||||||
/* logic */
|
|
||||||
GDEXTENSION_VARIANT_OP_AND,
|
|
||||||
GDEXTENSION_VARIANT_OP_OR,
|
|
||||||
GDEXTENSION_VARIANT_OP_XOR,
|
|
||||||
GDEXTENSION_VARIANT_OP_NOT,
|
|
||||||
|
|
||||||
/* containment */
|
|
||||||
GDEXTENSION_VARIANT_OP_IN,
|
|
||||||
GDEXTENSION_VARIANT_OP_MAX
|
|
||||||
|
|
||||||
} GDExtensionVariantOperator;
|
|
||||||
|
|
||||||
typedef void *GDExtensionVariantPtr;
|
|
||||||
typedef const void *GDExtensionConstVariantPtr;
|
|
||||||
typedef void *GDExtensionStringNamePtr;
|
|
||||||
typedef const void *GDExtensionConstStringNamePtr;
|
|
||||||
typedef void *GDExtensionStringPtr;
|
|
||||||
typedef const void *GDExtensionConstStringPtr;
|
|
||||||
typedef void *GDExtensionObjectPtr;
|
|
||||||
typedef const void *GDExtensionConstObjectPtr;
|
|
||||||
typedef void *GDExtensionTypePtr;
|
|
||||||
typedef const void *GDExtensionConstTypePtr;
|
|
||||||
typedef const void *GDExtensionMethodBindPtr;
|
|
||||||
typedef int64_t GDExtensionInt;
|
|
||||||
typedef uint8_t GDExtensionBool;
|
|
||||||
typedef uint64_t GDObjectInstanceID;
|
|
||||||
typedef void *GDExtensionRefPtr;
|
|
||||||
typedef const void *GDExtensionConstRefPtr;
|
|
||||||
|
|
||||||
/* VARIANT DATA I/O */
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
GDEXTENSION_CALL_OK,
|
|
||||||
GDEXTENSION_CALL_ERROR_INVALID_METHOD,
|
|
||||||
GDEXTENSION_CALL_ERROR_INVALID_ARGUMENT, // Expected a different variant type.
|
|
||||||
GDEXTENSION_CALL_ERROR_TOO_MANY_ARGUMENTS, // Expected lower number of arguments.
|
|
||||||
GDEXTENSION_CALL_ERROR_TOO_FEW_ARGUMENTS, // Expected higher number of arguments.
|
|
||||||
GDEXTENSION_CALL_ERROR_INSTANCE_IS_NULL,
|
|
||||||
GDEXTENSION_CALL_ERROR_METHOD_NOT_CONST, // Used for const call.
|
|
||||||
} GDExtensionCallErrorType;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
GDExtensionCallErrorType error;
|
|
||||||
int32_t argument;
|
|
||||||
int32_t expected;
|
|
||||||
} GDExtensionCallError;
|
|
||||||
|
|
||||||
typedef void (*GDExtensionVariantFromTypeConstructorFunc)(GDExtensionVariantPtr, GDExtensionTypePtr);
|
|
||||||
typedef void (*GDExtensionTypeFromVariantConstructorFunc)(GDExtensionTypePtr, GDExtensionVariantPtr);
|
|
||||||
typedef void (*GDExtensionPtrOperatorEvaluator)(GDExtensionConstTypePtr p_left, GDExtensionConstTypePtr p_right, GDExtensionTypePtr r_result);
|
|
||||||
typedef void (*GDExtensionPtrBuiltInMethod)(GDExtensionTypePtr p_base, const GDExtensionConstTypePtr *p_args, GDExtensionTypePtr r_return, int p_argument_count);
|
|
||||||
typedef void (*GDExtensionPtrConstructor)(GDExtensionTypePtr p_base, const GDExtensionConstTypePtr *p_args);
|
|
||||||
typedef void (*GDExtensionPtrDestructor)(GDExtensionTypePtr p_base);
|
|
||||||
typedef void (*GDExtensionPtrSetter)(GDExtensionTypePtr p_base, GDExtensionConstTypePtr p_value);
|
|
||||||
typedef void (*GDExtensionPtrGetter)(GDExtensionConstTypePtr p_base, GDExtensionTypePtr r_value);
|
|
||||||
typedef void (*GDExtensionPtrIndexedSetter)(GDExtensionTypePtr p_base, GDExtensionInt p_index, GDExtensionConstTypePtr p_value);
|
|
||||||
typedef void (*GDExtensionPtrIndexedGetter)(GDExtensionConstTypePtr p_base, GDExtensionInt p_index, GDExtensionTypePtr r_value);
|
|
||||||
typedef void (*GDExtensionPtrKeyedSetter)(GDExtensionTypePtr p_base, GDExtensionConstTypePtr p_key, GDExtensionConstTypePtr p_value);
|
|
||||||
typedef void (*GDExtensionPtrKeyedGetter)(GDExtensionConstTypePtr p_base, GDExtensionConstTypePtr p_key, GDExtensionTypePtr r_value);
|
|
||||||
typedef uint32_t (*GDExtensionPtrKeyedChecker)(GDExtensionConstVariantPtr p_base, GDExtensionConstVariantPtr p_key);
|
|
||||||
typedef void (*GDExtensionPtrUtilityFunction)(GDExtensionTypePtr r_return, const GDExtensionConstTypePtr *p_args, int p_argument_count);
|
|
||||||
|
|
||||||
typedef GDExtensionObjectPtr (*GDExtensionClassConstructor)();
|
|
||||||
|
|
||||||
typedef void *(*GDExtensionInstanceBindingCreateCallback)(void *p_token, void *p_instance);
|
|
||||||
typedef void (*GDExtensionInstanceBindingFreeCallback)(void *p_token, void *p_instance, void *p_binding);
|
|
||||||
typedef GDExtensionBool (*GDExtensionInstanceBindingReferenceCallback)(void *p_token, void *p_binding, GDExtensionBool p_reference);
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
GDExtensionInstanceBindingCreateCallback create_callback;
|
|
||||||
GDExtensionInstanceBindingFreeCallback free_callback;
|
|
||||||
GDExtensionInstanceBindingReferenceCallback reference_callback;
|
|
||||||
} GDExtensionInstanceBindingCallbacks;
|
|
||||||
|
|
||||||
/* EXTENSION CLASSES */
|
|
||||||
|
|
||||||
typedef void *GDExtensionClassInstancePtr;
|
|
||||||
|
|
||||||
typedef GDExtensionBool (*GDExtensionClassSet)(GDExtensionClassInstancePtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionConstVariantPtr p_value);
|
|
||||||
typedef GDExtensionBool (*GDExtensionClassGet)(GDExtensionClassInstancePtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionVariantPtr r_ret);
|
|
||||||
typedef uint64_t (*GDExtensionClassGetRID)(GDExtensionClassInstancePtr p_instance);
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
GDExtensionVariantType type;
|
|
||||||
GDExtensionStringNamePtr name;
|
|
||||||
GDExtensionStringNamePtr class_name;
|
|
||||||
uint32_t hint; // Bitfield of `PropertyHint` (defined in `extension_api.json`).
|
|
||||||
GDExtensionStringPtr hint_string;
|
|
||||||
uint32_t usage; // Bitfield of `PropertyUsageFlags` (defined in `extension_api.json`).
|
|
||||||
} GDExtensionPropertyInfo;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
GDExtensionStringNamePtr name;
|
|
||||||
GDExtensionPropertyInfo return_value;
|
|
||||||
uint32_t flags; // Bitfield of `GDExtensionClassMethodFlags`.
|
|
||||||
int32_t id;
|
|
||||||
|
|
||||||
/* Arguments: `default_arguments` is an array of size `argument_count`. */
|
|
||||||
uint32_t argument_count;
|
|
||||||
GDExtensionPropertyInfo *arguments;
|
|
||||||
|
|
||||||
/* Default arguments: `default_arguments` is an array of size `default_argument_count`. */
|
|
||||||
uint32_t default_argument_count;
|
|
||||||
GDExtensionVariantPtr *default_arguments;
|
|
||||||
} GDExtensionMethodInfo;
|
|
||||||
|
|
||||||
typedef const GDExtensionPropertyInfo *(*GDExtensionClassGetPropertyList)(GDExtensionClassInstancePtr p_instance, uint32_t *r_count);
|
|
||||||
typedef void (*GDExtensionClassFreePropertyList)(GDExtensionClassInstancePtr p_instance, const GDExtensionPropertyInfo *p_list);
|
|
||||||
typedef GDExtensionBool (*GDExtensionClassPropertyCanRevert)(GDExtensionClassInstancePtr p_instance, GDExtensionConstStringNamePtr p_name);
|
|
||||||
typedef GDExtensionBool (*GDExtensionClassPropertyGetRevert)(GDExtensionClassInstancePtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionVariantPtr r_ret);
|
|
||||||
typedef void (*GDExtensionClassNotification)(GDExtensionClassInstancePtr p_instance, int32_t p_what);
|
|
||||||
typedef void (*GDExtensionClassToString)(GDExtensionClassInstancePtr p_instance, GDExtensionBool *r_is_valid, GDExtensionStringPtr p_out);
|
|
||||||
typedef void (*GDExtensionClassReference)(GDExtensionClassInstancePtr p_instance);
|
|
||||||
typedef void (*GDExtensionClassUnreference)(GDExtensionClassInstancePtr p_instance);
|
|
||||||
typedef void (*GDExtensionClassCallVirtual)(GDExtensionClassInstancePtr p_instance, const GDExtensionConstTypePtr *p_args, GDExtensionTypePtr r_ret);
|
|
||||||
typedef GDExtensionObjectPtr (*GDExtensionClassCreateInstance)(void *p_userdata);
|
|
||||||
typedef void (*GDExtensionClassFreeInstance)(void *p_userdata, GDExtensionClassInstancePtr p_instance);
|
|
||||||
typedef GDExtensionClassCallVirtual (*GDExtensionClassGetVirtual)(void *p_userdata, GDExtensionConstStringNamePtr p_name);
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
GDExtensionBool is_virtual;
|
|
||||||
GDExtensionBool is_abstract;
|
|
||||||
GDExtensionClassSet set_func;
|
|
||||||
GDExtensionClassGet get_func;
|
|
||||||
GDExtensionClassGetPropertyList get_property_list_func;
|
|
||||||
GDExtensionClassFreePropertyList free_property_list_func;
|
|
||||||
GDExtensionClassPropertyCanRevert property_can_revert_func;
|
|
||||||
GDExtensionClassPropertyGetRevert property_get_revert_func;
|
|
||||||
GDExtensionClassNotification notification_func;
|
|
||||||
GDExtensionClassToString to_string_func;
|
|
||||||
GDExtensionClassReference reference_func;
|
|
||||||
GDExtensionClassUnreference unreference_func;
|
|
||||||
GDExtensionClassCreateInstance create_instance_func; // (Default) constructor; mandatory. If the class is not instantiable, consider making it virtual or abstract.
|
|
||||||
GDExtensionClassFreeInstance free_instance_func; // Destructor; mandatory.
|
|
||||||
GDExtensionClassGetVirtual get_virtual_func; // Queries a virtual function by name and returns a callback to invoke the requested virtual function.
|
|
||||||
GDExtensionClassGetRID get_rid_func;
|
|
||||||
void *class_userdata; // Per-class user data, later accessible in instance bindings.
|
|
||||||
} GDExtensionClassCreationInfo;
|
|
||||||
|
|
||||||
typedef void *GDExtensionClassLibraryPtr;
|
|
||||||
|
|
||||||
/* Method */
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
GDEXTENSION_METHOD_FLAG_NORMAL = 1,
|
|
||||||
GDEXTENSION_METHOD_FLAG_EDITOR = 2,
|
|
||||||
GDEXTENSION_METHOD_FLAG_CONST = 4,
|
|
||||||
GDEXTENSION_METHOD_FLAG_VIRTUAL = 8,
|
|
||||||
GDEXTENSION_METHOD_FLAG_VARARG = 16,
|
|
||||||
GDEXTENSION_METHOD_FLAG_STATIC = 32,
|
|
||||||
GDEXTENSION_METHOD_FLAGS_DEFAULT = GDEXTENSION_METHOD_FLAG_NORMAL,
|
|
||||||
} GDExtensionClassMethodFlags;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
GDEXTENSION_METHOD_ARGUMENT_METADATA_NONE,
|
|
||||||
GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT8,
|
|
||||||
GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT16,
|
|
||||||
GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT32,
|
|
||||||
GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT64,
|
|
||||||
GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT8,
|
|
||||||
GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT16,
|
|
||||||
GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT32,
|
|
||||||
GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT64,
|
|
||||||
GDEXTENSION_METHOD_ARGUMENT_METADATA_REAL_IS_FLOAT,
|
|
||||||
GDEXTENSION_METHOD_ARGUMENT_METADATA_REAL_IS_DOUBLE
|
|
||||||
} GDExtensionClassMethodArgumentMetadata;
|
|
||||||
|
|
||||||
typedef void (*GDExtensionClassMethodCall)(void *method_userdata, GDExtensionClassInstancePtr p_instance, const GDExtensionConstVariantPtr *p_args, GDExtensionInt p_argument_count, GDExtensionVariantPtr r_return, GDExtensionCallError *r_error);
|
|
||||||
typedef void (*GDExtensionClassMethodPtrCall)(void *method_userdata, GDExtensionClassInstancePtr p_instance, const GDExtensionConstTypePtr *p_args, GDExtensionTypePtr r_ret);
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
GDExtensionStringNamePtr name;
|
|
||||||
void *method_userdata;
|
|
||||||
GDExtensionClassMethodCall call_func;
|
|
||||||
GDExtensionClassMethodPtrCall ptrcall_func;
|
|
||||||
uint32_t method_flags; // Bitfield of `GDExtensionClassMethodFlags`.
|
|
||||||
|
|
||||||
/* If `has_return_value` is false, `return_value_info` and `return_value_metadata` are ignored. */
|
|
||||||
GDExtensionBool has_return_value;
|
|
||||||
GDExtensionPropertyInfo *return_value_info;
|
|
||||||
GDExtensionClassMethodArgumentMetadata return_value_metadata;
|
|
||||||
|
|
||||||
/* Arguments: `arguments_info` and `arguments_metadata` are array of size `argument_count`.
|
|
||||||
* Name and hint information for the argument can be omitted in release builds. Class name should always be present if it applies.
|
|
||||||
*/
|
|
||||||
uint32_t argument_count;
|
|
||||||
GDExtensionPropertyInfo *arguments_info;
|
|
||||||
GDExtensionClassMethodArgumentMetadata *arguments_metadata;
|
|
||||||
|
|
||||||
/* Default arguments: `default_arguments` is an array of size `default_argument_count`. */
|
|
||||||
uint32_t default_argument_count;
|
|
||||||
GDExtensionVariantPtr *default_arguments;
|
|
||||||
} GDExtensionClassMethodInfo;
|
|
||||||
|
|
||||||
/* SCRIPT INSTANCE EXTENSION */
|
|
||||||
|
|
||||||
typedef void *GDExtensionScriptInstanceDataPtr; // Pointer to custom ScriptInstance native implementation.
|
|
||||||
|
|
||||||
typedef GDExtensionBool (*GDExtensionScriptInstanceSet)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionConstVariantPtr p_value);
|
|
||||||
typedef GDExtensionBool (*GDExtensionScriptInstanceGet)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionVariantPtr r_ret);
|
|
||||||
typedef const GDExtensionPropertyInfo *(*GDExtensionScriptInstanceGetPropertyList)(GDExtensionScriptInstanceDataPtr p_instance, uint32_t *r_count);
|
|
||||||
typedef void (*GDExtensionScriptInstanceFreePropertyList)(GDExtensionScriptInstanceDataPtr p_instance, const GDExtensionPropertyInfo *p_list);
|
|
||||||
typedef GDExtensionVariantType (*GDExtensionScriptInstanceGetPropertyType)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionBool *r_is_valid);
|
|
||||||
|
|
||||||
typedef GDExtensionBool (*GDExtensionScriptInstancePropertyCanRevert)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name);
|
|
||||||
typedef GDExtensionBool (*GDExtensionScriptInstancePropertyGetRevert)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionVariantPtr r_ret);
|
|
||||||
|
|
||||||
typedef GDExtensionObjectPtr (*GDExtensionScriptInstanceGetOwner)(GDExtensionScriptInstanceDataPtr p_instance);
|
|
||||||
typedef void (*GDExtensionScriptInstancePropertyStateAdd)(GDExtensionConstStringNamePtr p_name, GDExtensionConstVariantPtr p_value, void *p_userdata);
|
|
||||||
typedef void (*GDExtensionScriptInstanceGetPropertyState)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionScriptInstancePropertyStateAdd p_add_func, void *p_userdata);
|
|
||||||
|
|
||||||
typedef const GDExtensionMethodInfo *(*GDExtensionScriptInstanceGetMethodList)(GDExtensionScriptInstanceDataPtr p_instance, uint32_t *r_count);
|
|
||||||
typedef void (*GDExtensionScriptInstanceFreeMethodList)(GDExtensionScriptInstanceDataPtr p_instance, const GDExtensionMethodInfo *p_list);
|
|
||||||
|
|
||||||
typedef GDExtensionBool (*GDExtensionScriptInstanceHasMethod)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name);
|
|
||||||
|
|
||||||
typedef void (*GDExtensionScriptInstanceCall)(GDExtensionScriptInstanceDataPtr p_self, GDExtensionConstStringNamePtr p_method, const GDExtensionConstVariantPtr *p_args, GDExtensionInt p_argument_count, GDExtensionVariantPtr r_return, GDExtensionCallError *r_error);
|
|
||||||
typedef void (*GDExtensionScriptInstanceNotification)(GDExtensionScriptInstanceDataPtr p_instance, int32_t p_what);
|
|
||||||
typedef void (*GDExtensionScriptInstanceToString)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionBool *r_is_valid, GDExtensionStringPtr r_out);
|
|
||||||
|
|
||||||
typedef void (*GDExtensionScriptInstanceRefCountIncremented)(GDExtensionScriptInstanceDataPtr p_instance);
|
|
||||||
typedef GDExtensionBool (*GDExtensionScriptInstanceRefCountDecremented)(GDExtensionScriptInstanceDataPtr p_instance);
|
|
||||||
|
|
||||||
typedef GDExtensionObjectPtr (*GDExtensionScriptInstanceGetScript)(GDExtensionScriptInstanceDataPtr p_instance);
|
|
||||||
typedef GDExtensionBool (*GDExtensionScriptInstanceIsPlaceholder)(GDExtensionScriptInstanceDataPtr p_instance);
|
|
||||||
|
|
||||||
typedef void *GDExtensionScriptLanguagePtr;
|
|
||||||
|
|
||||||
typedef GDExtensionScriptLanguagePtr (*GDExtensionScriptInstanceGetLanguage)(GDExtensionScriptInstanceDataPtr p_instance);
|
|
||||||
|
|
||||||
typedef void (*GDExtensionScriptInstanceFree)(GDExtensionScriptInstanceDataPtr p_instance);
|
|
||||||
|
|
||||||
typedef void *GDExtensionScriptInstancePtr; // Pointer to ScriptInstance.
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
GDExtensionScriptInstanceSet set_func;
|
|
||||||
GDExtensionScriptInstanceGet get_func;
|
|
||||||
GDExtensionScriptInstanceGetPropertyList get_property_list_func;
|
|
||||||
GDExtensionScriptInstanceFreePropertyList free_property_list_func;
|
|
||||||
|
|
||||||
GDExtensionScriptInstancePropertyCanRevert property_can_revert_func;
|
|
||||||
GDExtensionScriptInstancePropertyGetRevert property_get_revert_func;
|
|
||||||
|
|
||||||
GDExtensionScriptInstanceGetOwner get_owner_func;
|
|
||||||
GDExtensionScriptInstanceGetPropertyState get_property_state_func;
|
|
||||||
|
|
||||||
GDExtensionScriptInstanceGetMethodList get_method_list_func;
|
|
||||||
GDExtensionScriptInstanceFreeMethodList free_method_list_func;
|
|
||||||
GDExtensionScriptInstanceGetPropertyType get_property_type_func;
|
|
||||||
|
|
||||||
GDExtensionScriptInstanceHasMethod has_method_func;
|
|
||||||
|
|
||||||
GDExtensionScriptInstanceCall call_func;
|
|
||||||
GDExtensionScriptInstanceNotification notification_func;
|
|
||||||
|
|
||||||
GDExtensionScriptInstanceToString to_string_func;
|
|
||||||
|
|
||||||
GDExtensionScriptInstanceRefCountIncremented refcount_incremented_func;
|
|
||||||
GDExtensionScriptInstanceRefCountDecremented refcount_decremented_func;
|
|
||||||
|
|
||||||
GDExtensionScriptInstanceGetScript get_script_func;
|
|
||||||
|
|
||||||
GDExtensionScriptInstanceIsPlaceholder is_placeholder_func;
|
|
||||||
|
|
||||||
GDExtensionScriptInstanceSet set_fallback_func;
|
|
||||||
GDExtensionScriptInstanceGet get_fallback_func;
|
|
||||||
|
|
||||||
GDExtensionScriptInstanceGetLanguage get_language_func;
|
|
||||||
|
|
||||||
GDExtensionScriptInstanceFree free_func;
|
|
||||||
|
|
||||||
} GDExtensionScriptInstanceInfo;
|
|
||||||
|
|
||||||
/* INTERFACE */
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uint32_t version_major;
|
|
||||||
uint32_t version_minor;
|
|
||||||
uint32_t version_patch;
|
|
||||||
const char *version_string;
|
|
||||||
|
|
||||||
/* GODOT CORE */
|
|
||||||
|
|
||||||
void *(*mem_alloc)(size_t p_bytes);
|
|
||||||
void *(*mem_realloc)(void *p_ptr, size_t p_bytes);
|
|
||||||
void (*mem_free)(void *p_ptr);
|
|
||||||
|
|
||||||
void (*print_error)(const char *p_description, const char *p_function, const char *p_file, int32_t p_line);
|
|
||||||
void (*print_warning)(const char *p_description, const char *p_function, const char *p_file, int32_t p_line);
|
|
||||||
void (*print_script_error)(const char *p_description, const char *p_function, const char *p_file, int32_t p_line);
|
|
||||||
|
|
||||||
uint64_t (*get_native_struct_size)(GDExtensionConstStringNamePtr p_name);
|
|
||||||
|
|
||||||
/* GODOT VARIANT */
|
|
||||||
|
|
||||||
/* variant general */
|
|
||||||
void (*variant_new_copy)(GDExtensionVariantPtr r_dest, GDExtensionConstVariantPtr p_src);
|
|
||||||
void (*variant_new_nil)(GDExtensionVariantPtr r_dest);
|
|
||||||
void (*variant_destroy)(GDExtensionVariantPtr p_self);
|
|
||||||
|
|
||||||
/* variant type */
|
|
||||||
void (*variant_call)(GDExtensionVariantPtr p_self, GDExtensionConstStringNamePtr p_method, const GDExtensionConstVariantPtr *p_args, GDExtensionInt p_argument_count, GDExtensionVariantPtr r_return, GDExtensionCallError *r_error);
|
|
||||||
void (*variant_call_static)(GDExtensionVariantType p_type, GDExtensionConstStringNamePtr p_method, const GDExtensionConstVariantPtr *p_args, GDExtensionInt p_argument_count, GDExtensionVariantPtr r_return, GDExtensionCallError *r_error);
|
|
||||||
void (*variant_evaluate)(GDExtensionVariantOperator p_op, GDExtensionConstVariantPtr p_a, GDExtensionConstVariantPtr p_b, GDExtensionVariantPtr r_return, GDExtensionBool *r_valid);
|
|
||||||
void (*variant_set)(GDExtensionVariantPtr p_self, GDExtensionConstVariantPtr p_key, GDExtensionConstVariantPtr p_value, GDExtensionBool *r_valid);
|
|
||||||
void (*variant_set_named)(GDExtensionVariantPtr p_self, GDExtensionConstStringNamePtr p_key, GDExtensionConstVariantPtr p_value, GDExtensionBool *r_valid);
|
|
||||||
void (*variant_set_keyed)(GDExtensionVariantPtr p_self, GDExtensionConstVariantPtr p_key, GDExtensionConstVariantPtr p_value, GDExtensionBool *r_valid);
|
|
||||||
void (*variant_set_indexed)(GDExtensionVariantPtr p_self, GDExtensionInt p_index, GDExtensionConstVariantPtr p_value, GDExtensionBool *r_valid, GDExtensionBool *r_oob);
|
|
||||||
void (*variant_get)(GDExtensionConstVariantPtr p_self, GDExtensionConstVariantPtr p_key, GDExtensionVariantPtr r_ret, GDExtensionBool *r_valid);
|
|
||||||
void (*variant_get_named)(GDExtensionConstVariantPtr p_self, GDExtensionConstStringNamePtr p_key, GDExtensionVariantPtr r_ret, GDExtensionBool *r_valid);
|
|
||||||
void (*variant_get_keyed)(GDExtensionConstVariantPtr p_self, GDExtensionConstVariantPtr p_key, GDExtensionVariantPtr r_ret, GDExtensionBool *r_valid);
|
|
||||||
void (*variant_get_indexed)(GDExtensionConstVariantPtr p_self, GDExtensionInt p_index, GDExtensionVariantPtr r_ret, GDExtensionBool *r_valid, GDExtensionBool *r_oob);
|
|
||||||
GDExtensionBool (*variant_iter_init)(GDExtensionConstVariantPtr p_self, GDExtensionVariantPtr r_iter, GDExtensionBool *r_valid);
|
|
||||||
GDExtensionBool (*variant_iter_next)(GDExtensionConstVariantPtr p_self, GDExtensionVariantPtr r_iter, GDExtensionBool *r_valid);
|
|
||||||
void (*variant_iter_get)(GDExtensionConstVariantPtr p_self, GDExtensionVariantPtr r_iter, GDExtensionVariantPtr r_ret, GDExtensionBool *r_valid);
|
|
||||||
GDExtensionInt (*variant_hash)(GDExtensionConstVariantPtr p_self);
|
|
||||||
GDExtensionInt (*variant_recursive_hash)(GDExtensionConstVariantPtr p_self, GDExtensionInt p_recursion_count);
|
|
||||||
GDExtensionBool (*variant_hash_compare)(GDExtensionConstVariantPtr p_self, GDExtensionConstVariantPtr p_other);
|
|
||||||
GDExtensionBool (*variant_booleanize)(GDExtensionConstVariantPtr p_self);
|
|
||||||
void (*variant_duplicate)(GDExtensionConstVariantPtr p_self, GDExtensionVariantPtr r_ret, GDExtensionBool p_deep);
|
|
||||||
void (*variant_stringify)(GDExtensionConstVariantPtr p_self, GDExtensionStringPtr r_ret);
|
|
||||||
|
|
||||||
GDExtensionVariantType (*variant_get_type)(GDExtensionConstVariantPtr p_self);
|
|
||||||
GDExtensionBool (*variant_has_method)(GDExtensionConstVariantPtr p_self, GDExtensionConstStringNamePtr p_method);
|
|
||||||
GDExtensionBool (*variant_has_member)(GDExtensionVariantType p_type, GDExtensionConstStringNamePtr p_member);
|
|
||||||
GDExtensionBool (*variant_has_key)(GDExtensionConstVariantPtr p_self, GDExtensionConstVariantPtr p_key, GDExtensionBool *r_valid);
|
|
||||||
void (*variant_get_type_name)(GDExtensionVariantType p_type, GDExtensionStringPtr r_name);
|
|
||||||
GDExtensionBool (*variant_can_convert)(GDExtensionVariantType p_from, GDExtensionVariantType p_to);
|
|
||||||
GDExtensionBool (*variant_can_convert_strict)(GDExtensionVariantType p_from, GDExtensionVariantType p_to);
|
|
||||||
|
|
||||||
/* ptrcalls */
|
|
||||||
GDExtensionVariantFromTypeConstructorFunc (*get_variant_from_type_constructor)(GDExtensionVariantType p_type);
|
|
||||||
GDExtensionTypeFromVariantConstructorFunc (*get_variant_to_type_constructor)(GDExtensionVariantType p_type);
|
|
||||||
GDExtensionPtrOperatorEvaluator (*variant_get_ptr_operator_evaluator)(GDExtensionVariantOperator p_operator, GDExtensionVariantType p_type_a, GDExtensionVariantType p_type_b);
|
|
||||||
GDExtensionPtrBuiltInMethod (*variant_get_ptr_builtin_method)(GDExtensionVariantType p_type, GDExtensionConstStringNamePtr p_method, GDExtensionInt p_hash);
|
|
||||||
GDExtensionPtrConstructor (*variant_get_ptr_constructor)(GDExtensionVariantType p_type, int32_t p_constructor);
|
|
||||||
GDExtensionPtrDestructor (*variant_get_ptr_destructor)(GDExtensionVariantType p_type);
|
|
||||||
void (*variant_construct)(GDExtensionVariantType p_type, GDExtensionVariantPtr p_base, const GDExtensionConstVariantPtr *p_args, int32_t p_argument_count, GDExtensionCallError *r_error);
|
|
||||||
GDExtensionPtrSetter (*variant_get_ptr_setter)(GDExtensionVariantType p_type, GDExtensionConstStringNamePtr p_member);
|
|
||||||
GDExtensionPtrGetter (*variant_get_ptr_getter)(GDExtensionVariantType p_type, GDExtensionConstStringNamePtr p_member);
|
|
||||||
GDExtensionPtrIndexedSetter (*variant_get_ptr_indexed_setter)(GDExtensionVariantType p_type);
|
|
||||||
GDExtensionPtrIndexedGetter (*variant_get_ptr_indexed_getter)(GDExtensionVariantType p_type);
|
|
||||||
GDExtensionPtrKeyedSetter (*variant_get_ptr_keyed_setter)(GDExtensionVariantType p_type);
|
|
||||||
GDExtensionPtrKeyedGetter (*variant_get_ptr_keyed_getter)(GDExtensionVariantType p_type);
|
|
||||||
GDExtensionPtrKeyedChecker (*variant_get_ptr_keyed_checker)(GDExtensionVariantType p_type);
|
|
||||||
void (*variant_get_constant_value)(GDExtensionVariantType p_type, GDExtensionConstStringNamePtr p_constant, GDExtensionVariantPtr r_ret);
|
|
||||||
GDExtensionPtrUtilityFunction (*variant_get_ptr_utility_function)(GDExtensionConstStringNamePtr p_function, GDExtensionInt p_hash);
|
|
||||||
|
|
||||||
/* extra utilities */
|
|
||||||
void (*string_new_with_latin1_chars)(GDExtensionStringPtr r_dest, const char *p_contents);
|
|
||||||
void (*string_new_with_utf8_chars)(GDExtensionStringPtr r_dest, const char *p_contents);
|
|
||||||
void (*string_new_with_utf16_chars)(GDExtensionStringPtr r_dest, const char16_t *p_contents);
|
|
||||||
void (*string_new_with_utf32_chars)(GDExtensionStringPtr r_dest, const char32_t *p_contents);
|
|
||||||
void (*string_new_with_wide_chars)(GDExtensionStringPtr r_dest, const wchar_t *p_contents);
|
|
||||||
void (*string_new_with_latin1_chars_and_len)(GDExtensionStringPtr r_dest, const char *p_contents, GDExtensionInt p_size);
|
|
||||||
void (*string_new_with_utf8_chars_and_len)(GDExtensionStringPtr r_dest, const char *p_contents, GDExtensionInt p_size);
|
|
||||||
void (*string_new_with_utf16_chars_and_len)(GDExtensionStringPtr r_dest, const char16_t *p_contents, GDExtensionInt p_size);
|
|
||||||
void (*string_new_with_utf32_chars_and_len)(GDExtensionStringPtr r_dest, const char32_t *p_contents, GDExtensionInt p_size);
|
|
||||||
void (*string_new_with_wide_chars_and_len)(GDExtensionStringPtr r_dest, const wchar_t *p_contents, GDExtensionInt p_size);
|
|
||||||
/* Information about the following functions:
|
|
||||||
* - The return value is the resulting encoded string length.
|
|
||||||
* - The length returned is in characters, not in bytes. It also does not include a trailing zero.
|
|
||||||
* - These functions also do not write trailing zero, If you need it, write it yourself at the position indicated by the length (and make sure to allocate it).
|
|
||||||
* - Passing NULL in r_text means only the length is computed (again, without including trailing zero).
|
|
||||||
* - p_max_write_length argument is in characters, not bytes. It will be ignored if r_text is NULL.
|
|
||||||
* - p_max_write_length argument does not affect the return value, it's only to cap write length.
|
|
||||||
*/
|
|
||||||
GDExtensionInt (*string_to_latin1_chars)(GDExtensionConstStringPtr p_self, char *r_text, GDExtensionInt p_max_write_length);
|
|
||||||
GDExtensionInt (*string_to_utf8_chars)(GDExtensionConstStringPtr p_self, char *r_text, GDExtensionInt p_max_write_length);
|
|
||||||
GDExtensionInt (*string_to_utf16_chars)(GDExtensionConstStringPtr p_self, char16_t *r_text, GDExtensionInt p_max_write_length);
|
|
||||||
GDExtensionInt (*string_to_utf32_chars)(GDExtensionConstStringPtr p_self, char32_t *r_text, GDExtensionInt p_max_write_length);
|
|
||||||
GDExtensionInt (*string_to_wide_chars)(GDExtensionConstStringPtr p_self, wchar_t *r_text, GDExtensionInt p_max_write_length);
|
|
||||||
char32_t *(*string_operator_index)(GDExtensionStringPtr p_self, GDExtensionInt p_index);
|
|
||||||
const char32_t *(*string_operator_index_const)(GDExtensionConstStringPtr p_self, GDExtensionInt p_index);
|
|
||||||
|
|
||||||
/* Packed array functions */
|
|
||||||
|
|
||||||
uint8_t *(*packed_byte_array_operator_index)(GDExtensionTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedByteArray
|
|
||||||
const uint8_t *(*packed_byte_array_operator_index_const)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedByteArray
|
|
||||||
|
|
||||||
GDExtensionTypePtr (*packed_color_array_operator_index)(GDExtensionTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedColorArray, returns Color ptr
|
|
||||||
GDExtensionTypePtr (*packed_color_array_operator_index_const)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedColorArray, returns Color ptr
|
|
||||||
|
|
||||||
float *(*packed_float32_array_operator_index)(GDExtensionTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedFloat32Array
|
|
||||||
const float *(*packed_float32_array_operator_index_const)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedFloat32Array
|
|
||||||
double *(*packed_float64_array_operator_index)(GDExtensionTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedFloat64Array
|
|
||||||
const double *(*packed_float64_array_operator_index_const)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedFloat64Array
|
|
||||||
|
|
||||||
int32_t *(*packed_int32_array_operator_index)(GDExtensionTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedInt32Array
|
|
||||||
const int32_t *(*packed_int32_array_operator_index_const)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedInt32Array
|
|
||||||
int64_t *(*packed_int64_array_operator_index)(GDExtensionTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedInt32Array
|
|
||||||
const int64_t *(*packed_int64_array_operator_index_const)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedInt32Array
|
|
||||||
|
|
||||||
GDExtensionStringPtr (*packed_string_array_operator_index)(GDExtensionTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedStringArray
|
|
||||||
GDExtensionStringPtr (*packed_string_array_operator_index_const)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedStringArray
|
|
||||||
|
|
||||||
GDExtensionTypePtr (*packed_vector2_array_operator_index)(GDExtensionTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedVector2Array, returns Vector2 ptr
|
|
||||||
GDExtensionTypePtr (*packed_vector2_array_operator_index_const)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedVector2Array, returns Vector2 ptr
|
|
||||||
GDExtensionTypePtr (*packed_vector3_array_operator_index)(GDExtensionTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedVector3Array, returns Vector3 ptr
|
|
||||||
GDExtensionTypePtr (*packed_vector3_array_operator_index_const)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index); // p_self should be a PackedVector3Array, returns Vector3 ptr
|
|
||||||
|
|
||||||
GDExtensionVariantPtr (*array_operator_index)(GDExtensionTypePtr p_self, GDExtensionInt p_index); // p_self should be an Array ptr
|
|
||||||
GDExtensionVariantPtr (*array_operator_index_const)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index); // p_self should be an Array ptr
|
|
||||||
|
|
||||||
/* Dictionary functions */
|
|
||||||
|
|
||||||
GDExtensionVariantPtr (*dictionary_operator_index)(GDExtensionTypePtr p_self, GDExtensionConstVariantPtr p_key); // p_self should be an Dictionary ptr
|
|
||||||
GDExtensionVariantPtr (*dictionary_operator_index_const)(GDExtensionConstTypePtr p_self, GDExtensionConstVariantPtr p_key); // p_self should be an Dictionary ptr
|
|
||||||
|
|
||||||
/* OBJECT */
|
|
||||||
|
|
||||||
void (*object_method_bind_call)(GDExtensionMethodBindPtr p_method_bind, GDExtensionObjectPtr p_instance, const GDExtensionConstVariantPtr *p_args, GDExtensionInt p_arg_count, GDExtensionVariantPtr r_ret, GDExtensionCallError *r_error);
|
|
||||||
void (*object_method_bind_ptrcall)(GDExtensionMethodBindPtr p_method_bind, GDExtensionObjectPtr p_instance, const GDExtensionConstTypePtr *p_args, GDExtensionTypePtr r_ret);
|
|
||||||
void (*object_destroy)(GDExtensionObjectPtr p_o);
|
|
||||||
GDExtensionObjectPtr (*global_get_singleton)(GDExtensionConstStringNamePtr p_name);
|
|
||||||
|
|
||||||
void *(*object_get_instance_binding)(GDExtensionObjectPtr p_o, void *p_token, const GDExtensionInstanceBindingCallbacks *p_callbacks);
|
|
||||||
void (*object_set_instance_binding)(GDExtensionObjectPtr p_o, void *p_token, void *p_binding, const GDExtensionInstanceBindingCallbacks *p_callbacks);
|
|
||||||
|
|
||||||
void (*object_set_instance)(GDExtensionObjectPtr p_o, GDExtensionConstStringNamePtr p_classname, GDExtensionClassInstancePtr p_instance); /* p_classname should be a registered extension class and should extend the p_o object's class. */
|
|
||||||
|
|
||||||
GDExtensionObjectPtr (*object_cast_to)(GDExtensionConstObjectPtr p_object, void *p_class_tag);
|
|
||||||
GDExtensionObjectPtr (*object_get_instance_from_id)(GDObjectInstanceID p_instance_id);
|
|
||||||
GDObjectInstanceID (*object_get_instance_id)(GDExtensionConstObjectPtr p_object);
|
|
||||||
|
|
||||||
/* REFERENCE */
|
|
||||||
|
|
||||||
GDExtensionObjectPtr (*ref_get_object)(GDExtensionConstRefPtr p_ref);
|
|
||||||
void (*ref_set_object)(GDExtensionRefPtr p_ref, GDExtensionObjectPtr p_object);
|
|
||||||
|
|
||||||
/* SCRIPT INSTANCE */
|
|
||||||
|
|
||||||
GDExtensionScriptInstancePtr (*script_instance_create)(const GDExtensionScriptInstanceInfo *p_info, GDExtensionScriptInstanceDataPtr p_instance_data);
|
|
||||||
|
|
||||||
/* CLASSDB */
|
|
||||||
|
|
||||||
GDExtensionObjectPtr (*classdb_construct_object)(GDExtensionConstStringNamePtr p_classname); /* The passed class must be a built-in godot class, or an already-registered extension class. In both case, object_set_instance should be called to fully initialize the object. */
|
|
||||||
GDExtensionMethodBindPtr (*classdb_get_method_bind)(GDExtensionConstStringNamePtr p_classname, GDExtensionConstStringNamePtr p_methodname, GDExtensionInt p_hash);
|
|
||||||
void *(*classdb_get_class_tag)(GDExtensionConstStringNamePtr p_classname);
|
|
||||||
|
|
||||||
/* CLASSDB EXTENSION */
|
|
||||||
|
|
||||||
/* Provided parameters for `classdb_register_extension_*` can be safely freed once the function returns. */
|
|
||||||
void (*classdb_register_extension_class)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_parent_class_name, const GDExtensionClassCreationInfo *p_extension_funcs);
|
|
||||||
void (*classdb_register_extension_class_method)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, const GDExtensionClassMethodInfo *p_method_info);
|
|
||||||
void (*classdb_register_extension_class_integer_constant)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_enum_name, GDExtensionConstStringNamePtr p_constant_name, GDExtensionInt p_constant_value, GDExtensionBool p_is_bitfield);
|
|
||||||
void (*classdb_register_extension_class_property)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, const GDExtensionPropertyInfo *p_info, GDExtensionConstStringNamePtr p_setter, GDExtensionConstStringNamePtr p_getter);
|
|
||||||
void (*classdb_register_extension_class_property_group)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringPtr p_group_name, GDExtensionConstStringPtr p_prefix);
|
|
||||||
void (*classdb_register_extension_class_property_subgroup)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringPtr p_subgroup_name, GDExtensionConstStringPtr p_prefix);
|
|
||||||
void (*classdb_register_extension_class_signal)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_signal_name, const GDExtensionPropertyInfo *p_argument_info, GDExtensionInt p_argument_count);
|
|
||||||
void (*classdb_unregister_extension_class)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name); /* Unregistering a parent class before a class that inherits it will result in failure. Inheritors must be unregistered first. */
|
|
||||||
|
|
||||||
void (*get_library_path)(GDExtensionClassLibraryPtr p_library, GDExtensionStringPtr r_path);
|
|
||||||
|
|
||||||
} GDExtensionInterface;
|
|
||||||
|
|
||||||
/* INITIALIZATION */
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
GDEXTENSION_INITIALIZATION_CORE,
|
|
||||||
GDEXTENSION_INITIALIZATION_SERVERS,
|
|
||||||
GDEXTENSION_INITIALIZATION_SCENE,
|
|
||||||
GDEXTENSION_INITIALIZATION_EDITOR,
|
|
||||||
GDEXTENSION_MAX_INITIALIZATION_LEVEL,
|
|
||||||
} GDExtensionInitializationLevel;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
/* Minimum initialization level required.
|
|
||||||
* If Core or Servers, the extension needs editor or game restart to take effect */
|
|
||||||
GDExtensionInitializationLevel minimum_initialization_level;
|
|
||||||
/* Up to the user to supply when initializing */
|
|
||||||
void *userdata;
|
|
||||||
/* This function will be called multiple times for each initialization level. */
|
|
||||||
void (*initialize)(void *userdata, GDExtensionInitializationLevel p_level);
|
|
||||||
void (*deinitialize)(void *userdata, GDExtensionInitializationLevel p_level);
|
|
||||||
} GDExtensionInitialization;
|
|
||||||
|
|
||||||
/* Define a C function prototype that implements the function below and expose it to dlopen() (or similar).
|
|
||||||
* This is the entry point of the GDExtension library and will be called on initialization.
|
|
||||||
* It can be used to set up different init levels, which are called during various stages of initialization/shutdown.
|
|
||||||
* The function name must be a unique one specified in the .gdextension config file.
|
|
||||||
*/
|
|
||||||
typedef GDExtensionBool (*GDExtensionInitializationFunction)(const GDExtensionInterface *p_interface, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // GDEXTENSION_INTERFACE_H
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
[configuration]
|
[configuration]
|
||||||
|
|
||||||
entry_symbol = "git_plugin_init"
|
entry_symbol = "git_plugin_init"
|
||||||
|
compatibility_minimum = "4.1.0"
|
||||||
|
|
||||||
[libraries]
|
[libraries]
|
||||||
|
|
||||||
|
|||||||
@@ -3,5 +3,5 @@
|
|||||||
name="Godot Git Plugin"
|
name="Godot Git Plugin"
|
||||||
description="This plugin lets you interact with Git without leaving the Godot editor. More information can be found at https://github.com/godotengine/godot-git-plugin/wiki"
|
description="This plugin lets you interact with Git without leaving the Godot editor. More information can be found at https://github.com/godotengine/godot-git-plugin/wiki"
|
||||||
author="twaritwaikar"
|
author="twaritwaikar"
|
||||||
version="v3.0.0-beta1"
|
version="3.1.1"
|
||||||
script="godot-git-plugin.gd"
|
script="godot-git-plugin.gd"
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ config_version=5
|
|||||||
|
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/features=PackedStringArray("4.0")
|
config/features=PackedStringArray("4.1")
|
||||||
|
|
||||||
[editor]
|
[editor]
|
||||||
|
|
||||||
|
|||||||
Submodule godot-cpp updated: 0233683173...d627942b64
@@ -19,8 +19,8 @@ void uninitialize_git_plugin_module(godot::ModuleInitializationLevel p_level) {
|
|||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
||||||
GDExtensionBool GDE_EXPORT git_plugin_init(const GDExtensionInterface *p_interface, const GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) {
|
GDExtensionBool GDE_EXPORT git_plugin_init(const GDExtensionInterfaceGetProcAddress p_address, const GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) {
|
||||||
godot::GDExtensionBinding::InitObject init_obj(p_interface, p_library, r_initialization);
|
godot::GDExtensionBinding::InitObject init_obj(p_address, p_library, r_initialization);
|
||||||
|
|
||||||
init_obj.register_initializer(initialize_git_plugin_module);
|
init_obj.register_initializer(initialize_git_plugin_module);
|
||||||
init_obj.register_terminator(uninitialize_git_plugin_module);
|
init_obj.register_terminator(uninitialize_git_plugin_module);
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ extern "C" int progress_cb(const char *str, int len, void *data) {
|
|||||||
char *progress_str = new char[len + 1];
|
char *progress_str = new char[len + 1];
|
||||||
std::memcpy(progress_str, str, len);
|
std::memcpy(progress_str, str, len);
|
||||||
progress_str[len] = '\0';
|
progress_str[len] = '\0';
|
||||||
godot::UtilityFunctions::push_warning("remote: ", CString(godot::String(progress_str).strip_edges()).data);
|
godot::UtilityFunctions::push_warning("remote: ", godot::String::utf8(progress_str).strip_edges());
|
||||||
delete[] progress_str;
|
delete[] progress_str;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -27,10 +27,10 @@ extern "C" int update_cb(const char *refname, const git_oid *a, const git_oid *b
|
|||||||
|
|
||||||
git_oid_tostr(b_str, short_commit_length, b);
|
git_oid_tostr(b_str, short_commit_length, b);
|
||||||
if (git_oid_is_zero(a)) {
|
if (git_oid_is_zero(a)) {
|
||||||
godot::UtilityFunctions::print("* [new] ", CString(godot::String(b_str)).data, " ", CString(godot::String(refname)).data);
|
godot::UtilityFunctions::print("* [new] ", godot::String::utf8(b_str), " ", godot::String::utf8(refname));
|
||||||
} else {
|
} else {
|
||||||
git_oid_tostr(a_str, short_commit_length, a);
|
git_oid_tostr(a_str, short_commit_length, a);
|
||||||
godot::UtilityFunctions::print("[updated] ", CString(godot::String(a_str)).data, "...", CString(godot::String(b_str)).data, " ", CString(godot::String(refname)).data);
|
godot::UtilityFunctions::print("[updated] ", godot::String::utf8(a_str), "...", godot::String::utf8(b_str), " ", godot::String::utf8(refname));
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -68,11 +68,11 @@ extern "C" int push_transfer_progress_cb(unsigned int current, unsigned int tota
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern "C" int push_update_reference_cb(const char *refname, const char *status, void *data) {
|
extern "C" int push_update_reference_cb(const char *refname, const char *status, void *data) {
|
||||||
godot::String status_str = status;
|
if (status != NULL) {
|
||||||
if (status_str == "") {
|
godot::String status_str = godot::String::utf8(status);
|
||||||
godot::UtilityFunctions::print("[rejected] ", CString(godot::String(refname)).data, " ", CString(status_str).data);
|
godot::UtilityFunctions::print("[rejected] ", godot::String::utf8(refname), " ", status_str);
|
||||||
} else {
|
} else {
|
||||||
godot::UtilityFunctions::print("[updated] ", CString(godot::String(refname)).data);
|
godot::UtilityFunctions::print("[updated] ", godot::String::utf8(refname));
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -82,16 +82,18 @@ extern "C" int credentials_cb(git_cred **out, const char *url, const char *usern
|
|||||||
|
|
||||||
godot::String proper_username = username_from_url ? username_from_url : creds->username;
|
godot::String proper_username = username_from_url ? username_from_url : creds->username;
|
||||||
|
|
||||||
if (allowed_types & GIT_CREDENTIAL_USERPASS_PLAINTEXT) {
|
if (!creds->ssh_public_key_path.is_empty()) {
|
||||||
return git_cred_userpass_plaintext_new(out, CString(proper_username).data, CString(creds->password).data);
|
if (allowed_types & GIT_CREDENTIAL_SSH_KEY) {
|
||||||
|
return git_credential_ssh_key_new(out,
|
||||||
|
CString(proper_username).data,
|
||||||
|
CString(creds->ssh_public_key_path).data,
|
||||||
|
CString(creds->ssh_private_key_path).data,
|
||||||
|
CString(creds->ssh_passphrase).data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (allowed_types & GIT_CREDENTIAL_SSH_KEY) {
|
if (allowed_types & GIT_CREDENTIAL_USERPASS_PLAINTEXT) {
|
||||||
return git_credential_ssh_key_new(out,
|
return git_cred_userpass_plaintext_new(out, CString(proper_username).data, CString(creds->password).data);
|
||||||
CString(proper_username).data,
|
|
||||||
CString(creds->ssh_public_key_path).data,
|
|
||||||
CString(creds->ssh_private_key_path).data,
|
|
||||||
CString(creds->ssh_passphrase).data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (allowed_types & GIT_CREDENTIAL_USERNAME) {
|
if (allowed_types & GIT_CREDENTIAL_USERNAME) {
|
||||||
|
|||||||
@@ -63,10 +63,10 @@ bool GitPlugin::check_errors(int error, godot::String function, godot::String fi
|
|||||||
message = message + ".";
|
message = message + ".";
|
||||||
if ((lg2err = git_error_last()) != nullptr && lg2err->message != nullptr) {
|
if ((lg2err = git_error_last()) != nullptr && lg2err->message != nullptr) {
|
||||||
message = message + " Error " + godot::String::num_int64(error) + ": ";
|
message = message + " Error " + godot::String::num_int64(error) + ": ";
|
||||||
message = message + godot::String(lg2err->message);
|
message = message + godot::String::utf8(lg2err->message);
|
||||||
}
|
}
|
||||||
|
|
||||||
godot::UtilityFunctions::push_error("GitPlugin: ", CString(message).data, " in ", CString(file).data, ":", CString(function).data, "#L", line);
|
godot::UtilityFunctions::push_error("GitPlugin: ", message, " in ", file, ":", function, "#L", line);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -232,9 +232,9 @@ godot::TypedArray<godot::Dictionary> GitPlugin::_get_modified_files_data() {
|
|||||||
const git_status_entry *entry = git_status_byindex(statuses.get(), i);
|
const git_status_entry *entry = git_status_byindex(statuses.get(), i);
|
||||||
godot::String path;
|
godot::String path;
|
||||||
if (entry->index_to_workdir) {
|
if (entry->index_to_workdir) {
|
||||||
path = entry->index_to_workdir->new_file.path;
|
path = godot::String::utf8(entry->index_to_workdir->new_file.path);
|
||||||
} else {
|
} else {
|
||||||
path = entry->head_to_index->new_file.path;
|
path = godot::String::utf8(entry->head_to_index->new_file.path);
|
||||||
}
|
}
|
||||||
|
|
||||||
const static int git_status_wt = GIT_STATUS_WT_NEW | GIT_STATUS_WT_MODIFIED | GIT_STATUS_WT_DELETED | GIT_STATUS_WT_TYPECHANGE | GIT_STATUS_WT_RENAMED | GIT_STATUS_CONFLICTED;
|
const static int git_status_wt = GIT_STATUS_WT_NEW | GIT_STATUS_WT_MODIFIED | GIT_STATUS_WT_DELETED | GIT_STATUS_WT_TYPECHANGE | GIT_STATUS_WT_RENAMED | GIT_STATUS_CONFLICTED;
|
||||||
@@ -245,8 +245,8 @@ godot::TypedArray<godot::Dictionary> GitPlugin::_get_modified_files_data() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (entry->status & git_status_index) {
|
if (entry->status & git_status_index) {
|
||||||
if (entry->status == GIT_STATUS_INDEX_RENAMED) {
|
if (entry->status & GIT_STATUS_INDEX_RENAMED) {
|
||||||
godot::String old_path = entry->head_to_index->old_file.path;
|
godot::String old_path = godot::String::utf8(entry->head_to_index->old_file.path);
|
||||||
stats_files.push_back(create_status_file(old_path, map_changes.at(GIT_STATUS_INDEX_DELETED), TREE_AREA_STAGED));
|
stats_files.push_back(create_status_file(old_path, map_changes.at(GIT_STATUS_INDEX_DELETED), TREE_AREA_STAGED));
|
||||||
stats_files.push_back(create_status_file(path, map_changes.at(GIT_STATUS_INDEX_NEW), TREE_AREA_STAGED));
|
stats_files.push_back(create_status_file(path, map_changes.at(GIT_STATUS_INDEX_NEW), TREE_AREA_STAGED));
|
||||||
} else {
|
} else {
|
||||||
@@ -273,9 +273,9 @@ godot::TypedArray<godot::String> GitPlugin::_get_branch_list() {
|
|||||||
|
|
||||||
if (git_branch_is_head(ref.get())) {
|
if (git_branch_is_head(ref.get())) {
|
||||||
// Always send the current branch as the first branch in list
|
// Always send the current branch as the first branch in list
|
||||||
branch_names.push_front(name);
|
branch_names.push_front(godot::String::utf8(name));
|
||||||
} else {
|
} else {
|
||||||
branch_names.push_back(godot::String(name));
|
branch_names.push_back(godot::String::utf8(name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -352,7 +352,7 @@ godot::String GitPlugin::_get_current_branch_name() {
|
|||||||
const char *name = "";
|
const char *name = "";
|
||||||
GIT2_CALL_R(git_branch_name(&name, branch.get()), "Could not get branch name from current branch reference", "");
|
GIT2_CALL_R(git_branch_name(&name, branch.get()), "Could not get branch name from current branch reference", "");
|
||||||
|
|
||||||
return name;
|
return godot::String::utf8(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
godot::TypedArray<godot::String> GitPlugin::_get_remotes() {
|
godot::TypedArray<godot::String> GitPlugin::_get_remotes() {
|
||||||
@@ -361,13 +361,13 @@ godot::TypedArray<godot::String> GitPlugin::_get_remotes() {
|
|||||||
|
|
||||||
godot::TypedArray<godot::String> remotes;
|
godot::TypedArray<godot::String> remotes;
|
||||||
for (int i = 0; i < remote_array.count; i++) {
|
for (int i = 0; i < remote_array.count; i++) {
|
||||||
remotes.push_back(remote_array.strings[i]);
|
remotes.push_back(godot::String::utf8(remote_array.strings[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
return remotes;
|
return remotes;
|
||||||
}
|
}
|
||||||
|
|
||||||
godot::TypedArray<godot::Dictionary> GitPlugin::_get_previous_commits(int64_t max_commits) {
|
godot::TypedArray<godot::Dictionary> GitPlugin::_get_previous_commits(int32_t max_commits) {
|
||||||
git_revwalk_ptr walker;
|
git_revwalk_ptr walker;
|
||||||
GIT2_CALL_R(git_revwalk_new(Capture(walker), repo.get()), "Could not create new revwalk", godot::TypedArray<godot::Dictionary>());
|
GIT2_CALL_R(git_revwalk_new(Capture(walker), repo.get()), "Could not create new revwalk", godot::TypedArray<godot::Dictionary>());
|
||||||
GIT2_CALL_R(git_revwalk_sorting(walker.get(), GIT_SORT_TIME), "Could not sort revwalk by time", godot::TypedArray<godot::Dictionary>());
|
GIT2_CALL_R(git_revwalk_sorting(walker.get(), GIT_SORT_TIME), "Could not sort revwalk by time", godot::TypedArray<godot::Dictionary>());
|
||||||
@@ -382,10 +382,10 @@ godot::TypedArray<godot::Dictionary> GitPlugin::_get_previous_commits(int64_t ma
|
|||||||
GIT2_CALL_R(git_commit_lookup(Capture(commit), repo.get(), &oid), "Failed to lookup the commit", commits);
|
GIT2_CALL_R(git_commit_lookup(Capture(commit), repo.get(), &oid), "Failed to lookup the commit", commits);
|
||||||
|
|
||||||
git_oid_tostr(commit_id, GIT_OID_HEXSZ + 1, git_commit_id(commit.get()));
|
git_oid_tostr(commit_id, GIT_OID_HEXSZ + 1, git_commit_id(commit.get()));
|
||||||
godot::String msg = git_commit_message(commit.get());
|
godot::String msg = godot::String::utf8(git_commit_message(commit.get()));
|
||||||
|
|
||||||
const git_signature *sig = git_commit_author(commit.get());
|
const git_signature *sig = git_commit_author(commit.get());
|
||||||
godot::String author = godot::String() + sig->name + " <" + sig->email + ">";
|
godot::String author = godot::String::utf8(sig->name) + " <" + godot::String::utf8(sig->email) + ">";
|
||||||
|
|
||||||
commits.push_back(create_commit(msg, author, commit_id, sig->when.time, sig->when.offset));
|
commits.push_back(create_commit(msg, author, commit_id, sig->when.time, sig->when.offset));
|
||||||
}
|
}
|
||||||
@@ -394,7 +394,7 @@ godot::TypedArray<godot::Dictionary> GitPlugin::_get_previous_commits(int64_t ma
|
|||||||
}
|
}
|
||||||
|
|
||||||
void GitPlugin::_fetch(const godot::String &remote) {
|
void GitPlugin::_fetch(const godot::String &remote) {
|
||||||
godot::UtilityFunctions::print("GitPlugin: Performing fetch from ", CString(remote).data);
|
godot::UtilityFunctions::print("GitPlugin: Performing fetch from ", remote);
|
||||||
|
|
||||||
git_remote_ptr remote_object;
|
git_remote_ptr remote_object;
|
||||||
GIT2_CALL(git_remote_lookup(Capture(remote_object), repo.get(), CString(remote).data), "Could not lookup remote \"" + remote + "\"");
|
GIT2_CALL(git_remote_lookup(Capture(remote_object), repo.get(), CString(remote).data), "Could not lookup remote \"" + remote + "\"");
|
||||||
@@ -418,7 +418,7 @@ void GitPlugin::_fetch(const godot::String &remote) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void GitPlugin::_pull(const godot::String &remote) {
|
void GitPlugin::_pull(const godot::String &remote) {
|
||||||
godot::UtilityFunctions::print("GitPlugin: Performing pull from ", CString(remote).data);
|
godot::UtilityFunctions::print("GitPlugin: Performing pull from ", remote);
|
||||||
|
|
||||||
git_remote_ptr remote_object;
|
git_remote_ptr remote_object;
|
||||||
GIT2_CALL(git_remote_lookup(Capture(remote_object), repo.get(), CString(remote).data), "Could not lookup remote \"" + remote + "\"");
|
GIT2_CALL(git_remote_lookup(Capture(remote_object), repo.get(), CString(remote).data), "Could not lookup remote \"" + remote + "\"");
|
||||||
@@ -515,7 +515,7 @@ void GitPlugin::_pull(const godot::String &remote) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void GitPlugin::_push(const godot::String &remote, bool force) {
|
void GitPlugin::_push(const godot::String &remote, bool force) {
|
||||||
godot::UtilityFunctions::print("GitPlugin: Performing push to ", CString(remote).data);
|
godot::UtilityFunctions::print("GitPlugin: Performing push to ", remote);
|
||||||
|
|
||||||
git_remote_ptr remote_object;
|
git_remote_ptr remote_object;
|
||||||
GIT2_CALL(git_remote_lookup(Capture(remote_object), repo.get(), CString(remote).data), "Could not lookup remote \"" + remote + "\"");
|
GIT2_CALL(git_remote_lookup(Capture(remote_object), repo.get(), CString(remote).data), "Could not lookup remote \"" + remote + "\"");
|
||||||
@@ -529,7 +529,8 @@ void GitPlugin::_push(const godot::String &remote, bool force) {
|
|||||||
remote_cbs.push_transfer_progress = &push_transfer_progress_cb;
|
remote_cbs.push_transfer_progress = &push_transfer_progress_cb;
|
||||||
remote_cbs.push_update_reference = &push_update_reference_cb;
|
remote_cbs.push_update_reference = &push_update_reference_cb;
|
||||||
|
|
||||||
GIT2_CALL(git_remote_connect(remote_object.get(), GIT_DIRECTION_PUSH, &remote_cbs, nullptr, nullptr), "Could not connect to remote \"" + remote + "\". Are your credentials correct? Try using a PAT token (in case you are using Github) as your password");
|
godot::String msg = "Could not connect to remote \"" + remote + "\". Are your credentials correct? Try using a PAT token (in case you are using Github) as your password";
|
||||||
|
GIT2_CALL(git_remote_connect(remote_object.get(), GIT_DIRECTION_PUSH, &remote_cbs, nullptr, nullptr), msg);
|
||||||
|
|
||||||
godot::String branch_name = _get_current_branch_name();
|
godot::String branch_name = _get_current_branch_name();
|
||||||
|
|
||||||
@@ -560,7 +561,7 @@ bool GitPlugin::_checkout_branch(const godot::String &branch_name) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
godot::TypedArray<godot::Dictionary> GitPlugin::_get_diff(const godot::String &identifier, const int64_t area) {
|
godot::TypedArray<godot::Dictionary> GitPlugin::_get_diff(const godot::String &identifier, const int32_t area) {
|
||||||
git_diff_options opts = GIT_DIFF_OPTIONS_INIT;
|
git_diff_options opts = GIT_DIFF_OPTIONS_INIT;
|
||||||
godot::TypedArray<godot::Dictionary> diff_contents;
|
godot::TypedArray<godot::Dictionary> diff_contents;
|
||||||
|
|
||||||
@@ -629,7 +630,7 @@ godot::TypedArray<godot::Dictionary> GitPlugin::_parse_diff(git_diff *diff) {
|
|||||||
git_patch_ptr patch;
|
git_patch_ptr patch;
|
||||||
GIT2_CALL_R(git_patch_from_diff(Capture(patch), diff, i), "Could not create patch from diff", godot::TypedArray<godot::Dictionary>());
|
GIT2_CALL_R(git_patch_from_diff(Capture(patch), diff, i), "Could not create patch from diff", godot::TypedArray<godot::Dictionary>());
|
||||||
|
|
||||||
godot::Dictionary diff_file = create_diff_file(delta->new_file.path, delta->old_file.path);
|
godot::Dictionary diff_file = create_diff_file(godot::String::utf8(delta->new_file.path), godot::String::utf8(delta->old_file.path));
|
||||||
|
|
||||||
godot::TypedArray<godot::Dictionary> diff_hunks;
|
godot::TypedArray<godot::Dictionary> diff_hunks;
|
||||||
for (int j = 0; j < git_patch_num_hunks(patch.get()); j++) {
|
for (int j = 0; j < git_patch_num_hunks(patch.get()); j++) {
|
||||||
@@ -650,7 +651,7 @@ godot::TypedArray<godot::Dictionary> GitPlugin::_parse_diff(git_diff *diff) {
|
|||||||
|
|
||||||
godot::String status = " "; // We reserve 1 null terminated space to fill the + or the - character at git_diff_line->origin
|
godot::String status = " "; // We reserve 1 null terminated space to fill the + or the - character at git_diff_line->origin
|
||||||
status[0] = git_diff_line->origin;
|
status[0] = git_diff_line->origin;
|
||||||
diff_lines.push_back(create_diff_line(git_diff_line->new_lineno, git_diff_line->old_lineno, godot::String(content), status));
|
diff_lines.push_back(create_diff_line(git_diff_line->new_lineno, git_diff_line->old_lineno, godot::String::utf8(content), status));
|
||||||
|
|
||||||
delete[] content;
|
delete[] content;
|
||||||
}
|
}
|
||||||
@@ -680,9 +681,9 @@ bool GitPlugin::_initialize(const godot::String &project_path) {
|
|||||||
|
|
||||||
git_buf discovered_repo_path = {};
|
git_buf discovered_repo_path = {};
|
||||||
if (git_repository_discover(&discovered_repo_path, CString(project_path).data, 1, nullptr) == 0) {
|
if (git_repository_discover(&discovered_repo_path, CString(project_path).data, 1, nullptr) == 0) {
|
||||||
repo_project_path = godot::String(discovered_repo_path.ptr);
|
repo_project_path = godot::String::utf8(discovered_repo_path.ptr);
|
||||||
|
|
||||||
godot::UtilityFunctions::print("Found a repository at " + godot::String(discovered_repo_path.ptr) + ".");
|
godot::UtilityFunctions::print("Found a repository at " + repo_project_path + ".");
|
||||||
git_buf_dispose(&discovered_repo_path);
|
git_buf_dispose(&discovered_repo_path);
|
||||||
} else {
|
} else {
|
||||||
repo_project_path = project_path;
|
repo_project_path = project_path;
|
||||||
@@ -690,7 +691,7 @@ bool GitPlugin::_initialize(const godot::String &project_path) {
|
|||||||
godot::UtilityFunctions::push_warning("Could not find any higher level repositories.");
|
godot::UtilityFunctions::push_warning("Could not find any higher level repositories.");
|
||||||
}
|
}
|
||||||
|
|
||||||
godot::UtilityFunctions::print("Selected repository path: " + godot::String(repo_project_path) + ".");
|
godot::UtilityFunctions::print("Selected repository path: " + repo_project_path + ".");
|
||||||
GIT2_CALL_R(git_repository_init(Capture(repo), CString(repo_project_path).data, 0), "Could not initialize repository", false);
|
GIT2_CALL_R(git_repository_init(Capture(repo), CString(repo_project_path).data, 0), "Could not initialize repository", false);
|
||||||
|
|
||||||
git_reference_ptr head;
|
git_reference_ptr head;
|
||||||
|
|||||||
@@ -40,10 +40,10 @@ public:
|
|||||||
void _unstage_file(const godot::String &file_path) override;
|
void _unstage_file(const godot::String &file_path) override;
|
||||||
void _discard_file(const godot::String &file_path) override;
|
void _discard_file(const godot::String &file_path) override;
|
||||||
void _commit(const godot::String &msg) override;
|
void _commit(const godot::String &msg) override;
|
||||||
godot::TypedArray<godot::Dictionary> _get_diff(const godot::String &identifier, int64_t area) override;
|
godot::TypedArray<godot::Dictionary> _get_diff(const godot::String &identifier, int32_t area) override;
|
||||||
bool _shut_down() override;
|
bool _shut_down() override;
|
||||||
godot::String _get_vcs_name() override;
|
godot::String _get_vcs_name() override;
|
||||||
godot::TypedArray<godot::Dictionary> _get_previous_commits(int64_t max_commits) override;
|
godot::TypedArray<godot::Dictionary> _get_previous_commits(int32_t max_commits) override;
|
||||||
godot::TypedArray<godot::String> _get_branch_list() override;
|
godot::TypedArray<godot::String> _get_branch_list() override;
|
||||||
godot::TypedArray<godot::String> _get_remotes() override;
|
godot::TypedArray<godot::String> _get_remotes() override;
|
||||||
void _create_branch(const godot::String &branch_name) override;
|
void _create_branch(const godot::String &branch_name) override;
|
||||||
|
|||||||
1
thirdparty/ssh2/SCsub
vendored
1
thirdparty/ssh2/SCsub
vendored
@@ -31,6 +31,7 @@ libssh2_sources = [
|
|||||||
"libssh2/src/misc.c",
|
"libssh2/src/misc.c",
|
||||||
"libssh2/src/pem.c",
|
"libssh2/src/pem.c",
|
||||||
"libssh2/src/session.c",
|
"libssh2/src/session.c",
|
||||||
|
"libssh2/src/userauth_kbd_packet.c",
|
||||||
"libssh2/src/userauth.c",
|
"libssh2/src/userauth.c",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
2
thirdparty/ssh2/libssh2
vendored
2
thirdparty/ssh2/libssh2
vendored
Submodule thirdparty/ssh2/libssh2 updated: 635caa9078...6cba487395
Reference in New Issue
Block a user