mirror of
https://github.com/alliedmodders/amxmodx.git
synced 2024-12-24 05:45:36 +03:00
Began AMXx bindings
This commit is contained in:
parent
abbb2f2cc2
commit
acb2b27852
51
dlls/nvault/amxxapi.cpp
Executable file
51
dlls/nvault/amxxapi.cpp
Executable file
@ -0,0 +1,51 @@
|
||||
#include "amxxapi.h"
|
||||
|
||||
CVector<Vault *> Vaults;
|
||||
|
||||
static cell nvault_open(AMX *amx, cell *params)
|
||||
{
|
||||
int len, id=-1;
|
||||
char *name = MF_GetAmxString(amx, params[1], 0, &len);
|
||||
char *file = MF_BuildPathname("%s/nvault/%s", LOCALINFO("amxx_datadir"), name);
|
||||
for (size_t i=0; i<Vaults.size(); i++)
|
||||
{
|
||||
if (!Vaults.at(i))
|
||||
{
|
||||
id = i;
|
||||
} else if (strcmp(Vaults.at(i)->GetFileName(), file) == 0) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
Vault *v = new Vault(file);
|
||||
if (id != -1)
|
||||
{
|
||||
Vaults[id] = v;
|
||||
} else {
|
||||
Vaults.push_back(v);
|
||||
id = (int)Vaults.size()-1;
|
||||
}
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
static cell nvault_get(AMX *amx, cell *params)
|
||||
{
|
||||
unsigned int id = params[1];
|
||||
if (id > Vaults.size() || !Vaults.at(i))
|
||||
{
|
||||
MF_LogError(amx, AMX_ERR_NATIVE, "Invalid vault id: %d\n", id);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void OnAmxxAttach()
|
||||
{
|
||||
//create the dir if it doesn't exist
|
||||
#ifdef __linux__
|
||||
mkdir(MF_BuildPathname("%s/nvault", LOCALINFO("amxx_datadir")), 0700);
|
||||
#else
|
||||
mkdir(MF_BuildPathname("%s/nvault", LOCALINFO("amxx_datadir"));
|
||||
#endif
|
||||
}
|
13
dlls/nvault/amxxapi.h
Executable file
13
dlls/nvault/amxxapi.h
Executable file
@ -0,0 +1,13 @@
|
||||
#ifndef _INCLUDE_AMXXAPI_H
|
||||
#define _INCLUDE_AMXXAPI_H
|
||||
|
||||
#include "sdk/CVector.h"
|
||||
#include "hash.h"
|
||||
#include "nvault.h"
|
||||
#include "journal.h"
|
||||
#include "sdk/amxxmodule.h"
|
||||
|
||||
AMX_NATIVE_INFO nVault_natives[];
|
||||
|
||||
#endif //_INCLUDE_AMXXAPI_H
|
||||
|
@ -15,6 +15,11 @@ Vault::~Vault()
|
||||
}
|
||||
}
|
||||
|
||||
const char *Vault::GetFileName()
|
||||
{
|
||||
return m_File.c_str();
|
||||
}
|
||||
|
||||
void Vault::Clear()
|
||||
{
|
||||
if (m_Vault)
|
||||
|
@ -46,6 +46,7 @@ public:
|
||||
bool KeyExists(const char *key);
|
||||
void Clear();
|
||||
void EraseKey(const char *key);
|
||||
const char *GetFileName();
|
||||
private:
|
||||
void _WriteHeaders(FILE *fp, uint32_t hashes);
|
||||
private:
|
||||
|
37
dlls/nvault/nvault.inc
Executable file
37
dlls/nvault/nvault.inc
Executable file
@ -0,0 +1,37 @@
|
||||
/* nVault
|
||||
*
|
||||
* A binary (hash table) vault with journaling.
|
||||
* (C)2005 David "BAILOPAN" Anderson
|
||||
*/
|
||||
|
||||
#if defined _nvault_included
|
||||
#endinput
|
||||
#endif
|
||||
#define _nvault_included
|
||||
|
||||
/* Opens a vault and returns an id to it
|
||||
* The vault name is appended with ".nvt" and stored in
|
||||
* datadir/vault.
|
||||
*/
|
||||
native vault_open(const name[]);
|
||||
|
||||
/* Reads from a vault.
|
||||
* No extra params - gets as an int
|
||||
* One extra param - Float byref
|
||||
* Two extra params - gets as a string
|
||||
*/
|
||||
native nvault_get(id, const name[], ...);
|
||||
|
||||
/* Reads a data from given key.
|
||||
* If len is set to zero then get_vaultdata
|
||||
* returns value as an number. */
|
||||
native get_vaultdata(const key[], data[] = "", len = 0);
|
||||
|
||||
/* Sets a data under given key. */
|
||||
native set_vaultdata(const key[], const data[] = "" );
|
||||
|
||||
/* Removes a key from vault.*/
|
||||
native remove_vaultdata(const key[]);
|
||||
|
||||
/* Checks if a key exists in the vault.*/
|
||||
native vaultdata_exists(const key[]);
|
@ -21,17 +21,19 @@
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;NVAULT_EXPORTS"
|
||||
MinimalRebuild="TRUE"
|
||||
ExceptionHandling="FALSE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
RuntimeLibrary="5"
|
||||
StructMemberAlignment="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
Detect64BitPortabilityProblems="FALSE"
|
||||
DebugInformationFormat="4"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
OutputFile="$(OutDir)/nvault.dll"
|
||||
OutputFile="$(OutDir)/nvault_amxx.dll"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/nvault.pdb"
|
||||
@ -115,6 +117,18 @@
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
||||
<File
|
||||
RelativePath=".\amxxapi.cpp">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ExceptionHandling="FALSE"
|
||||
RuntimeLibrary="5"
|
||||
StructMemberAlignment="3"
|
||||
Detect64BitPortabilityProblems="FALSE"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\hash.cpp">
|
||||
<FileConfiguration
|
||||
@ -141,6 +155,9 @@
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
||||
<File
|
||||
RelativePath=".\amxxapi.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\hash.h">
|
||||
</File>
|
||||
|
@ -27,7 +27,7 @@
|
||||
//#define FN_AMXX_QUERY OnAmxxQuery
|
||||
// AMXX attach
|
||||
// Do native functions init here (MF_AddNatives)
|
||||
// #define FN_AMXX_ATTACH OnAmxxAttach
|
||||
#define FN_AMXX_ATTACH OnAmxxAttach
|
||||
// AMXX detach
|
||||
//#define FN_AMXX_DETACH OnAmxxDetach
|
||||
// All plugins loaded
|
||||
|
Loading…
Reference in New Issue
Block a user