summaryrefslogtreecommitdiff
path: root/server/src/luaformatmapperutils.cc
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/luaformatmapperutils.cc')
-rw-r--r--server/src/luaformatmapperutils.cc230
1 files changed, 0 insertions, 230 deletions
diff --git a/server/src/luaformatmapperutils.cc b/server/src/luaformatmapperutils.cc
deleted file mode 100644
index b163477..0000000
--- a/server/src/luaformatmapperutils.cc
+++ /dev/null
@@ -1,230 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * luaformatmapperutils.cc
- *
- * Mon Nov 3 08:46:51 CET 2008
- * Copyright 2008 Bent Bisballe Nyeng
- * deva@aasimon.org
- ****************************************************************************/
-
-/*
- * This file is part of Pracro.
- *
- * Pracro is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * Pracro is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Pracro; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-#include "luaformatmapperutils.h"
-#include "luaformatmapper.h"
-#include "mltokenizer.h"
-
-#include <string>
-#include <vector>
-
-std::vector< void * > pointers;
-
-#define GLOBAL_PREFIX "magic_global_"
-
-void *getGlobal(lua_State *L, const char *name)
-{
- unsigned int top;
- unsigned int index;
-
- std::string var = std::string(GLOBAL_PREFIX) + name;
-
- lua_getfield(L, LUA_GLOBALSINDEX, var.c_str());
- top = lua_gettop(L);
- index = lua_tointeger(L, top);
-
- return pointers.at(index);
-}
-
-void setGlobal(lua_State *L, const char *name, void *p)
-{
- // Put the value of this in the globals
- char value_of_this[256];
-
- std::string val = std::string(GLOBAL_PREFIX) + name;
-
- pointers.push_back(p);
- unsigned int index = pointers.size() - 1;
-
- sprintf(value_of_this, "%s = %u\n", val.c_str(), index);
- int s = luaL_loadstring(L, value_of_this);
- switch(s) {
- case 0: //no errors;
- break;
- case LUA_ERRSYNTAX: //syntax error during pre-compilation;
- case LUA_ERRMEM: //memory allocation error.
- fprintf(stderr, "Error: %s\n", lua_tostring(L, lua_gettop(L)));
- default:
- fprintf(stderr, "Unknown return value of luaL_loadstring.\n");
- }
-
- // Run program (init)
- s = lua_pcall(L, 0, LUA_MULTRET, 0);
- // Check for errors
- switch(s) {
- case 0: // Success
- break;
- case LUA_ERRRUN:// a runtime error.
- case LUA_ERRMEM:// memory allocation error.
- // For such errors, Lua does not call the error handler function.
- case LUA_ERRERR:// error while running the error handler function.
- fprintf(stderr, "Error: %s\n", lua_tostring(L, lua_gettop(L)));
- break;
- default:
- fprintf(stderr, "Error: Unknown return value of lua_pcall.\n");
- break;
- }
-}
-
-typedef struct {
- std::string prefix;
- std::string postfix;
-} transform_params_t;
-
-std::map< std::string, transform_params_t > transforms;
-
-/**
- * Args: mlvalue, bullet, usetext, name1, prefix1, postfix1, name2, prefix2, postfix2, ...
- * Iterates list items, prepends bullet, and replaces all name/value pairs with
- * corresponding prefix/value/postfix.
- */
-int printfmlval(lua_State *L)
-{
- int n = lua_gettop(L); // number of arguments
- if(n < 3 || (n - 3) % 3 != 0) {
- char errstr[512];
- sprintf(errstr, "Minimum number of args expected 3, got %d", n);
- fprintf(stderr, errstr);
- lua_pushstring(L, errstr);
- lua_error(L);
- return 0;
- }
-
- std::string mlvalue = lua_tostring(L, lua_gettop(L) - (n - 1));
- std::string bullet = lua_tostring(L, lua_gettop(L) - (n - 2));
- bool usetext = lua_toboolean(L, lua_gettop(L) - (n - 3));
-
- // printf("[%s], [%s], [%d]\n", mlvalue.c_str(), bullet.c_str(), usetext); fflush(stdout);
-
- // Read in the (prefix, name, postfix) 3-tuples
- int m = 4;
- while(m < lua_gettop(L)) {
-
- transform_params_t p;
- p.prefix = lua_tostring(L, lua_gettop(L) - (n - m));
- std::string name = lua_tostring(L, lua_gettop(L) - (n - (m + 1)));
- p.postfix = lua_tostring(L, lua_gettop(L) - (n - (m + 2)));
-
- // printf("[%s], [%s], [%s]\n", p.prefix.c_str(), name.c_str(), p.postfix.c_str()); fflush(stdout);
-
- transforms[name] = p;
-
- m += 3;
- }
-
- LUAFormatMapper *lfm = (LUAFormatMapper*)getGlobal(L, "LUAFormatMapper");
-
- mltokentype_t lasttype = MLTT_ENDOFITEM;
- std::vector< mltoken_t > tokens = mltokenize(mlvalue);
- std::vector< mltoken_t >::iterator i = tokens.begin();
- while(i != tokens.end()) {
- if(lasttype == MLTT_ENDOFITEM) lfm->bufferoutput(bullet);
-
- switch(i->type) {
- case MLTT_VALUE:
- lfm->bufferoutput(transforms[i->name].prefix);
- lfm->bufferoutput(i->value);
- lfm->bufferoutput(transforms[i->name].postfix);
- break;
-
- case MLTT_TEXT:
- if(usetext) lfm->bufferoutput(i->value);
- break;
-
- case MLTT_ENDOFITEM:
- if(usetext) lfm->bufferoutput(i->value);
- break;
-
- case MLTT_UNDEFINED:
- // Undefined
- break;
- }
-
- lasttype = i->type;
- i++;
- }
-
- return 0;
-}
-
-
-int printval(lua_State *L)
-{
- int n = lua_gettop(L); // number of arguments
- if(n != 1) {
- char errstr[512];
- sprintf(errstr, "Number of args expected 1, got %d", n);
- fprintf(stderr, errstr);
- lua_pushstring(L, errstr);
- lua_error(L);
- return 0;
- }
-
- std::string value = lua_tostring(L, lua_gettop(L));
-
- LUAFormatMapper *lfm = (LUAFormatMapper*)getGlobal(L, "LUAFormatMapper");
-
- lfm->bufferoutput(value);
-
- return 0;
-}
-
-/*
-int pg_query(lua_State *L)
-{
- int n = lua_gettop(L); // number of arguments
- if(n != 2) {
- char errstr[512];
- sprintf(errstr, "Number of args expected 2, got %d", n);
- fprintf(stderr, errstr);
- lua_pushstring(L, errstr);
- lua_error(L);
- return 0;
- }
-
- std::string query = lua_tostring(L, lua_gettop(L));
- unsigned int pg = lua_tointeger(L, lua_gettop(L) - 1);
-
- printf("query [%s]\n", query.c_str());
-
- // lua_createtable(L, 0, 1);
- // lua_pushinteger(L, 41);
- // lua_rawseti(L, -2, 1);
- // lua_setfenv(L, -2);
-
- lua_pushinteger(L, 42);
- lua_pushinteger(L, 41);
- lua_rawset(L, -3);
-
- return 1;
-}
-*/
-
-void preload_formatutils(lua_State *L)
-{
- lua_register(L, "printval", printval);
- lua_register(L, "printfmlval", printfmlval);
-}