sourcedata.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. #pragma once
  2. #include <stdbool.h>
  3. #include "pocketpy/pocketpy.h"
  4. #include "pocketpy/common/str.h"
  5. #include "pocketpy/common/sstream.h"
  6. #include "pocketpy/common/vector.h"
  7. struct SourceData {
  8. RefCounted rc;
  9. enum py_CompileMode mode;
  10. bool is_dynamic; // for exec() and eval()
  11. c11_string* filename;
  12. c11_string* source;
  13. c11_vector /*T=const char* */ line_starts;
  14. };
  15. typedef struct SourceData* SourceData_;
  16. SourceData_ SourceData__rcnew(const char* source,
  17. const char* filename,
  18. enum py_CompileMode mode,
  19. bool is_dynamic);
  20. bool SourceData__get_line(const struct SourceData* self,
  21. int lineno,
  22. const char** st,
  23. const char** ed);
  24. void SourceData__snapshot(const struct SourceData* self,
  25. c11_sbuf* ss,
  26. int lineno,
  27. const char* cursor,
  28. const char* name);