src/nexus_lua.h
author Tero Marttila <terom@fixme.fi>
Thu, 02 Apr 2009 03:19:44 +0300
changeset 116 92e71129074d
parent 106 f00661136ac2
child 136 81dbeb5bc38e
permissions -rw-r--r--
split off lua_irc from lua_objs
105
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
#ifndef NEXUS_LUA_H
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
#define NEXUS_LUA_H
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
/**
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
 * @file
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
 *
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
 * Defines the lua environment for use with nexus
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
 */
116
92e71129074d split off lua_irc from lua_objs
Tero Marttila <terom@fixme.fi>
parents: 106
diff changeset
     9
struct nexus_lua;
92e71129074d split off lua_irc from lua_objs
Tero Marttila <terom@fixme.fi>
parents: 106
diff changeset
    10
105
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
#include "nexus.h"
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
#include <lua5.1/lua.h>
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
/**
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
 * The global lua state
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
 */
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
struct nexus_lua {
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
    /** The nexus we are operating on */
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
    struct nexus *nexus;
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
    /** The lua state */
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
    lua_State *st;
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
};
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
/**
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
 * Create a new lua state for nexus
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
 */
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
err_t nexus_lua_create (struct nexus_lua **lua_ptr, struct nexus *nexus, struct error_info *err);
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
/**
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
 * Destroy the lua state
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
 */
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
void nexus_lua_destroy (struct nexus_lua *lua);
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
106
f00661136ac2 add nexus_lua_error for unified LUA_ERR* -> ERR_LUA_* mapping, and lua configuration support
Tero Marttila <terom@fixme.fi>
parents: 105
diff changeset
    36
/**
f00661136ac2 add nexus_lua_error for unified LUA_ERR* -> ERR_LUA_* mapping, and lua configuration support
Tero Marttila <terom@fixme.fi>
parents: 105
diff changeset
    37
 * Handle a Lua error by converting the given error code into a ERR_LUA_* code, inspecting the error object at
f00661136ac2 add nexus_lua_error for unified LUA_ERR* -> ERR_LUA_* mapping, and lua configuration support
Tero Marttila <terom@fixme.fi>
parents: 105
diff changeset
    38
 * the top of the stack.
f00661136ac2 add nexus_lua_error for unified LUA_ERR* -> ERR_LUA_* mapping, and lua configuration support
Tero Marttila <terom@fixme.fi>
parents: 105
diff changeset
    39
 *
f00661136ac2 add nexus_lua_error for unified LUA_ERR* -> ERR_LUA_* mapping, and lua configuration support
Tero Marttila <terom@fixme.fi>
parents: 105
diff changeset
    40
 * Please note that the resulting error_info points into strings inside the lua stack - once you pop the error, the
f00661136ac2 add nexus_lua_error for unified LUA_ERR* -> ERR_LUA_* mapping, and lua configuration support
Tero Marttila <terom@fixme.fi>
parents: 105
diff changeset
    41
 * error_info might not be valid anymore.
f00661136ac2 add nexus_lua_error for unified LUA_ERR* -> ERR_LUA_* mapping, and lua configuration support
Tero Marttila <terom@fixme.fi>
parents: 105
diff changeset
    42
 */
f00661136ac2 add nexus_lua_error for unified LUA_ERR* -> ERR_LUA_* mapping, and lua configuration support
Tero Marttila <terom@fixme.fi>
parents: 105
diff changeset
    43
err_t nexus_lua_error (lua_State *L, int ret, struct error_info *err);
f00661136ac2 add nexus_lua_error for unified LUA_ERR* -> ERR_LUA_* mapping, and lua configuration support
Tero Marttila <terom@fixme.fi>
parents: 105
diff changeset
    44
105
b6b183fbf373 implement a separate nexus_lua module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
#endif /* NEXUS_LUA_H */