dbd/common.h

Wed, 26 Nov 2008 10:43:45 +0000

author
nrich@ii.net
date
Wed, 26 Nov 2008 10:43:45 +0000
changeset 4
c50b0e6f25d6
parent 2
c4f02fc67e5a
child 10
3aa8a37a3dd8
permissions
-rw-r--r--

Clean up error messages for consistency.

1
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
1 #include <string.h>
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
2 #include <stdio.h>
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
3 #include <stdlib.h>
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
4
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
5 #include <lua.h>
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
6 #include <lauxlib.h>
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
7 #include <lualib.h>
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
8
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
9 #if !defined(LUA_VERSION_NUM) || (LUA_VERSION_NUM < 501)
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
10 #include <compat-5.1.h>
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
11 #endif
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
12
2
c4f02fc67e5a Cleanup and commenting
nrich@ii.net
parents: 1
diff changeset
13 /*
c4f02fc67e5a Cleanup and commenting
nrich@ii.net
parents: 1
diff changeset
14 *
c4f02fc67e5a Cleanup and commenting
nrich@ii.net
parents: 1
diff changeset
15 * Table construction helper functions
c4f02fc67e5a Cleanup and commenting
nrich@ii.net
parents: 1
diff changeset
16 *
c4f02fc67e5a Cleanup and commenting
nrich@ii.net
parents: 1
diff changeset
17 * LUA_PUSH_ATTRIB_* creates string indexed (hashmap)
c4f02fc67e5a Cleanup and commenting
nrich@ii.net
parents: 1
diff changeset
18 * LUA_PUSH_ATTRIB_* creates integer indexed (array)
c4f02fc67e5a Cleanup and commenting
nrich@ii.net
parents: 1
diff changeset
19 *
c4f02fc67e5a Cleanup and commenting
nrich@ii.net
parents: 1
diff changeset
20 */
1
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
21
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
22 #define LUA_PUSH_ATTRIB_INT(n, v) \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
23 lua_pushstring(L, n); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
24 lua_pushinteger(L, v); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
25 lua_rawset(L, -3);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
26
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
27 #define LUA_PUSH_ATTRIB_FLOAT(n, v) \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
28 lua_pushstring(L, n); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
29 lua_pushnumber(L, v); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
30 lua_rawset(L, -3);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
31
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
32 #define LUA_PUSH_ATTRIB_STRING(n, v) \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
33 lua_pushstring(L, n); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
34 lua_pushstring(L, v); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
35 lua_rawset(L, -3);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
36
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
37 #define LUA_PUSH_ATTRIB_BOOL(n, v) \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
38 lua_pushstring(L, n); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
39 lua_pushboolean(L, v); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
40 lua_rawset(L, -3);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
41
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
42 #define LUA_PUSH_ATTRIB_NIL(n) \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
43 lua_pushstring(L, n); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
44 lua_pushnil(L); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
45 lua_rawset(L, -3);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
46
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
47
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
48
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
49 #define LUA_PUSH_ARRAY_INT(n, v) \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
50 lua_pushinteger(L, v); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
51 lua_rawseti(L, -2, n); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
52 n++;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
53
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
54 #define LUA_PUSH_ARRAY_FLOAT(n, v) \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
55 lua_pushnumber(L, v); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
56 lua_rawseti(L, -2, n); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
57 n++;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
58
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
59 #define LUA_PUSH_ARRAY_STRING(n, v) \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
60 lua_pushstring(L, v); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
61 lua_rawseti(L, -2, n); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
62 n++;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
63
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
64 #define LUA_PUSH_ARRAY_BOOL(n, v) \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
65 lua_pushboolean(L, v); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
66 lua_rawseti(L, -2, n); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
67 n++;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
68
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
69 #define LUA_PUSH_ARRAY_NIL(n) \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
70 lua_pushnil(L); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
71 lua_rawseti(L, -2, n); \
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
72 n++;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
73
2
c4f02fc67e5a Cleanup and commenting
nrich@ii.net
parents: 1
diff changeset
74 /*
c4f02fc67e5a Cleanup and commenting
nrich@ii.net
parents: 1
diff changeset
75 *
4
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
76 * Describes SQL to Lua API type conversions
2
c4f02fc67e5a Cleanup and commenting
nrich@ii.net
parents: 1
diff changeset
77 *
c4f02fc67e5a Cleanup and commenting
nrich@ii.net
parents: 1
diff changeset
78 */
1
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
79
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
80 typedef enum lua_push_type {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
81 LUA_PUSH_NIL = 0,
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
82 LUA_PUSH_INTEGER,
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
83 LUA_PUSH_NUMBER,
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
84 LUA_PUSH_STRING,
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
85 LUA_PUSH_BOOLEAN,
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
86
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
87 LUA_PUSH_MAX
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
88 } lua_push_type_t;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
89
4
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
90 /*
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
91 *
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
92 * Common error strings
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
93 * defined here for consistency in driver implementations
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
94 *
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
95 */
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
96
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
97 #define DBI_ERR_CONNECTION_FAILED "Failed to connect to database: %s"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
98 #define DBI_ERR_DB_UNAVAILABLE "Database not available"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
99 #define DBI_ERR_EXECUTE_INVALID "Execute called on a closed or invalid statement"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
100 #define DBI_ERR_EXECUTE_FAILED "Execute failed %s"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
101 #define DBI_ERR_FETCH_INVALID "Fetch called on a closed or invalid statement"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
102 #define DBI_ERR_FETCH_FAILED "Fetch failed %s"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
103 #define DBI_ERR_PARAM_MISCOUNT "Statement expected %d parameters but received %d"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
104 #define DBI_ERR_BINDING_UNKNOWN "Binding unknown or unsupported type"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
105 #define DBI_ERR_BINDING_PARAMS "Error binding statement parameters: %s"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
106 #define DBI_ERR_BINDING_EXEC "Error executing statement parameters: %s"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
107 #define DBI_ERR_FETCH_NO_EXECUTE "Fetch called before execute"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
108 #define DBI_ERR_BINDING_RESULTS "Error binding statement results: %s"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
109 #define DBI_ERR_UNKNOWN_PUSH "Unknown push type in result set"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
110 #define DBI_ERR_ALLOC_STATEMENT "Error allocating statement handle: %s"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
111 #define DBI_ERR_PREP_STATEMENT "Error preparing statement handle: %s"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
112 #define DBI_ERR_INVALID_PORT "Invalid port: %d"
c50b0e6f25d6 Clean up error messages for consistency.
nrich@ii.net
parents: 2
diff changeset
113 #define DBI_ERR_ALLOC_RESULT "Error allocating result set: %s"

mercurial