]> jfr.im git - irc/quakenet/newserv.git/blame - lua/lua.h
Reflect new organisation structure on QuakeNet
[irc/quakenet/newserv.git] / lua / lua.h
CommitLineData
2da56f0d
CP
1/* Copyright (C) Chris Porter 2005 */
2/* ALL RIGHTS RESERVED. */
3/* Don't put this into the SVN repo. */
4
5#ifndef _LUA_H
6#define _LUA_H
7
fe0f6b25
CP
8#define __USE_BSD
9
2da56f0d
CP
10#include <lua.h>
11#include <lauxlib.h>
12#include <lualib.h>
13#include <string.h>
fe0f6b25
CP
14#include <sys/times.h>
15#include <sys/time.h>
16#include <sys/resource.h>
17#include <unistd.h>
2da56f0d
CP
18
19#include "../lib/sstring.h"
20
0225bed3
CP
21#include "lualocal.h"
22
fe0f6b25
CP
23/*** defines ************************************/
24
e3448309 25#define LUA_BOTVERSION "1.71"
ebe20bb8
CP
26#define LUA_CHANFIXBOT "Z"
27#define LUA_OPERCHAN "#twilightzone"
ba436ecf
CP
28
29#ifndef LUA_PUKECHAN
380a5b17 30#define LUA_PUKECHAN "#qnet.keepout"
ba436ecf 31#endif
ebe20bb8 32
fe0f6b25 33#define LUA_PROFILE
9887536a 34
9887536a
CP
35#define LUA_DEBUGSOCKET_ADDRESS "127.0.0.1"
36#define LUA_DEBUGSOCKET_PORT 7733
37
0225bed3
CP
38#ifdef LUA_USEJIT
39#include <luajit.h>
40#define LUA_AUXVERSION " + " LUAJIT_VERSION
41#else
b7252b44 42#define LUA_AUXVERSION ""
0225bed3
CP
43#endif
44
45#define LUA_FULLVERSION "Lua engine v" LUA_BOTVERSION " (" LUA_VERSION LUA_AUXVERSION ")"
46
fe0f6b25
CP
47/*** end defines ************************************/
48
2da56f0d
CP
49typedef struct lua_list {
50 lua_State *l;
51 sstring *name;
d0d1e2a3 52 unsigned long calls;
fe0f6b25 53 struct timeval ru_utime, ru_stime;
2da56f0d
CP
54 struct lua_list *next;
55 struct lua_list *prev;
0225bed3 56 lua_localnick *nicks;
2da56f0d
CP
57} lua_list;
58
59#define LUA_STARTLOOP(l) { lua_list *ll; for(ll=lua_head;ll;ll=ll->next) { l = ll->l
60
61#define LUA_ENDLOOP() } }
62
63#define LUA_PATHLEN 1024
64
65extern lua_list *lua_head;
6269435f 66extern sstring *cpath;
2da56f0d
CP
67
68lua_State *lua_loadscript(char *file);
69void lua_unloadscript(lua_list *l);
70lua_list *lua_scriptloaded(char *name);
d0d1e2a3 71lua_list *lua_listfromstate(lua_State *l);
0225bed3 72int lua_lineok(const char *data);
2da56f0d
CP
73
74#define lua_toint(l, n) (int)lua_tonumber(l, n)
75#define lua_isint(l, n) lua_isnumber(l, n)
76#define lua_pushint(l, n) lua_pushnumber(l, n)
77
78#define lua_tolong(l, n) (long)lua_tonumber(l, n)
79#define lua_islong(l, n) lua_isnumber(l, n)
80#define lua_pushlong(l, n) lua_pushnumber(l, n)
81
fe0f6b25
CP
82extern struct rusage r_usages;
83extern struct rusage r_usagee;
84
85#define USEC_DIFFERENTIAL 1000000
86
87#ifdef LUA_PROFILE
88
89#define ACCOUNTING_START(l) { l->calls++; getrusage(RUSAGE_SELF, &r_usages);
90
91#define twrap(A2, B2, C2, D2) A2(&(B2), &(C2), &(D2))
92
93#define _SET_2TIMEDIFF(L4, S2, E2, I2) twrap(timersub, E2.I2, S2.I2, E2.I2); twrap(timeradd, L4->I2, E2.I2, L4->I2);
94#define SET_TIMEDIFF(L3, S2, E2) _SET_2TIMEDIFF(L3, S2, E2, ru_utime); _SET_2TIMEDIFF(L3, S2, E2, ru_stime);
95
96#define ACCOUNTING_STOP(l) getrusage(RUSAGE_SELF, &r_usagee); SET_TIMEDIFF(l, r_usages, r_usagee); }
97
fe0f6b25
CP
98#endif
99
9887536a
CP
100#ifdef LUA_DEBUGSOCKET
101
102void lua_debugoutput(char *p, ...);
103#define DEBUGOUT(p, ...) lua_debugoutput(p , ##__VA_ARGS__)
9887536a 104
2da56f0d
CP
105#endif
106
24da5817
CP
107#ifndef INLINE
108
109#ifdef __GNUC__
110#define INLINE __attribute((always_inline)) inline
111#endif
112
113#ifdef _MSC_VER
114#define INLINE __forceinline
115#endif
116
117#ifndef INLINE
118#define INLINE inline
119#endif
120
121#endif /* INLINE */
122
ea15be33
CP
123INLINE int lua_debugpcall(lua_State *l, char *message, int a, int b, int c);
124
9887536a 125#endif