]> granicus.if.org Git - python/commitdiff
Renamed.
authorBarry Warsaw <barry@python.org>
Thu, 12 Dec 1996 23:32:31 +0000 (23:32 +0000)
committerBarry Warsaw <barry@python.org>
Thu, 12 Dec 1996 23:32:31 +0000 (23:32 +0000)
Modules/structmodule.c

index 0466b7e95dd8e8e7548563a87ba5913724bc6c46..f9eb6b566f4a3a0c39767ebd9d28849b3221bd60 100644 (file)
@@ -31,10 +31,9 @@ PERFORMANCE OF THIS SOFTWARE.
 
 /* struct module -- pack values into and (out of) strings */
 
-#include "allobjects.h"
-#include "modsupport.h"
+#include "Python.h"
 
-static object *StructError;
+static PyObject *StructError;
 
 
 /* Define various structs to figure out the alignments of types */
@@ -105,8 +104,8 @@ calcsize(fmt)
                        while ('0' <= (c = *s++) && c <= '9') {
                                x = num*10 + (c - '0');
                                if (x/10 != num) {
-                                       err_setstr(StructError,
-                                                  "int overflow in fmt");
+                                       PyErr_SetString(StructError,
+                                                        "int overflow in fmt");
                                        return -1;
                                }
                                num = x;
@@ -148,7 +147,7 @@ calcsize(fmt)
                        break;
 
                default:
-                       err_setstr(StructError, "bad char in fmt");
+                       PyErr_SetString(StructError, "bad char in fmt");
                        return -1;
 
                }
@@ -156,7 +155,8 @@ calcsize(fmt)
                x = num * itemsize;
                size += x;
                if (x/itemsize != num || size < 0) {
-                       err_setstr(StructError, "total struct size too long");
+                       PyErr_SetString(StructError,
+                                        "total struct size too long");
                        return -1;
                }
                        
@@ -168,31 +168,31 @@ calcsize(fmt)
 
 /* pack(fmt, v1, v2, ...) --> string */
 
-static object *
+static PyObject *
 struct_calcsize(self, args)
-       object *self; /* Not used */
-       object *args;
+       PyObject *self; /* Not used */
+       PyObject *args;
 {
        char *fmt;
        int size;
 
-       if (!getargs(args, "s", &fmt))
+       if (!PyArg_Parse(args, "s", &fmt))
                return NULL;
        size = calcsize(fmt);
        if (size < 0)
                return NULL;
-       return newintobject((long)size);
+       return PyInt_FromLong((long)size);
 }
 
 
 /* pack(fmt, v1, v2, ...) --> string */
 
-static object *
+static PyObject *
 struct_pack(self, args)
