summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJeff Armstrong <jeffrey.armstrong@approximatrix.com>2011-07-18 22:19:18 -0400
committerJeff Armstrong <jeffrey.armstrong@approximatrix.com>2011-07-18 22:19:18 -0400
commitcc7842ec950d89dcf35638a954271d2a6fad332b (patch)
tree74cb33e10ca17b3c2bec2e7325e9c68f052d97ef /lib
parent23b87723883c224c03dedd303a61a10d054292d9 (diff)
downloadgempy-cc7842ec950d89dcf35638a954271d2a6fad332b.tar.gz
gempy-cc7842ec950d89dcf35638a954271d2a6fad332b.zip
GEM library is now compiling to SLB.
Diffstat (limited to 'lib')
-rw-r--r--lib/Makefile21
-rw-r--r--lib/gem.c9
-rw-r--r--lib/ldg_Python.h15
-rw-r--r--lib/py_aes.c102
-rw-r--r--lib/py_aes.h48
5 files changed, 117 insertions, 78 deletions
diff --git a/lib/Makefile b/lib/Makefile
new file mode 100644
index 0000000..98c7c79
--- /dev/null
+++ b/lib/Makefile
@@ -0,0 +1,21 @@
+
+# GEM Makefile
+
+CC = gcc
+CFLAGS = -g -O -I/e/Python-2.7.1/Include -I/e/Python-2.7.1
+
+LIBS = -lgem -lldg
+
+OBJECTS = gem.o py_aes.o
+
+TARGET = _gem.slb
+
+%.o: %.c
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(TARGET): $(OBJECTS)
+ $(CC) -o $(TARGET) $(OBJECTS) $(LIBS)
+
+clean:
+ rm -f $(TARGET) $(OBJECTS)
+ \ No newline at end of file
diff --git a/lib/gem.c b/lib/gem.c
index 3d70fcb..015f5c7 100644
--- a/lib/gem.c
+++ b/lib/gem.c
@@ -1,18 +1,19 @@
/* Need to define an internal flag to avoid an extern */
#define LDG_INTERNAL
+
#include "ldg_Python.h"
+/* --- Python-C API Calls --- */
+//static
+
#include <gem.h>
#include <ldg.h>
#include "py_aes.h"
/* --- A GEM exception --- */
-static PyObject *GEMError;
-
-/* --- Python-C API Calls --- */
-static void *pycallbacks[PY_API_FCOUNT];
+
/* --- Python API Bookkeeping --- */
static PyMethodDef
diff --git a/lib/ldg_Python.h b/lib/ldg_Python.h
index ca16e51..e4538b4 100644
--- a/lib/ldg_Python.h
+++ b/lib/ldg_Python.h
@@ -4,23 +4,28 @@
#include <Python.h>
#include <ldg.h>
-#define PY_API_FCOUNT 11
+#define PY_API_FCOUNT 12
#ifndef LDG_INTERNAL
extern void *pycallbacks[PY_API_FCOUNT];
+extern PyObject *GEMError;
+#else
+void *pycallbacks[PY_API_FCOUNT];
+PyObject *GEMError;
#endif
#define Py_InitModule(name,methods) ldg_callback(pycallbacks[0],name,methods,NULL,NULL)
#define PyArg_ParseTuple(tpl,...) ldg_callback(pycallbacks[1],tpl,##__VA_ARGS__)
-#define Py_BuildValue(fmt,...) ldg_callback(pycallbacks[2],fmt,##__VA_ARGS__)
+#define Py_BuildValue(fmt,...) ((PyObject *)ldg_callback(pycallbacks[2],fmt,##__VA_ARGS__))
#define PyErr_NewException(obj,pt1,pt2) ldg_callback(pycallbacks[3],obj,pt1,pt2)
#define PyErr_SetString(obj,s) ldg_callback(pycallbacks[4],obj,s)
#define PyModule_AddObject(m,s,o) ldg_callback(pycallbacks[5],m,s,o)
-#define PyCapsule_New(pt,s,de) ldg_callback(pycallbacks[6],pt,s,de)
-#define PyCapsule_GetPointer(c,s) ldg_callback(pycallbacks[7],c,s)
+#define PyCapsule_New(pt,s,de) ((PyObject *)ldg_callback(pycallbacks[6],pt,s,de))
+#define PyCapsule_GetPointer(c,s) ((void *)ldg_callback(pycallbacks[7],c,s))
#define Py_IncRef(obj) ldg_callback(pycallbacks[8],obj)
#define Py_DecRef(obj) ldg_callback(pycallbacks[9],obj)
-#define Py_None pycallbacks[10]
+#define Py_None ((PyObject *)pycallbacks[10])
+#define PyArg_ParseTupleAndKeywords(tpl,...) ldg_callback(pycallbacks[11],tpl,##__VA_ARGS__)
#define Py_INCREF(obj) ldg_callback(pycallbacks[8],obj)
#define Py_DECREF(obj) ldg_callback(pycallbacks[9],obj)
diff --git a/lib/py_aes.c b/lib/py_aes.c
index 9a3ef54..539fbbf 100644
--- a/lib/py_aes.c
+++ b/lib/py_aes.c
@@ -5,7 +5,7 @@
extern PyObject *GEMError;
/* --- Application Library --- */
-static PyObject* __CDECL py_appl_init(PyObject *self, PyObject *args)
+PyObject* __CDECL py_appl_init(PyObject *self, PyObject *args)
{
int ret;
@@ -13,7 +13,7 @@ int ret;
return Py_BuildValue("i",ret);
}
-static PyObject* __CDECL py_appl_exit(PyObject *self, PyObject *args)
+PyObject* __CDECL py_appl_exit(PyObject *self, PyObject *args)
{
int ret;
@@ -21,7 +21,7 @@ int ret;
return Py_BuildValue("i",ret);
}
-static PyObject* __CDECL py_appl_write(PyObject *self, PyObject *args)
+PyObject* __CDECL py_appl_write(PyObject *self, PyObject *args)
{
int ret;
int app_id;
@@ -36,7 +36,7 @@ int msg_length;
}
/* --- Forms Library --- */
-static PyObject* __CDECL py_form_alert(PyObject *self, PyObject *args)
+PyObject* __CDECL py_form_alert(PyObject *self, PyObject *args)
{
char *text;
int x;
@@ -48,7 +48,7 @@ int x;
return Py_BuildValue("i",x);
}
-static PyObject* __CDECL py_form_dial(PyObject *self, PyObject *args)
+PyObject* __CDECL py_form_dial(PyObject *self, PyObject *args)
{
int id;
int lx, ly, lw, lh;
@@ -69,7 +69,7 @@ int ret;
return Py_None;
}
-static PyObject* __CDECL py_form_do(PyObject *self, PyObject *args)
+PyObject* __CDECL py_form_do(PyObject *self, PyObject *args)
{
PyObject *obj;
int x;
@@ -78,36 +78,36 @@ int ret;
if(!PyArg_ParseTuple(args,"Oi",&obj,&x))
return NULL;
- ret = form_do(PyCapsule_GetPointer(obj),x);
+ ret = form_do(PyCapsule_GetPointer(obj,NULL),x);
return Py_BuildValue("i",ret);
}
-static PyObject* __CDECL py_form_center(PyObject *self, PyObject *args)
+PyObject* __CDECL py_form_center(PyObject *self, PyObject *args)
{
PyObject *obj;
-int x,y,w,h;
+short x,y,w,h;
int ret;
- if(!PyArg_ParseTuple(args,"O(iiii)",&obj,&x,&y,&w,&h))
+ if(!PyArg_ParseTuple(args,"O(hhhh)",&obj,&x,&y,&w,&h))
return NULL;
- form_center(PyCapsule_GetPointer(obj),x,y,w,h);
+ form_center(PyCapsule_GetPointer(obj,NULL),&x,&y,&w,&h);
Py_INCREF(Py_None);
return Py_None;
}
/* --- Graphics Library --- */
-static PyObject* __CDECL py_graf_handle(PyObject *self)
+PyObject* __CDECL py_graf_handle(PyObject *self)
{
-int wchar,hchar,wcell,hcell;
+short wchar,hchar,wcell,hcell;
int ret;
ret = graf_handle(&wchar, &hchar, &wcell, &hcell);
- return Py_BuildValue("i(iiii)",ret,wchar,hchar,wcell,hcell);
+ return Py_BuildValue("i(iiii)",ret,(int)wchar,(int)hchar,(int)wcell,(int)hcell);
}
-static PyObject* __CDECL py_graf_mouse(PyObject self, PyObject *args)
+PyObject* __CDECL py_graf_mouse(PyObject self, PyObject *args)
{
int mouse;
@@ -119,7 +119,7 @@ int mouse;
return NULL;
}
- if(graf_mouse(mouse) == 0) {
+ if(graf_mouse(mouse,NULL) == 0) {
PyErr_SetString(GEMError,"Mouse cursor setting failed");
return NULL;
}
@@ -129,7 +129,7 @@ int mouse;
}
/* --- Resources Library --- */
-static PyObject* __CDECL py_rsrc_load(PyObject *self, PyObject *args)
+PyObject* __CDECL py_rsrc_load(PyObject *self, PyObject *args)
{
char *file;
int x;
@@ -146,7 +146,7 @@ int x;
return Py_None;
}
-static PyObject* __CDECL py_rsrc_gaddr(PyObject *self, PyObject *args)
+PyObject* __CDECL py_rsrc_gaddr(PyObject *self, PyObject *args)
{
char *file;
int type, index;
@@ -164,7 +164,7 @@ void *gaddr;
}
/* --- Windows Library --- */
-static PyObject* __CDECL py_wind_create(PyObject *self, PyObject *args)
+PyObject* __CDECL py_wind_create(PyObject *self, PyObject *args)
{
int type, x, y, w, h;
int ret;
@@ -175,7 +175,7 @@ int ret;
return Py_BuildValue("i",wind_create(type,x,y,w,h));
}
-static PyObject* __CDECL py_wind_close(PyObject *self, PyObject *args)
+PyObject* __CDECL py_wind_close(PyObject *self, PyObject *args)
{
int id;
@@ -191,7 +191,7 @@ int id;
return Py_None;
}
-static PyObject* __CDECL py_wind_delete(PyObject *self, PyObject *args)
+PyObject* __CDECL py_wind_delete(PyObject *self, PyObject *args)
{
int id;
@@ -207,7 +207,7 @@ int id;
return Py_None;
}
-static PyObject* __CDECL py_wind_open(PyObject *self, PyObject *args)
+PyObject* __CDECL py_wind_open(PyObject *self, PyObject *args)
{
int id, x, y, w, h;
int ret;
@@ -215,7 +215,7 @@ int ret;
if(!PyArg_ParseTuple(args,"i(iiii)",&id,&x,&y,&w,&h))
return NULL;
- ret = wind_open(type,x,y,w,h);
+ ret = wind_open(id,x,y,w,h);
if(ret == 0) {
PyErr_SetString(GEMError,"Window could not be opened");
return NULL;
@@ -225,16 +225,23 @@ int ret;
return Py_None;
}
-static PyObject* __CDECL py_wind_get(PyObject *self, PyObject *args)
+PyObject* __CDECL py_wind_get(PyObject *self, PyObject *args)
{
int id, gp;
+short p1, p2, p3, p4;
int w1, w2, w3, w4;
int ret;
if(!PyArg_ParseTuple(args,"ii",&id,&gp))
return NULL;
- ret = wind_get(id,gp,&w1,&w2,&w3,&w4);
+ ret = wind_get(id,gp,&p1,&p2,&p3,&p4);
+
+ w1 = (int)p1;
+ w2 = (int)p2;
+ w3 = (int)p3;
+ w4 = (int)p4;
+
if(ret == 0) {
PyErr_SetString(GEMError,"Window request failed");
return NULL;
@@ -256,7 +263,7 @@ int ret;
case WF_FULLXYWH:
case WF_FTOOLBAR:
case WF_FIRSTXYWH:
- case WF_DDELAY:
+ /* case WF_DDELAY: */
case WF_CURRXYWH:
return Py_BuildValue("(iiii)", w1, w2, w3, w4);
break;
@@ -270,9 +277,10 @@ int ret;
case WF_M_WINDLIST:
return Py_BuildValue("(ii)", w1, w2);
break;
- case XA:
- return Py_BuildValue("ii", ret, w1);
- break;
+ /* case XA:
+ * return Py_BuildValue("ii", ret, w1);
+ * break;
+ */
case WF_BEVENT:
case WF_BOTTOM:
case WF_HSLIDE:
@@ -291,7 +299,7 @@ int ret;
return Py_None;
}
-static PyObject* __CDECL py_wind_update(PyObject *self, PyObject *args)
+PyObject* __CDECL py_wind_update(PyObject *self, PyObject *args)
{
int op;
int ret;
@@ -307,19 +315,19 @@ int ret;
return Py_None;
}
-static PyObject* __CDECL py_wind_set(PyObject *self, PyObject *args)
+PyObject* __CDECL py_wind_set(PyObject *self, PyObject *args)
{
int id, sp;
int w1, w2, w3, w4;
int ret;
-PyObject *tple;
+PyObject *tpl;
if(!PyArg_ParseTuple(args,"ii|O",&id,&sp,&tpl))
return NULL;
w1 = 0; w2 = 0; w3 = 0; w4 = 0;
- switch(gp) {
+ switch(sp) {
case WF_BEVENT:
case WF_BOTTOMALL:
case WF_HSLIDE:
@@ -345,7 +353,7 @@ PyObject *tple;
PyArg_ParseTuple(tpl,"iii",&w1,&w2,&w3);
break;
case WF_CURRXYWH:
- case WF_DDELAY:
+ /* case WF_DDELAY: */
case WF_FULLXYWH:
case WF_ICONIFY:
case WF_PREVXYWH:
@@ -356,7 +364,7 @@ PyObject *tple;
break;
}
- ret = wind_set(id,gp,w1,w2,w3,w4);
+ ret = wind_set(id,sp,w1,w2,w3,w4);
if(ret == 0) {
PyErr_SetString(GEMError,"Window set failed");
return NULL;
@@ -368,15 +376,19 @@ PyObject *tple;
/* --- Event Library --- */
-static PyObject* __CDECL py_evnt_multi(PyObject self, PyObject *args, PyObject *kwargs)
+PyObject* __CDECL py_evnt_multi(PyObject self, PyObject *args, PyObject *kwargs)
{
/* Because this is possibly the ugliest call ever created in the C
* language, we'll use the same variable names as the docs use.
*/
int ev_mflags, ev_mbclicks, ev_mbmask, ev_mbstate, ev_mm1flags, ev_mm1x, ev_mm1y, ev_mm1width, ev_mm1height, ev_mm2flags;
-int ev_mm2x, ev_mm2y, ev_mm2width, ev_mm2height, ev_mmgpbuff, ev_mtlocount, ev_mthicount, ev_mmox, ev_mmoy;
+int ev_mm2x, ev_mm2y, ev_mm2width, ev_mm2height, ev_mtlocount, ev_mthicount, ev_mmox, ev_mmoy;
int ev_mmbutton, ev_mmokstate, ev_mkreturn, ev_mbreturn;
+int message[8];
+
+int ret;
+
PyObject *mbuttons;
PyObject *mmovement;
long int timer;
@@ -384,10 +396,10 @@ long int timer;
static char *kwlist[] = {"mouse_buttons","mouse_movement","timer",NULL};
mbuttons = NULL;
- mmoverment = NULL;
+ mmovement = NULL;
timer = 0l;
- if(!PyArg_ParseTupleAndKeywords(args, keywds, "i|OOl", kwlist,
+ if(!PyArg_ParseTupleAndKeywords(args, kwargs, "i|OOl", kwlist,
&ev_mflags, &mbuttons, &mmovement, &timer))
return NULL;
@@ -396,12 +408,12 @@ static char *kwlist[] = {"mouse_buttons","mouse_movement","timer",NULL};
ev_mthicount = hiword(timer);
/* Mouse button handling */
- if(mouse_buttons != NULL) {
+ if(mbuttons != NULL) {
PyArg_ParseTuple(mbuttons,"iii",&ev_mbclicks,&ev_mbmask,&ev_mbstate);
}
/* Mouse movement handling */
- if(mouse_movement != NULL) {
+ if(mmovement != NULL) {
PyArg_ParseTuple(mmovement,"(iiiii)(iiiii)",&ev_mm1flags,&ev_mm1x,&ev_mm1y,&ev_mm1width,ev_mm1height,
&ev_mm2flags,&ev_mm2x,&ev_mm2y,&ev_mm2width,ev_mm2height);
}
@@ -421,18 +433,18 @@ static char *kwlist[] = {"mouse_buttons","mouse_movement","timer",NULL};
ev_mm2y,
ev_mm2width,
ev_mm2height,
- &ev_mmgpbuff,
+ message,
ev_mtlocount,
ev_mthicount,
&ev_mmox,
&ev_mmoy,
&ev_mmbutton,
&ev_mmokstate,
- &ev_mkreturn,
+ /* &ev_mkreturn, */
&ev_mbreturn);
- return Py_BuildValue("{s:i,s:i,s:(ii),s:(iii),s:i", "events", ret, "message", ev_mmgpbuff,
- "mouse_position", ev_mmox, ev_mmoy, "mouse_button", ev_mmbutton, ev_mmokstate, ev_mbreturn
+ return Py_BuildValue("{s:i,s:i,s:(ii),s:(iii),s:i}", "events", ret, "message", message,
+ "mouse_position", ev_mmox, ev_mmoy, "mouse_button", ev_mmbutton, ev_mmokstate, ev_mbreturn,
"key", ev_mkreturn);
}
diff --git a/lib/py_aes.h b/lib/py_aes.h
index a6eed9b..024aac0 100644
--- a/lib/py_aes.h
+++ b/lib/py_aes.h
@@ -3,29 +3,29 @@
#include "ldg_Python.h"
-static PyObject* __CDECL py_appl_init(PyObject *self, PyObject *args);
-static PyObject* __CDECL py_appl_exit(PyObject *self, PyObject *args);
-static PyObject* __CDECL py_appl_write(PyObject *self, PyObject *args)
-
-static PyObject* __CDECL py_form_alert(PyObject *self, PyObject *args);
-static PyObject* __CDECL py_form_dial(PyObject *self, PyObject *args);
-static PyObject* __CDECL py_form_do(PyObject *self, PyObject *args);
-static PyObject* __CDECL py_form_center(PyObject *self, PyObject *args);
-
-static PyObject* __CDECL py_graf_handle(PyObject self, PyObject *args);
-static PyObject* __CDECL py_graf_mouse(PyObject self, PyObject *args);
-
-static PyObject* __CDECL py_rsrc_load(PyObject *self, PyObject *args);
-static PyObject* __CDECL py_rsrc_gaddr(PyObject *self, PyObject *args);
-
-static PyObject* __CDECL py_wind_create(PyObject *self, PyObject *args)
-static PyObject* __CDECL py_wind_open(PyObject *self, PyObject *args);
-static PyObject* __CDECL py_wind_get(PyObject *self, PyObject *args);
-static PyObject* __CDECL py_wind_delete(PyObject *self, PyObject *args);
-static PyObject* __CDECL py_wind_close(PyObject *self, PyObject *args);
-static PyObject* __CDECL py_wind_set(PyObject *self, PyObject *args);
-static PyObject* __CDECL py_wind_update(PyObject *self, PyObject *args);
-
-static PyObject* __CDECL py_evnt_multi(PyObject self, PyObject *args, PyObject *kwargs);
+ PyObject* __CDECL py_appl_init(PyObject *self, PyObject *args);
+ PyObject* __CDECL py_appl_exit(PyObject *self, PyObject *args);
+ PyObject* __CDECL py_appl_write(PyObject *self, PyObject *args);
+
+ PyObject* __CDECL py_form_alert(PyObject *self, PyObject *args);
+ PyObject* __CDECL py_form_dial(PyObject *self, PyObject *args);
+ PyObject* __CDECL py_form_do(PyObject *self, PyObject *args);
+ PyObject* __CDECL py_form_center(PyObject *self, PyObject *args);
+
+ PyObject* __CDECL py_graf_handle(PyObject self, PyObject *args);
+ PyObject* __CDECL py_graf_mouse(PyObject self, PyObject *args);
+
+PyObject* __CDECL py_rsrc_load(PyObject *self, PyObject *args);
+ PyObject* __CDECL py_rsrc_gaddr(PyObject *self, PyObject *args);
+
+ PyObject* __CDECL py_wind_create(PyObject *self, PyObject *args);
+ PyObject* __CDECL py_wind_open(PyObject *self, PyObject *args);
+ PyObject* __CDECL py_wind_get(PyObject *self, PyObject *args);
+ PyObject* __CDECL py_wind_delete(PyObject *self, PyObject *args);
+ PyObject* __CDECL py_wind_close(PyObject *self, PyObject *args);
+ PyObject* __CDECL py_wind_set(PyObject *self, PyObject *args);
+ PyObject* __CDECL py_wind_update(PyObject *self, PyObject *args);
+
+ PyObject* __CDECL py_evnt_multi(PyObject self, PyObject *args, PyObject *kwargs);
#endif /* __PY_AES_HEADERS */