about summary refs log tree commit diff
path: root/transform.e
diff options
context:
space:
mode:
Diffstat (limited to 'transform.e')
-rw-r--r--transform.e110
1 files changed, 2 insertions, 108 deletions
diff --git a/transform.e b/transform.e
index 136b790..3c844b6 100644
--- a/transform.e
+++ b/transform.e
@@ -210,117 +210,11 @@
 ~ TODO update this note when it does work
 
 
-~ Buffer- and address-management helpers
+~ Address-management helpers
 ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ~
 ~   The facilities in this section are used as helper code in the
-~ implementations of both transforms.
-
-~ TODO all this buffer stuff should be in its own file
-~ (delimiter pointer, buffer size -- buffer address)
-: read-to-buffer
-  dup allocate dup dup
-  ~ (buffer size, buffer address, word start, output point)
-  { key
-    ~ Exit if it's a zero byte.
-    dup not {
-      ~ Make sure to pack the zero to serve as a null terminator.
-      pack8
-      drop drop swap drop swap drop exit } if
-
-    ~   If it's a space character, we need to check if we just consumed the
-    ~ magic word, and do some handling to reset the word tracking.
-    dup is-space
-      { ~ (buffer size, buffer address, word start, output point, key)
-        ~ Tuck the key out of the way until we've done some stuff.
-        3unroll
-
-        ~ Add a null terminator so we can use stringcmp
-        dup 0 swap 8!
-
-        ~ Check for the magic word.
-        over 6 pick stringcmp 0 =
-        { ~ It's magic, so exit.
-          ~ Make sure to pack a zero to serve as a null terminator.
-          0 pack8
-          drop drop drop swap drop swap drop exit }
-        { ~ It's not magic, so reset the word start. Of course whitespace is
-          ~ not a word but this will help us keep track of things.
-          3roll pack8
-          swap drop dup } if-else }
-      { ~ (buffer size, buffer address, word start, output point, key)
-        ~ Tuck the key out of the way again.
-        3unroll
-        ~ Check if the word just started and the previous character is space.
-        2dup = dup { drop dup @ is-space } if
-          { ~ If so, this is the actual first character of the word.
-            drop swap pack8 dup }
-          { ~ If not, leave the word start alone.
-            3roll pack8 } if-else } if-else } forever ;
-
-
-~ (output point, filename -- output point)
-: pack-file-contents
-  dup 0 0 sys-open
-  ~ (output point, filename, open result code or file descriptor)
-  dup 0 > {
-    ." Couldn't open " swap emitstring space
-    ." because " space . ." ." newline
-    2 ndrop exit
-  } if
-
-  ~ (output point, filename, file descriptor)
-  {
-    dup 3 pick 1024 sys-read
-    ~ (output point, filename, file descriptor, read result code or length)
-
-    dup 0 > {
-      ." Error while reading from " 3roll emitstring
-      ." because " space . ." ." newline
-      drop exit
-    } if
-
-    dup 0 = {
-      3 ndrop exit
-    } if
-
-    4 roll + 3unroll
-  } forever ;
-
-
-~   In logical terms, this modifies an input buffer metadata structure
-~ in-place to push a new, zeroed one into the start of the linked list formed
-~ through the next-source field.
-~
-~   In physical terms, it works by allocating a new structure, copying the
-~ fields of the existing one into it, and zeroing the existing one. That's
-~ necessary because otherwise we'd need a mutable handle (a pointer to a
-~ pointer) to update the start of the list, and there's no way to do that with
-~ the main-input-buffer variable working the way it presently does.
-~
-~ (input buffer metadata pointer --)
-: push-input-buffer
-  allocate-input-buffer-metadata
-  ~ (original metadata pointer, new metadata pointer)
-  2dup 7 8 * memcopy
-  ~ (original metadata pointer, new metadata pointer)
-  swap dup zero-input-buffer-metadata
-  input-buffer-next-source ! ;
-
-
-~   This does the inverse of push-input-buffer. In the event that the
-~ next-source field is null, it zeroes the buffer.
-~
-~   Note, however, that it doesn't deallocate the memory, because that's not
-~ how memory allocation on the log works. If necessary, it can be deallocated
-~ with "forget", though as usual that requires careful planning.
-~
-~ (input buffer metadata pointer --)
-: pop-input-buffer
-  dup input-buffer-next-source @
-  ~ (original metadata pointer, next source metadata pointer)
-  dup { swap 7 8 * memcopy }
-      { drop zero-input-buffer-metadata } if-else ;
+~ implementations of all three transforms.
 
 
 ~   We have a bunch of accessors for the transformation state structure, which