home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 April / PCWorld_2001-04_cd.bin / Software / TemaCD / webclean / !!!python!!! / BeOpen-Python-2.0.exe / COMPILE.H < prev    next >
Encoding:
C/C++ Source or Header  |  2000-09-01  |  1.9 KB  |  57 lines

  1.  
  2. /* Definitions for bytecode */
  3.  
  4. #ifndef Py_COMPILE_H
  5. #define Py_COMPILE_H
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9.  
  10. /* Bytecode object */
  11. typedef struct {
  12.     PyObject_HEAD
  13.     int co_argcount;        /* #arguments, except *args */
  14.     int co_nlocals;        /* #local variables */
  15.     int co_stacksize;        /* #entries needed for evaluation stack */
  16.     int co_flags;        /* CO_..., see below */
  17.     PyObject *co_code;        /* instruction opcodes */
  18.     PyObject *co_consts;    /* list (constants used) */
  19.     PyObject *co_names;        /* list of strings (names used) */
  20.     PyObject *co_varnames;    /* tuple of strings (local variable names) */
  21.     /* The rest doesn't count for hash/cmp */
  22.     PyObject *co_filename;    /* string (where it was loaded from) */
  23.     PyObject *co_name;        /* string (name, for reference) */
  24.     int co_firstlineno;        /* first source line number */
  25.     PyObject *co_lnotab;    /* string (encoding addr<->lineno mapping) */
  26. } PyCodeObject;
  27.  
  28. /* Masks for co_flags above */
  29. #define CO_OPTIMIZED    0x0001
  30. #define CO_NEWLOCALS    0x0002
  31. #define CO_VARARGS    0x0004
  32. #define CO_VARKEYWORDS    0x0008
  33.  
  34. extern DL_IMPORT(PyTypeObject) PyCode_Type;
  35.  
  36. #define PyCode_Check(op) ((op)->ob_type == &PyCode_Type)
  37.  
  38. #define CO_MAXBLOCKS 20 /* Max static block nesting within a function */
  39.  
  40. /* Public interface */
  41. struct _node; /* Declare the existence of this type */
  42. DL_IMPORT(PyCodeObject *) PyNode_Compile(struct _node *, char *);
  43. DL_IMPORT(PyCodeObject *) PyCode_New(
  44.     int, int, int, int, PyObject *, PyObject *, PyObject *, PyObject *,
  45.     PyObject *, PyObject *, int, PyObject *); /* same as struct above */
  46. DL_IMPORT(int) PyCode_Addr2Line(PyCodeObject *, int);
  47.  
  48. /* for internal use only */
  49. #define _PyCode_GETCODEPTR(co, pp) \
  50.     ((*(co)->co_code->ob_type->tp_as_buffer->bf_getreadbuffer) \
  51.      ((co)->co_code, 0, (void **)(pp)))
  52.  
  53. #ifdef __cplusplus
  54. }
  55. #endif
  56. #endif /* !Py_COMPILE_H */
  57.