You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

230 lines
11 KiB
C#

2 years ago
using System;
using System.Text;
using System.Collections.Generic;
using System.Runtime.InteropServices;
namespace ocean
{
class var
{
/****************************************************
*Function: , ID
*Intput: key ID
pval
*Output: NULL
*Return: 0
******************************************************/
[DllImport(@"var.dll", EntryPoint = "setd_var", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int setstring(int key, string pval);
/****************************************************
*Function:
*Intput: key
pval
*Output: NULL
*Return: 0
******************************************************/
[DllImport(@"var.dll", EntryPoint = "set_var", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int setstring(string key, string pval);
/****************************************************
*Function:
*Intput: key
val
*Output: NULL
*Return: 0
******************************************************/
[DllImport(@"var.dll", EntryPoint = "set_int_var", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int setint(string key, int val);
/****************************************************
*Function: double
*Intput: key
val
*Output: NULL
*Return: 0
******************************************************/
[DllImport(@"var.dll", EntryPoint = "set_double_var", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int setdouble(string key, double val);
/****************************************************
*Function: ,ID
*Intput: key ID
pval
*Output: NULL
*Return: 0
******************************************************/
[DllImport(@"var.dll", EntryPoint = "getd_var", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int getstring(int key, StringBuilder pval);
/****************************************************
*Function: ,name
*Intput: key
pval
*Output: NULL
*Return: 0
******************************************************/
[DllImport(@"var.dll", EntryPoint = "get_var", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int getstring(string key, StringBuilder pval);
/****************************************************
*Function:
*Intput: key
*Output: NULL
*Return: 0
******************************************************/
[DllImport(@"var.dll", EntryPoint = "get_int_var", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int getint(string key);
/****************************************************
*Function: double
*Intput: key
*Output: NULL
*Return: 0
******************************************************/
[DllImport(@"var.dll", EntryPoint = "get_double_var", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern double getdouble(string key);
/****************************************************
*Function: =
*Intput: key
val
*Output: NULL
*Return: 0
ERR_TIMEOUT
*PS: 线
******************************************************/
[DllImport(@"var.dll", EntryPoint = "wait_int_var", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int waitint(string key, int val);
/****************************************************
*Function:
*Intput: key
*Output: NULL
*Return: 10
******************************************************/
[DllImport(@"var.dll", EntryPoint = "is_var_exist", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int exist(string key);
/****************************************************
*Function: id
*Intput: key ID
*Output: NULL
*Return: 0
******************************************************/
[DllImport(@"var.dll", EntryPoint = "delete_var", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int del(int key);
public static int create(string name, string desc, string val)
{//创建一个变量
TVar v = new TVar();
v.name = name; //名称
v.desc = desc; //描述
v.val = val; //初始值
v.bkeep = 0;
return create(ref v);
}
public static int update(int key, string name, string desc, string val)
{//修改一个变量
TVar v = new TVar();
v.id = key;
v.name = name; //名称
v.desc = desc; //描述
v.val = val; //初始值
v.bkeep = 0;
return update(v);
}
public static int update(string name, string val)
{//修改一个变量初始值及当前值
int ret = 0;
TVar v = new TVar();
v.id = get_var_id(name);
if (v.id <= 0)
{//not exist
return create(name, name, val);
}
get_info(v.id, ref v);
v.val = val;
ret = update(v);
if (ret != 0) return ret;
return setstring(v.id, val); //设置当前值
}
#region nouse
struct TVar
{//变量结构体
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string name; //变量名
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string desc; //描述
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string val; //初始值
public int id;
public int bkeep; //状态保持 1保持 0不保持 下次启动记住当前值
};
/****************************************************
*Function: id
*Intput: pvar
*Output: NULL
*Return: id0
******************************************************/
[DllImport(@"var.dll", EntryPoint = "create_var", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
private static extern int create(ref TVar pvar);
/****************************************************
*Function: id
*Intput: key ID
pvar
*Output: NULL
*Return: 0
******************************************************/
[DllImport(@"var.dll", EntryPoint = "update_var", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
private static extern int update_var(IntPtr p);
private static int update(TVar pvar)
{
IntPtr ptr;
int ret = 0;
ptr = Marshal.AllocHGlobal(Marshal.SizeOf(pvar));
Marshal.StructureToPtr(pvar, ptr, false);
ret = update_var(ptr);
Marshal.FreeHGlobal(ptr);
return ret;
}
/****************************************************
*Function: ID
*Intput: key
*Output: NULL
*Return: ID>00
******************************************************/
[DllImport(@"var.dll", EntryPoint = "get_var_id", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
private static extern int get_var_id(string name);
/****************************************************
*Function:
*Intput: key ID
pvar
*Output: NULL
*Return: id0
******************************************************/
[DllImport(@"var.dll", EntryPoint = "get_var_info", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
private static extern int get_info(int key, ref TVar pvar);
/****************************************************
*Function: ,
*Intput: pVarList
*Output: pVarList
*Return:
******************************************************/
[DllImport(@"var.dll", EntryPoint = "get_var_list", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
private static extern int get_var_list(IntPtr ptr);
#endregion
}
}