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