-       object *self; /* Not used */
-       object *args;
+       PyObject *self; /* Not used */
+       PyObject *args;
 {
-       object *format, *result, *v;
+       PyObject *format, *result, *v;
        char *fmt;
        int size, num;
        int i, n;
@@ -201,24 +201,25 @@ struct_pack(self, args)
        long ival;
        double fval;
 
-       if (args == NULL || !is_tupleobject(args) ||
-           (n = gettuplesize(args)) < 1) {
-               err_badarg();
+       if (args == NULL || !PyTuple_Check(args) ||
+           (n = PyTuple_Size(args)) < 1)
+        {
+               PyErr_BadArgument();
                return NULL;
        }
-       format = gettupleitem(args, 0);
-       if (!getargs(format, "s", &fmt))
+       format = PyTuple_GetItem(args, 0);
+       if (!PyArg_Parse(format, "s", &fmt))
                return NULL;
        size = calcsize(fmt);
        if (size < 0)
                return NULL;
-       result = newsizedstringobject((char *)NULL, size);
+       result = PyString_FromStringAndSize((char *)NULL, size);
        if (result == NULL)
                return NULL;
 
        s = fmt;
        i = 1;
-       res = restart = getstringvalue(result);
+       res = restart = PyString_AsString(result);
 
        while ((c = *s++) != '\0') {
                if ('0' <= c && c <= '9') {
@@ -245,17 +246,17 @@ struct_pack(self, args)
                        case 'h':
                        case 'b':
                                if (i >= n) {
-                                       err_setstr(StructError,
-                                          "insufficient arguments to pack");
+                                       PyErr_SetString(StructError,
+                                            "insufficient arguments to pack");
                                        goto fail;
                                }
-                               v = gettupleitem(args, i++);
-                               if (!is_intobject(v)) {
-                                       err_setstr(StructError,
-                                          "bad argument type to pack");
+                               v = PyTuple_GetItem(args, i++);
+                               if (!PyInt_Check(v)) {
+                                       PyErr_SetString(StructError,
+                                                 "bad argument type to pack");
                                        goto fail;
                                }
-                               ival = getintvalue(v);
+                               ival = PyInt_AsLong(v);
                                switch (c) {
                                case 'b':
                                        *res++ = ival;
@@ -277,34 +278,35 @@ struct_pack(self, args)
 
                        case 'c':
                                if (i >= n) {
-                                       err_setstr(StructError,
-                                          "insufficient arguments to pack");
+                                       PyErr_SetString(StructError,
+                                            "insufficient arguments to pack");
                                        goto fail;
                                }
-                               v = gettupleitem(args, i++);
-                               if (!is_stringobject(v) ||
-                                   getstringsize(v) != 1) {
-                                       err_setstr(StructError,
-                                          "bad argument type to pack");
+                               v = PyTuple_GetItem(args, i++);
+                               if (!PyString_Check(v) ||
+                                   PyString_Size(v) != 1)
+                               {
+                                       PyErr_SetString(StructError,
+                                                 "bad argument type to pack");
                                        goto fail;
                                }
-                               *res++ = getstringvalue(v)[0];
+                               *res++ = PyString_AsString(v)[0];
                                break;
 
                        case 'd':
                        case 'f':
                                if (i >= n) {
-                                       err_setstr(StructError,
-                                          "insufficient arguments to pack");
+                                       PyErr_SetString(StructError,
+                                            "insufficient arguments to pack");
                                        goto fail;
                                }
-                               v = gettupleitem(args, i++);
-                               if (!is_floatobject(v)) {
-                                       err_setstr(StructError,
-                                          "bad argument type to pack");
+                               v = PyTuple_GetItem(args, i++);
+                               if (!PyFloat_Check(v)) {
+                                       PyErr_SetString(StructError,
+                                                 "bad argument type to pack");
                                        goto fail;
                                }
-                               fval = getfloatvalue(v);
+                               fval = PyFloat_AsDouble(v);
                                switch (c) {
                                case 'f':
                                        *(float*)res = (float)fval;
@@ -318,7 +320,8 @@ struct_pack(self, args)
                                break;
 
                        default:
-                               err_setstr(StructError, "bad char in fmt");
+                               PyErr_SetString(StructError,
+                                               "bad char in fmt");
                                goto fail;
 
                        }
@@ -326,59 +329,61 @@ struct_pack(self, args)
        }
 
        if (i < n) {
-               err_setstr(StructError, "too many arguments for pack fmt");
+               PyErr_SetString(StructError,
+                               "too many arguments for pack fmt");
                goto fail;
        }
 
        return result;
 
  fail:
-       DECREF(result);
+       Py_DECREF(result);
        return NULL;
 }
 
 
 /* Helper to convert a list to a tuple */
 
-static object *
+static PyObject *
 totuple(list)
-       object *list;
+       PyObject *list;
 {
-       int len = getlistsize(list);
-       object *tuple = newtupleobject(len);
+       int len = PyList_Size(list);
+       PyObject *tuple = PyTuple_New(len);
        if (tuple != NULL) {
                int i;
                for (i = 0; i < len; i++) {
-                       object *v = getlistitem(list, i);
-                       INCREF(v);
-                       settupleitem(tuple, i, v);
+                       PyObject *v = PyList_GetItem(list, i);
+                       Py_INCREF(v);
+                       PyTuple_SetItem(tuple, i, v);
                }
        }
-       DECREF(list);
+       Py_DECREF(list);
        return tuple;
 }
 
 
 /* unpack(fmt, string) --> (v1, v2, ...) */
 
-static object *
+static PyObject *
 struct_unpack(self, args)
-       object *self; /* Not used */
-       object *args;
+       PyObject *self; /* Not used */
+       PyObject *args;
 {
        char *str, *start, *fmt, *s;
        char c;
        int len, size, num, x;
-       object *res, *v;
+       PyObject *res, *v;
 
-       if (!getargs(args, "(ss#)", &fmt, &start, &len))
+       if (!PyArg_Parse(args, "(ss#)", &fmt, &start, &len))
                return NULL;
        size = calcsize(fmt);
        if (size != len) {
-               err_setstr(StructError, "unpack str size does not match fmt");
+               PyErr_SetString(StructError,
+                               "unpack str size does not match fmt");
                return NULL;
        }
-       res = newlistobject(0);
+       res = PyList_New(0);
        if (res == NULL)
                return NULL;
        str = start;
@@ -407,31 +412,31 @@ struct_unpack(self, args)
                                x = *str++;
                                if (x >= 128)
                                        x -= 256;
-                               v = newintobject((long)x);
+                               v = PyInt_FromLong((long)x);
                                break;
 
                        case 'c':
-                               v = newsizedstringobject(str, 1);
+                               v = PyString_FromStringAndSize(str, 1);
                                str++;
                                break;
 
                        case 'h':
-                               v = newintobject((long)*(short*)str);
+                               v = PyInt_FromLong((long)*(short*)str);
                                str += sizeof(short);
                                break;
 
                        case 'i':
-                               v = newintobject((long)*(int*)str);
+                               v = PyInt_FromLong((long)*(int*)str);
                                str += sizeof(int);
                                break;
 
                        case 'l':
-                               v = newintobject(*(long*)str);
+                               v = PyInt_FromLong(*(long*)str);
                                str += sizeof(long);
                                break;
 
                        case 'f':
-                               v = newfloatobject((double)*(float*)str);
+                               v = PyFloat_FromDouble((double)*(float*)str);
                                str += sizeof(float);
                                break;
 
@@ -439,33 +444,34 @@ struct_unpack(self, args)
                            {
                                double d;
                                memcpy((char *)&d, str, sizeof d);
-                               v = newfloatobject(d);
+                               v = PyFloat_FromDouble(d);
                                str += sizeof(double);
                                break;
                            }
 
                        default:
-                               err_setstr(StructError, "bad char in fmt");
+                               PyErr_SetString(StructError,
+                                               "bad char in fmt");
                                goto fail;
 
                        }
-                       if (v == NULL || addlistitem(res, v) < 0)
+                       if (v == NULL || PyList_Append(res, v) < 0)
                                goto fail;
-                       DECREF(v);
+                       Py_DECREF(v);
                }
        }
 
        return totuple(res);
 
  fail:
-       DECREF(res);
+       Py_DECREF(res);
        return NULL;
 }
 
 
 /* List of functions */
 
-static struct methodlist struct_methods[] = {
+static PyMethodDef struct_methods[] = {
        {"calcsize",    struct_calcsize},
        {"pack",        struct_pack,    1/*varargs*/},
        {"unpack",      struct_unpack},
@@ -478,17 +484,17 @@ static struct methodlist struct_methods[] = {
 void
 initstruct()
 {
-       object *m, *d;
+       PyObject *m, *d;
 
        /* Create the module and add the functions */
-       m = initmodule("struct", struct_methods);
+       m = Py_InitModule("struct", struct_methods);
 
        /* Add some symbolic constants to the module */
-       d = getmoduledict(m);
-       StructError = newstringobject("struct.error");
-       dictinsert(d, "error", StructError);
+       d = PyModule_GetDict(m);
+       StructError = PyString_FromString("struct.error");
+       PyDict_SetItemString(d, "error", StructError);
 
        /* Check for errors */
-       if (err_occurred())
-               fatal("can't initialize module struct");
+       if (PyErr_Occurred())
+               Py_FatalError("can't initialize module struct");
 }