summaryrefslogtreecommitdiff
path: root/stream.sig
diff options
context:
space:
mode:
authorVladimir Azarov <avm@intermediate-node.net>2025-03-24 21:51:16 +0100
committerVladimir Azarov <avm@intermediate-node.net>2025-03-24 21:51:16 +0100
commit87217fe5ba58f5199d30586b5d9bec104dece445 (patch)
tree00a43d11ebdfbb65750e80758ce1925e4c6a1a3e /stream.sig
parente40727b58e357f123256557af50666aa42c2caa4 (diff)
Partition into structures
Diffstat (limited to 'stream.sig')
-rw-r--r--stream.sig36
1 files changed, 36 insertions, 0 deletions
diff --git a/stream.sig b/stream.sig
new file mode 100644
index 0000000..98cfb65
--- /dev/null
+++ b/stream.sig
@@ -0,0 +1,36 @@
+signature STREAM = sig
+ type fileId = int
+ type fileOffset = int
+ type pos = fileId * fileOffset
+ type convPos = string * int * int option
+
+ type filesInfo = (fileId * string * string) list
+
+ exception EndOfStream
+ exception EndOfFile
+
+ exception LineWithoutNl
+
+ type t
+
+ val extractFilesInfo: t -> filesInfo
+
+ val pos2str: convPos -> string
+ val printPos: (fileId * string * string) list -> pos -> unit
+
+ val getchar: t -> char * t
+ val ungetc: t -> t
+ val readline: t -> string * t
+
+ val getOffset: t -> fileOffset
+ val getPos: t -> pos
+ val getPosAfterCharRead: t -> pos
+ val getPposFromPos: pos -> t -> convPos
+
+ val getSubstr: fileOffset -> fileOffset -> t -> string
+ val isFirstOnLine: pos -> t -> bool
+
+ val advanceToNewFile: t -> t
+
+ val streamInit: string -> t
+end