Files
CoolProp/wrappers/Lua/coolprop/capi.c
Hisham Muhammad 592c65b506 Fix and cleanup APIs between Lua and C.
Fix Lua layer of get_param_index and get_fluid_param_string.
Make returns of C module more idiomatic.
Use module name as the local variable for the C module.
2015-02-11 23:21:15 -02:00

201 lines
5.0 KiB
C

#include <stddef.h>
#include <stdlib.h>
#include <lua.h>
#include <lauxlib.h>
#include "../../../include/CoolPropLib.h"
#include "compat.h"
static int lua_coolprop_Props1SI(lua_State *L) {
lua_pushnumber(L, Props1SI(
luaL_checkstring(L, 1),
luaL_checkstring(L, 2)
));
return 1;
}
static int lua_coolprop_PropsSI(lua_State *L) {
lua_pushnumber(L, PropsSI(
luaL_checkstring(L, 1),
luaL_checkstring(L, 2),
luaL_checknumber(L, 3),
luaL_checkstring(L, 4),
luaL_checknumber(L, 5),
luaL_checkstring(L, 6)
));
return 1;
}
static int lua_coolprop_PhaseSI(lua_State *L) {
char phase[256];
int ok = PhaseSI(
luaL_checkstring(L, 1),
luaL_checknumber(L, 2),
luaL_checkstring(L, 3),
luaL_checknumber(L, 4),
luaL_checkstring(L, 5),
phase,
sizeof(phase)
);
if (ok == 1) {
lua_pushstring(L, phase);
return 1;
} else {
return 0;
}
}
static int lua_coolprop_get_global_param_string(lua_State *L) {
char output[4096];
int ok = get_global_param_string(
luaL_checkstring(L, 1),
output,
sizeof(output)
);
if (ok == 1) {
lua_pushstring(L, output);
return 1;
}
return 0;
}
static int lua_coolprop_get_parameter_information_string(lua_State *L) {
char output[4096];
int ok = get_parameter_information_string(
luaL_checkstring(L, 1),
output,
sizeof(output)
);
if (ok == 1) {
lua_pushstring(L, output);
return 1;
}
return 0;
}
/*
static int lua_coolprop_get_mixture_binary_pair_data(lua_State *L) {
lua_pushinteger(L, get_mixture_binary_pair_data(
luaL_checkstring(L, 1),
luaL_checkstring(L, 2),
luaL_checkstring(L, 3)
));
return 1;
}
*/
static int lua_coolprop_get_fluid_param_string(lua_State *L) {
char output[4096];
int ok = get_fluid_param_string(
luaL_checkstring(L, 1),
luaL_checkstring(L, 2),
output,
sizeof(output)
);
if (ok == 1) {
lua_pushstring(L, output);
return 1;
}
return 0;
}
static int lua_coolprop_set_reference_stateS(lua_State *L) {
lua_pushboolean(L, set_reference_stateS(
luaL_checkstring(L, 1),
luaL_checkstring(L, 2)
));
return 1;
}
static int lua_coolprop_set_reference_stateD(lua_State *L) {
lua_pushboolean(L, set_reference_stateD(
luaL_checkstring(L, 1),
luaL_checknumber(L, 2),
luaL_checknumber(L, 3),
luaL_checknumber(L, 4),
luaL_checknumber(L, 5)
));
return 1;
}
static int lua_coolprop_F2K(lua_State *L) {
lua_pushnumber(L, F2K(luaL_checknumber(L, 1)));
return 1;
}
static int lua_coolprop_K2F(lua_State *L) {
lua_pushnumber(L, K2F(luaL_checknumber(L, 1)));
return 1;
}
static int lua_coolprop_get_param_index(lua_State *L) {
lua_pushnumber(L, get_param_index(luaL_checkstring(L, 1)));
return 1;
}
static int lua_coolprop_redirect_stdout(lua_State *L) {
lua_pushboolean(L, redirect_stdout(
luaL_checkstring(L, 1)
));
return 1;
}
static int lua_coolprop_get_debug_level(lua_State *L) {
lua_pushinteger(L, get_debug_level());
return 1;
}
static int lua_coolprop_set_debug_level(lua_State *L) {
set_debug_level(luaL_checknumber(L, 1));
return 0;
}
static int lua_coolprop_saturation_ancillary(lua_State *L) {
lua_pushnumber(L, saturation_ancillary(
luaL_checkstring(L, 1),
luaL_checkstring(L, 2),
luaL_checkinteger(L, 3),
luaL_checkstring(L, 4),
luaL_checknumber(L, 5)
));
return 1;
}
static int lua_coolprop_HAPropsSI(lua_State *L) {
lua_pushnumber(L, HAPropsSI(
luaL_checkstring(L, 1),
luaL_checkstring(L, 2),
luaL_checknumber(L, 3),
luaL_checkstring(L, 4),
luaL_checknumber(L, 5),
luaL_checkstring(L, 6),
luaL_checknumber(L, 7)
));
return 1;
}
static struct luaL_Reg funcs[] = {
{"Props1SI", lua_coolprop_Props1SI},
{"PropsSI", lua_coolprop_PropsSI},
{"PhaseSI", lua_coolprop_PhaseSI},
{"get_global_param_string", lua_coolprop_get_global_param_string},
{"get_parameter_information_string", lua_coolprop_get_parameter_information_string},
//{"get_mixture_binary_pair_data", lua_coolprop_get_mixture_binary_pair_data},
{"get_fluid_param_string", lua_coolprop_get_fluid_param_string},
{"set_reference_stateS", lua_coolprop_set_reference_stateS},
{"set_reference_stateD", lua_coolprop_set_reference_stateD},
{"F2K", lua_coolprop_F2K},
{"K2F", lua_coolprop_K2F},
{"get_param_index", lua_coolprop_get_param_index},
{"redirect_stdout", lua_coolprop_redirect_stdout},
{"get_debug_level", lua_coolprop_get_debug_level},
{"set_debug_level", lua_coolprop_set_debug_level},
{"saturation_ancillary", lua_coolprop_saturation_ancillary},
{"HAPropsSI", lua_coolprop_HAPropsSI},
{NULL, NULL}
};
int luaopen_coolprop_capi(lua_State *L) {
luaL_newlib(L, funcs);
return 1;
}