Added in first Scripting API

This commit is contained in:
Lobsterzelda 2023-09-06 17:19:10 -04:00
parent c0440df288
commit fec99844cb
7 changed files with 101 additions and 0 deletions

View File

@ -512,6 +512,11 @@ add_library(core
PowerPC/SignatureDB/MEGASignatureDB.h
PowerPC/SignatureDB/SignatureDB.cpp
PowerPC/SignatureDB/SignatureDB.h
Scripting/CoreScriptInterface/InternalAPIs/FileUtility_APIs.h
Scripting/HelperClasses/InternalAPIDefinitions/FileUtility_API_Implementations.cpp
Scripting/HelperClasses/InternalAPIDefinitions/FileUtility_API_Implementations.h
Scripting/ScriptUtilities.cpp
Scripting/ScriptUtilities.h
State.cpp
State.h
SyncIdentifier.h

View File

@ -0,0 +1,18 @@
#pragma once
namespace Scripting
{
// FileUtility_APIs contains the APIs for getting the user directory path and the system directory
// path for Dolphin.
typedef struct FileUtility_APIs
{
// Returns the user directory path for Dolphin.
const char* (*GetUserDirectoryPath)();
// Returns the system directory path for Dolphin.
const char* (*GetSystemDirectoryPath)();
} FileUtility_APIs;
} // namespace Scripting

View File

@ -0,0 +1,31 @@
#include "Core/Scripting/HelperClasses/InternalAPIDefinitions/FileUtility_API_Implementations.h"
#include <string>
#include "Common/FileUtil.h"
namespace Scripting::FileUtilityAPIsImpl
{
FileUtility_APIs fileUtility_APIs = {};
std::string user_directory_path;
std::string system_directory_path;
void Init()
{
fileUtility_APIs.GetUserDirectoryPath = GetUserDirectoryPath_impl;
fileUtility_APIs.GetSystemDirectoryPath = GetSystemDirectoryPath_impl;
user_directory_path = File::GetUserPath(D_LOAD_IDX);
system_directory_path = File::GetSysDirectory();
}
const char* GetUserDirectoryPath_impl()
{
return user_directory_path.c_str();
}
const char* GetSystemDirectoryPath_impl()
{
return system_directory_path.c_str();
}
} // namespace Scripting::FileUtilityAPIsImpl

View File

@ -0,0 +1,15 @@
#pragma once
#include "Core/Scripting/CoreScriptInterface/InternalAPIs/FileUtility_APIs.h"
// This file contains the implementations for the APIs in FileUtility_APIs
namespace Scripting::FileUtilityAPIsImpl
{
extern FileUtility_APIs fileUtility_APIs;
void Init();
const char* GetUserDirectoryPath_impl();
const char* GetSystemDirectoryPath_impl();
} // namespace Scripting::FileUtilityAPIsImpl

View File

@ -0,0 +1,19 @@
#include "Core/Scripting/ScriptUtilities.h"
#include "Core/Scripting/HelperClasses/InternalAPIDefinitions/FileUtility_API_Implementations.h"
namespace Scripting
{
static bool is_scripting_core_initialized = false;
void InitScriptingCore()
{
if (!is_scripting_core_initialized)
{
FileUtilityAPIsImpl::Init();
is_scripting_core_initialized = true;
}
}
} // namespace Scripting

View File

@ -0,0 +1,8 @@
#pragma once
namespace Scripting
{
void InitScriptingCore();
} // namespace Scripting

View File

@ -436,6 +436,9 @@
<ClInclude Include="Core\PowerPC\SignatureDB\DSYSignatureDB.h" />
<ClInclude Include="Core\PowerPC\SignatureDB\MEGASignatureDB.h" />
<ClInclude Include="Core\PowerPC\SignatureDB\SignatureDB.h" />
<ClInclude Include="Core\Scripting\CoreScriptInterface\InternalAPIs\FileUtility_APIs.h" />
<ClInclude Include="Core\Scripting\HelperClasses\InternalAPIDefinitions\FileUtility_API_Implementations.h" />
<ClInclude Include="Core\Scripting\ScriptUtilities.h" />
<ClInclude Include="Core\State.h" />
<ClInclude Include="Core\SyncIdentifier.h" />
<ClInclude Include="Core\SysConf.h" />
@ -1079,6 +1082,8 @@
<ClCompile Include="Core\PowerPC\SignatureDB\DSYSignatureDB.cpp" />
<ClCompile Include="Core\PowerPC\SignatureDB\MEGASignatureDB.cpp" />
<ClCompile Include="Core\PowerPC\SignatureDB\SignatureDB.cpp" />
<ClCompile Include="Core\Scripting\HelperClasses\InternalAPIDefinitions\FileUtility_API_Implementations.cpp" />
<ClCompile Include="Core\Scripting\ScriptUtilities.cpp" />
<ClCompile Include="Core\State.cpp" />
<ClCompile Include="Core\SysConf.cpp" />
<ClCompile Include="Core\System.cpp" />