1 #ifndef Py_COMPILE_H 2 #define Py_COMPILE_H 3 4 #ifndef Py_LIMITED_API 5 #include "code.h" 6 7 #ifdef __cplusplus 8 extern "C" { 9 #endif 10 11 /* Public interface */ 12 struct _node; /* Declare the existence of this type */ 13 PyAPI_FUNC(PyCodeObject *) PyNode_Compile(struct _node *, const char *); 14 15 /* Future feature support */ 16 17 typedef struct { 18 int ff_features; /* flags set by future statements */ 19 int ff_lineno; /* line number of last future statement */ 20 } PyFutureFeatures; 21 22 #define FUTURE_NESTED_SCOPES "nested_scopes" 23 #define FUTURE_GENERATORS "generators" 24 #define FUTURE_DIVISION "division" 25 #define FUTURE_ABSOLUTE_IMPORT "absolute_import" 26 #define FUTURE_WITH_STATEMENT "with_statement" 27 #define FUTURE_PRINT_FUNCTION "print_function" 28 #define FUTURE_UNICODE_LITERALS "unicode_literals" 29 #define FUTURE_BARRY_AS_BDFL "barry_as_FLUFL" 30 #define FUTURE_GENERATOR_STOP "generator_stop" 31 32 struct _mod; /* Declare the existence of this type */ 33 #define PyAST_Compile(mod, s, f, ar) PyAST_CompileEx(mod, s, f, -1, ar) 34 PyAPI_FUNC(PyCodeObject *) PyAST_CompileEx( 35 struct _mod *mod, 36 const char *filename, /* decoded from the filesystem encoding */ 37 PyCompilerFlags *flags, 38 int optimize, 39 PyArena *arena); 40 PyAPI_FUNC(PyCodeObject *) PyAST_CompileObject( 41 struct _mod *mod, 42 PyObject *filename, 43 PyCompilerFlags *flags, 44 int optimize, 45 PyArena *arena); 46 PyAPI_FUNC(PyFutureFeatures *) PyFuture_FromAST( 47 struct _mod * mod, 48 const char *filename /* decoded from the filesystem encoding */ 49 ); 50 PyAPI_FUNC(PyFutureFeatures *) PyFuture_FromASTObject( 51 struct _mod * mod, 52 PyObject *filename 53 ); 54 55 /* _Py_Mangle is defined in compile.c */ 56 PyAPI_FUNC(PyObject*) _Py_Mangle(PyObject *p, PyObject *name); 57 58 #define PY_INVALID_STACK_EFFECT INT_MAX 59 PyAPI_FUNC(int) PyCompile_OpcodeStackEffect(int opcode, int oparg); 60 61 #ifdef __cplusplus 62 } 63 #endif 64 65 #endif /* !Py_LIMITED_API */ 66 67 /* These definitions must match corresponding definitions in graminit.h. 68 There's code in compile.c that checks that they are the same. */ 69 #define Py_single_input 256 70 #define Py_file_input 257 71 #define Py_eval_input 258 72 73 #endif /* !Py_COMPILE_H */ 74