mirror of
https://github.com/alliedmodders/sourcemod.git
synced 2025-12-08 19:08:35 +00:00
Push KeyValues.Export() method
This commit is contained in:
parent
855ece1d3b
commit
6f188fd54e
@ -751,6 +751,36 @@ static cell_t smn_KvGetDataType(IPluginContext *pCtx, const cell_t *params)
|
||||
return pStk->pCurRoot.front()->GetDataType(name);
|
||||
}
|
||||
|
||||
staitc cell_t smn_KeyValuesExport(IPluginContext *pCtx, const cell_t *params)
|
||||
{
|
||||
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||
HandleError herr;
|
||||
HandleSecurity sec;
|
||||
KeyValueStack *pStk;
|
||||
char *name;
|
||||
|
||||
sec.pOwner = NULL;
|
||||
sec.pIdentity = g_pCoreIdent;
|
||||
|
||||
if ((herr=handlesys->ReadHandle(hndl, g_KeyValueType, &sec, (void **)&pStk))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pCtx->ThrowNativeError("Invalid key value handle %x (error %d)", hndl, herr);
|
||||
}
|
||||
pCtx->LocalToString(params[2], &name);
|
||||
|
||||
KeyValues *pNewKV = new KeyValues(name[0] == '\0' ? NULL : name);
|
||||
|
||||
*pNewKV = *pStk->pCurRoot; // KeyValues::operator= to recursive copy.
|
||||
|
||||
KeyValueStack *pExportStk = new KeyValueStack;
|
||||
|
||||
pExportStk->pBase = pNewKV;
|
||||
pExportStk->pCurRoot.push(pNewKV);
|
||||
|
||||
return handlesys->CreateHandle(g_KeyValueType, pExportStk, pCtx->GetIdentity(), g_pCoreIdent, NULL);
|
||||
}
|
||||
|
||||
static cell_t smn_KeyValuesToFile(IPluginContext *pCtx, const cell_t *params)
|
||||
{
|
||||
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||
@ -1241,6 +1271,7 @@ REGISTER_NATIVES(keyvaluenatives)
|
||||
{"KeyValues.Import", KeyValues_Import},
|
||||
{"KeyValues.ImportFromFile", smn_FileToKeyValues},
|
||||
{"KeyValues.ImportFromString", smn_StringToKeyValues},
|
||||
{"KeyValues.Export", smn_KeyValuesExport},
|
||||
{"KeyValues.ExportToFile", smn_KeyValuesToFile},
|
||||
{"KeyValues.ExportToString", smn_KeyValuesToString},
|
||||
{"KeyValues.ExportLength.get", smn_KeyValuesExportLength},
|
||||
|
||||
@ -62,6 +62,14 @@ methodmap KeyValues < Handle
|
||||
// @param firstValue If firstKey is non-empty, specifies the first key's value.
|
||||
public native KeyValues(const char[] name, const char[] firstKey="", const char[] firstValue="");
|
||||
|
||||
// Exports a KeyValues tree to new descriptor. The tree is dumped from the current position.
|
||||
// The Handle must be closed.
|
||||
//
|
||||
// @param name Name of the root section where the export is placed.
|
||||
// If NULL_STIRNG, export without a root section.
|
||||
// @return A Handle to a new KeyValues structure.
|
||||
public native KeyValues Export(const char[] name = NULL_STRING);
|
||||
|
||||
// Exports a KeyValues tree to a file. The tree is dumped from the current position.
|
||||
//
|
||||
// @param file File to dump write to.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user