lua

A copy of the Lua development repository
Log | Files | Refs | README

commit c31aa863ac29fad5bb3f44c4e08640f877b65f25
parent ff08b0f4069e322ec4c2b02aa5553424227357ba
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date:   Tue, 16 Sep 1997 16:25:38 -0300

Auxiliar functions for building Lua libraries

Diffstat:
Dauxlib.c | 81-------------------------------------------------------------------------------
Dauxlib.h | 30------------------------------
Alauxlib.c | 76++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alauxlib.h | 29+++++++++++++++++++++++++++++
4 files changed, 105 insertions(+), 111 deletions(-)

diff --git a/auxlib.c b/auxlib.c @@ -1,81 +0,0 @@ -char *rcs_auxlib="$Id: auxlib.c,v 1.4 1997/04/07 14:48:53 roberto Exp roberto $"; - -#include <stdio.h> -#include <stdarg.h> -#include <string.h> - -#include "lua.h" -#include "auxlib.h" -#include "luadebug.h" - - - -int luaI_findstring (char *name, char *list[]) -{ - int i; - for (i=0; list[i]; i++) - if (strcmp(list[i], name) == 0) - return i; - return -1; /* name not found */ -} - - -void luaL_arg_check(int cond, int numarg, char *extramsg) -{ - if (!cond) { - char *funcname; - lua_getobjname(lua_stackedfunction(0), &funcname); - if (funcname == NULL) - funcname = "???"; - if (extramsg == NULL) - luaL_verror("bad argument #%d to function `%s'", numarg, funcname); - else - luaL_verror("bad argument #%d to function `%s' (%s)", - numarg, funcname, extramsg); - } -} - -char *luaL_check_string (int numArg) -{ - lua_Object o = lua_getparam(numArg); - luaL_arg_check(lua_isstring(o), numArg, "string expected"); - return lua_getstring(o); -} - -char *luaL_opt_string (int numArg, char *def) -{ - return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : - luaL_check_string(numArg); -} - -double luaL_check_number (int numArg) -{ - lua_Object o = lua_getparam(numArg); - luaL_arg_check(lua_isnumber(o), numArg, "number expected"); - return lua_getnumber(o); -} - - -double luaL_opt_number (int numArg, double def) -{ - return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : - luaL_check_number(numArg); -} - -void luaL_openlib (struct luaL_reg *l, int n) -{ - int i; - for (i=0; i<n; i++) - lua_register(l[i].name, l[i].func); -} - - -void luaL_verror (char *fmt, ...) -{ - char buff[1000]; - va_list argp; - va_start(argp, fmt); - vsprintf(buff, fmt, argp); - va_end(argp); - lua_error(buff); -} diff --git a/auxlib.h b/auxlib.h @@ -1,30 +0,0 @@ -/* -** $Id: auxlib.h,v 1.2 1997/04/06 14:08:08 roberto Exp roberto $ -*/ - -#ifndef auxlib_h -#define auxlib_h - -#include "lua.h" - -struct luaL_reg { - char *name; - lua_CFunction func; -}; - -void luaL_openlib (struct luaL_reg *l, int n); -void luaL_arg_check(int cond, int numarg, char *extramsg); -char *luaL_check_string (int numArg); -char *luaL_opt_string (int numArg, char *def); -double luaL_check_number (int numArg); -double luaL_opt_number (int numArg, double def); -void luaL_verror (char *fmt, ...); - - - -/* -- private part (only for Lua modules */ - -int luaI_findstring (char *name, char *list[]); - - -#endif diff --git a/lauxlib.c b/lauxlib.c @@ -0,0 +1,76 @@ +/* +** $Id: $ +** Auxiliar functions for building Lua libraries +** See Copyright Notice in lua.h +*/ + + +#include <stdarg.h> +#include <stdio.h> +#include <string.h> + +#include "lauxlib.h" +#include "lua.h" +#include "luadebug.h" + + + +void luaL_arg_check(int cond, int numarg, char *extramsg) +{ + if (!cond) { + char *funcname; + lua_getobjname(lua_stackedfunction(0), &funcname); + if (funcname == NULL) + funcname = "???"; + if (extramsg == NULL) + luaL_verror("bad argument #%d to function `%.50s'", numarg, funcname); + else + luaL_verror("bad argument #%d to function `%.50s' (%.100s)", + numarg, funcname, extramsg); + } +} + +char *luaL_check_string (int numArg) +{ + lua_Object o = lua_getparam(numArg); + luaL_arg_check(lua_isstring(o), numArg, "string expected"); + return lua_getstring(o); +} + +char *luaL_opt_string (int numArg, char *def) +{ + return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : + luaL_check_string(numArg); +} + +double luaL_check_number (int numArg) +{ + lua_Object o = lua_getparam(numArg); + luaL_arg_check(lua_isnumber(o), numArg, "number expected"); + return lua_getnumber(o); +} + + +double luaL_opt_number (int numArg, double def) +{ + return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : + luaL_check_number(numArg); +} + +void luaL_openlib (struct luaL_reg *l, int n) +{ + int i; + for (i=0; i<n; i++) + lua_register(l[i].name, l[i].func); +} + + +void luaL_verror (char *fmt, ...) +{ + char buff[500]; + va_list argp; + va_start(argp, fmt); + vsprintf(buff, fmt, argp); + va_end(argp); + lua_error(buff); +} diff --git a/lauxlib.h b/lauxlib.h @@ -0,0 +1,29 @@ +/* +** $Id: $ +** Auxiliar functions for building Lua libraries +** See Copyright Notice in lua.h +*/ + + +#ifndef auxlib_h +#define auxlib_h + + +#include "lua.h" + + +struct luaL_reg { + char *name; + lua_CFunction func; +}; + +void luaL_openlib (struct luaL_reg *l, int n); +void luaL_arg_check(int cond, int numarg, char *extramsg); +char *luaL_check_string (int numArg); +char *luaL_opt_string (int numArg, char *def); +double luaL_check_number (int numArg); +double luaL_opt_number (int numArg, double def); +void luaL_verror (char *fmt, ...); + + +#endif