summaryrefslogtreecommitdiff
path: root/src/mcpp-source.h
diff options
context:
space:
mode:
authorkx <kx@radix-linux.su>2026-10-01 12:02:28 +0300
committerkx <kx@radix-linux.su>2026-10-01 12:02:28 +0300
commitba1b04d64bdfaf377915b22f77520216ebe47674 (patch)
tree044343035c28b2b04ca9725f26e9b7c39342d19c /src/mcpp-source.h
parent124b140798456778e2a96851cc7268aa9a726698 (diff)
downloadmcpu-cpp-1.0.2.tar.xz
Version 1.0.21.0.2
Diffstat (limited to 'src/mcpp-source.h')
-rw-r--r--src/mcpp-source.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/mcpp-source.h b/src/mcpp-source.h
new file mode 100644
index 0000000..9a7973a
--- /dev/null
+++ b/src/mcpp-source.h
@@ -0,0 +1,35 @@
+#ifndef __MCPU_CPP_SOURCE_H__
+#define __MCPU_CPP_SOURCE_H__ 1
+
+#include <defs.h>
+#include <mcpp-text.h>
+
+#define MCPU_CPP_NON_UCS2_SENTINEL 0xd800
+
+typedef struct mcpu_source mcpu_source;
+struct mcpu_source
+{
+ char *filename;
+ mcpu_text text;
+ mcpu_text logical_line;
+ size_t *splice_offsets;
+ size_t splice_count;
+ size_t splice_capacity;
+ size_t offset;
+ unsigned line;
+};
+
+void mcpu_source_init( mcpu_source *source );
+void mcpu_source_free( mcpu_source *source );
+int mcpu_source_open( mcpu_source *source, const char *filename );
+int mcpu_source_open_stream( mcpu_source *source, FILE *stream,
+ const char *name );
+int mcpu_source_valid_ucs2( const __mpu_char16_t *text, size_t length );
+int mcpu_source_next_line( mcpu_source *source,
+ const __mpu_char16_t **line,
+ size_t *length,
+ unsigned *line_number,
+ unsigned *next_line_number,
+ int *spliced );
+
+#endif /* __MCPU_CPP_SOURCE_H__ */