-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathhat.c_marios.txt
166 lines (142 loc) · 14.5 KB
/
hat.c_marios.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
//Game Maker SQLite DLL
//Copyright (c) 2008 IsmAvatar <[email protected]>
//Feel free to modify and/or redistribute, as your copy is *your* property, and not mine!
#define export __declspec (dllexport)
#define MAX 5
#define NULL 0
#define get(o) s ## o[(int) (o - 1)]
#include "sqlite3.h"
//Make SQLite object
//gcc -O2 -lpthread -m32 -c -Wno-deprecated-declarations sqlite3.c
//gcc -O2 -lpthread -c -Wno-deprecated-declarations sqlite3.c
//Build DLL
//gcc -O2 -lpthread -m32 -c -DBUILD_DLL hat.c
//gcc -O2 -lpthread -m32 -shared -o hat.dll hat.o sqlite3.o
//Build EXE
//gcc -O2 -lpthread -m32 -o hat.exe hat.c sqlite3.o
//Reduce size:
//strip --strip-all hat.dll
//strip --strip-all hat.exe
//Build .so on Linux/Android (???)
//gcc -O2 -lpthread -m32 -c -Wno-deprecated-declarations -fPIC sqlite3.c -o sqlite3.o
//gcc -O2 -lpthread -m32 -c -fPIC hat.c -o hat.o
//gcc -O2 -lpthread -m32 -o libhello.so hat.o sqlite3.o
sqlite3 *sdb[MAX];
sqlite3_stmt *sqry[MAX];
export double sopen(char *fn) {
int i;
for (i = 0; i < MAX; i++)
if (sdb[i] == NULL)
break;
if (i == MAX) return 0.0;
int r = sqlite3_open(fn,&sdb[i]);
if (r) {
sqlite3_close(sdb[i]);
return (double) -r;
}
return (double) (i + 1);
}
export double sclose(double db) {
double d = (double) -sqlite3_close(get(db));
get(db) = NULL;
return d;
}
export double serrcode(double db) {
return (double) sqlite3_errcode(get(db));
}
export const char *serrmsg(double db) {
return sqlite3_errmsg(get(db));
}
export double squery(double db, char *sql) {
int j;
for (j = 0; j < MAX; j++)
if (sqry[j] == NULL)
break;
if (j == MAX) return 0.0;
int r = sqlite3_prepare_v2(get(db),sql,-1,&sqry[j],NULL);
if (r) {
sqlite3_finalize(sqry[j]);
return (double) -r;
}
return (double) (j + 1);
}
export double sfree(double qry) {
sqlite3_finalize(get(qry));
get(qry) = NULL;
return 0.0;
}
export double sstep(double qry) {
int i = sqlite3_step(get(qry));
if (i == 100) return 1.0;
if (i == 101) return 0.0;
return (double) -i;
}
export double sreset(double qry) {
return (double) -sqlite3_reset(get(qry));
}
export double sdouble(double qry, double col) {
return sqlite3_column_double(get(qry),(int)col);
}
export const char *stext(double qry, double col) {
return sqlite3_column_text(get(qry),(int)col);
}
export double schanges(double db) {
return (double) sqlite3_changes(get(db));
}
export double slastid(double db) {
return (double) sqlite3_last_insert_rowid(get(db));
}
#if 0
int main() {return 0;}
#else
void eqry(double db, char *sql) {
//printf("> %s\n",sql);
double q = squery(db,sql);
if (q < 0) {
printf("Error %.f: %s\n",-q,serrmsg(db));
return;
}
double r = sstep(q);
if (r < 0) printf("Error %.f: %s\n",-r,serrmsg(db));
//else printf("Done. %.f rows affected.\n",schanges(db));
sfree(q);
}
int main() {
double d = sopen("db.db");
if (d < 0) {
printf("Cannot open database. Error %.f\n",d);
return 0;
}
printf("Opened database %.f\n",d);
eqry(d,"DROP TABLE IF EXISTS t1");
eqry(d,"CREATE TABLE t1 (a INTEGER PRIMARY KEY, b INTEGER)");
eqry(d,"INSERT INTO t1 VALUES (1,123)");
eqry(d,"INSERT INTO t1 VALUES (2,50)");
int mycounter;
//for (mycounter = 0; mycounter < 1000; mycounter++){
for (mycounter = 0; mycounter < 1; mycounter++){
eqry(d,"INSERT INTO t1 VALUES (NULL, 123)");
//eqry(d,"INSERT INTO 't1' ('a', 'b') VALUES (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75),(NULL,75), (NULL,75), (NULL,75), (NULL,75);");
//gcc -m32 -c -Wno-deprecated-declarations sqlite3.c & gcc -m32 -c -DBUILD_DLL hat.c & gcc -m32 -Wno-deprecated-declarations -o hat.exe hat.c sqlite3.o
//gcc -m32 -c -DBUILD_DLL hat.c & gcc -m32 -Wno-deprecated-declarations -o hat.exe hat.c sqlite3.o
}
printf("Last id: %.f\n",slastid(d)); //3
printf("> SELECT * FROM t1 ORDER BY b\n");
double q = squery(d,"SELECT * FROM t1 ORDER BY b");
if (q < 0) {
printf("Error %.f: %s\n",-q,serrmsg(d));
sclose(d);
return 0;
}
int c = 0;
double r;
while ((r = sstep(q)) != 0.0) {
printf("%.f %.f\n",sdouble(q,0),sdouble(q,1));
c++;
}
printf("Done. %d rows fetched.\nAll queries finished. Terminating\n",c);
sfree(q);
sclose(d);
return 0;
}
#endif