|
|||||
Referents: writing to different types of streams | |||||
Prerequisite Concepts | Related Syntax |
Almost any type of stream may have the referents-allowed
modifier set. The referents-allowed
open modifier is allowed in an open
action or set
(set stream
) action for a buffer
, referent
, file
, or external output function
. It is also allowed on a reopen
action.
Streams to which referents have been written cannot be used as string values in an OmniMark program, because they do not take on their final value (that is, are resolved) until the end of the program, or the end of the "referent scope" in which they are opened.
A file to which referents have been written does not overwrite the original file until all of the referents are resolved. An attempt to access a file that has had referents written to it ignores the version of the file written with referents. The current version of the file (if it exists at that point) is accessed.
For buffers and referents that are referents-allowed
and which have been closed, their values can only be copied to streams with either the referents-allowed
modifier enabled (in which case the referents are simply copied over), or the referents-displayed
modifier enabled (in which case the referents are converted to text).
Whether streams can be used as "ordinary" string values, or whether they can only be copied to other streams with referents-allowed
depends on whether the streams were opened with referents-allowed
themselves, not on whether or not referents have actually been written to them.
referents-allowed
streams that are opened in "nested referent scopes" are coerced to the equivalent non-referents-allowed
streams at the end of the nested referent scope, and, once closed, can be used as string values after that point.
Prerequisite Concepts Referents |
Related Syntax referents-allowed referents-displayed |
---- |