blueloveTH fa31f4c5df backup
2024-06-27 20:05:45 +08:00

35 lines
898 B
C

#pragma once
#include <stdbool.h>
#include "pocketpy/common/str.h"
#include "pocketpy/common/vector.h"
#include "pocketpy/common/refcount.h"
#ifdef __cplusplus
extern "C" {
#endif
enum CompileMode { EXEC_MODE, EVAL_MODE, REPL_MODE, JSON_MODE, CELL_MODE };
struct pk_SourceData {
RefCounted rc;
enum CompileMode mode;
bool is_precompiled;
py_Str filename;
py_Str source;
c11_vector/*T=const char* */ line_starts;
c11_vector/*T=py_Str*/ _precompiled_tokens;
};
typedef struct pk_SourceData* pk_SourceData_;
pk_SourceData_ pk_SourceData__rcnew(const char* source, const char* filename, enum CompileMode mode);
bool pk_SourceData__get_line(const struct pk_SourceData* self, int lineno, const char** st, const char** ed);
py_Str pk_SourceData__snapshot(const struct pk_SourceData *self, int lineno, const char *cursor, const char *name);
#ifdef __cplusplus
}
#endif