Class TokenStream
Stream which return and write data as string tokens into/from file. Stream support encoding and data buffering.
Inheritance
Implements
Inherited Members
Namespace: Syncfusion.IO
Assembly: Syncfusion.MIME.Base.dll
Syntax
public class TokenStream : Stream, IDisposable, IEnumerable
Constructors
TokenStream(Stream)
Constructor, initializes new object
Declaration
public TokenStream(Stream input)
Parameters
| Type | Name | Description |
|---|---|---|
| System.IO.Stream | input | Input data Stream |
TokenStream(Stream, Boolean)
Create Token stream from other stream. encoding of input stream class try to detected automaticaly.
Declaration
public TokenStream(Stream input, bool controlStream)
Parameters
| Type | Name | Description |
|---|---|---|
| System.IO.Stream | input | source stream |
| System.Boolean | controlStream | True - if TokenStream instance must close input stream on own Close, otherwise false |
TokenStream(Stream, Boolean, Int32)
Constructor, initializes new object encoding of input stream class try to detected automaticaly.
Declaration
public TokenStream(Stream input, bool controlStream, int bufferSize)
Parameters
| Type | Name | Description |
|---|---|---|
| System.IO.Stream | input | Input data Stream |
| System.Boolean | controlStream | True - if TokenStream instance must close input stream on own Close, otherwise false |
| System.Int32 | bufferSize | Size of the Stream |
TokenStream(Stream, Encoding)
Create Token stream from other stream with specified by user encoding
Declaration
public TokenStream(Stream input, Encoding encoding)
Parameters
| Type | Name | Description |
|---|---|---|
| System.IO.Stream | input | input stream |
| System.Text.Encoding | encoding | If encoding of input stream known then you can specify it, otherwise send null value for auto-detection |
TokenStream(Stream, Encoding, Boolean)
Create Token stream from other stream with specified by user encoding. Constructor help to specify must class control input stream or not
Declaration
public TokenStream(Stream input, Encoding encoding, bool controlStream)
Parameters
| Type | Name | Description |
|---|---|---|
| System.IO.Stream | input | input strea |
| System.Text.Encoding | encoding | If encoding of input stream known then you can specify it, otherwise send null value for auto-detection |
| System.Boolean | controlStream | True - if TokenStream instance must close input stream on own Close, otherwise false |
TokenStream(Stream, Encoding, Boolean, Int32)
Constructor, initializes new object
Declaration
public TokenStream(Stream input, Encoding encoding, bool controlStream, int bufferSize)
Parameters
| Type | Name | Description |
|---|---|---|
| System.IO.Stream | input | Input data Stream |
| System.Text.Encoding | encoding | If encoding of input stream known then you can specify it, otherwise send null value for auto-detection |
| System.Boolean | controlStream | True - if TokenStream instance must close input stream on own Close, otherwise false |
| System.Int32 | bufferSize | Size of the Stream |
TokenStream(String)
Constructor must received a file name and try to open it
Declaration
public TokenStream(string fileName)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | fileName |
TokenStream(String, FileMode)
constructor allow to control mode of file open operation
Declaration
public TokenStream(string fileName, FileMode mode)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | fileName | |
| System.IO.FileMode | mode |
TokenStream(String, FileMode, FileAccess)
Constructor allow to control File open mode and access flags
Declaration
public TokenStream(string fileName, FileMode mode, FileAccess access)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | fileName | File name |
| System.IO.FileMode | mode | A FileMode constant that determines how to open or create the file. |
| System.IO.FileAccess | access | A FileAccess constant that determines how the file can be accessed by the TokenStream object. This gets the CanRead and CanWrite properties of the FileStream object. CanSeek is true if path specifies a disk file |
TokenStream(String, FileMode, FileAccess, FileShare)
construct allow to override file mode, access and share flags
Declaration
public TokenStream(string fileName, FileMode mode, FileAccess access, FileShare share)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | fileName | File name |
| System.IO.FileMode | mode | A FileMode constant that determines how to open or create the file. |
| System.IO.FileAccess | access | A FileAccess constant that determines how the file can be accessed by the TokenStream object. This gets the CanRead and CanWrite properties of the FileStream object. CanSeek is true if path specifies a disk file |
| System.IO.FileShare | share | A FileShare constant that determines how the file will be shared by processes |
TokenStream(String, FileMode, FileAccess, FileShare, Int32)
Open stream. Constructor allow to specify parameter of stream open
Declaration
public TokenStream(string fileName, FileMode mode, FileAccess access, FileShare share, int bufferSize)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | fileName | File name |
| System.IO.FileMode | mode | A FileMode constant that determines how to open or create the file. |
| System.IO.FileAccess | access | A FileAccess constant that determines how the file can be accessed by the TokenStream object. This gets the CanRead and CanWrite properties of the FileStream object. CanSeek is true if path specifies a disk file |
| System.IO.FileShare | share | A FileShare constant that determines how the file will be shared by processes |
| System.Int32 | bufferSize | size of internal buffer used for read/write operations optimizations |
Fields
DEF_BUFFER_SIZE
Stream buffer used for optimizing speed of read/write operations
Declaration
protected const int DEF_BUFFER_SIZE = 16384
Field Value
| Type |
|---|
| System.Int32 |
DEF_FAST_SEARCH
Buffer size used for line counting and searching
Declaration
protected const int DEF_FAST_SEARCH = 7792
Field Value
| Type |
|---|
| System.Int32 |
DEF_MULTI_TOKEN_SPLIT
Array of atomic tokens which can takes more then one symbol
Declaration
public readonly string[] DEF_MULTI_TOKEN_SPLIT
Field Value
| Type |
|---|
| System.String[] |
DEF_READ_CHAR_BUFFER_SIZE
Declaration
protected const int DEF_READ_CHAR_BUFFER_SIZE = 128
Field Value
| Type |
|---|
| System.Int32 |
DEF_TOKEN_SPLITS
characters which delimit tokens
Declaration
public readonly char[] DEF_TOKEN_SPLITS
Field Value
| Type |
|---|
| System.Char[] |
m_strEndOfLine
New line splitter
Declaration
protected string m_strEndOfLine
Field Value
| Type |
|---|
| System.String |
Properties
CanRead
If TokenStream can Read
Declaration
public override bool CanRead { get; }
Property Value
| Type |
|---|
| System.Boolean |
Overrides
CanSeek
If TokenStream can Seek
Declaration
public override bool CanSeek { get; }
Property Value
| Type |
|---|
| System.Boolean |
Overrides
CanWrite
If TokenStream can Write
Declaration
public override bool CanWrite { get; }
Property Value
| Type |
|---|
| System.Boolean |
Overrides
CaseSensitive
Get or set does MultiCharTokens case sensitive or not. Default is case sensitive - TRUE. This property greatly reduce performance of TokenStream class that is use it only where it realy needed
Declaration
public virtual bool CaseSensitive { get; set; }
Property Value
| Type |
|---|
| System.Boolean |
Encoding
Encoding used for file reading
Declaration
public virtual Encoding Encoding { get; set; }
Property Value
| Type |
|---|
| System.Text.Encoding |
EndLineStyle
Gets or Sets End line style ( For different OS )
Declaration
public virtual NewLineStyle EndLineStyle { get; set; }
Property Value
| Type |
|---|
| NewLineStyle |
Length
Number of symbols in our Stream
Declaration
public override long Length { get; }
Property Value
| Type |
|---|
| System.Int64 |
Overrides
MaxMultiTokenLength
Get maximum size of multi symbols token
Declaration
public virtual int MaxMultiTokenLength { get; }
Property Value
| Type |
|---|
| System.Int32 |
MinMultiTokenLength
Get minimum size of multi symbols token
Declaration
public virtual int MinMultiTokenLength { get; }
Property Value
| Type |
|---|
| System.Int32 |
MultiCharTokens
Get or set multi-symbols atomic tokens. This property can used by top-level abstractions for extracting special lexems, like: ++, --, +=, -=, !=, ==, *= and etc.
Declaration
public virtual string[] MultiCharTokens { get; set; }
Property Value
| Type |
|---|
| System.String[] |
NewLine
On end of line string update recalculate lines in stream
Declaration
public virtual string NewLine { get; set; }
Property Value
| Type |
|---|
| System.String |
OneCharTokens
Get or set array of charecters which can split tokens in stream. Each symbol from this array will be returned by Stream as token with one char, for more complex constructions must be used MultiCharTokens property values.
Declaration
public virtual char[] OneCharTokens { get; set; }
Property Value
| Type |
|---|
| System.Char[] |
Position
get or set position in stream
Declaration
public override long Position { get; set; }
Property Value
| Type |
|---|
| System.Int64 |
Overrides
SkipBytes
GET count of skipped bytes at the beginning of the file. Skipped bytes - size of the preambula for encoding.
Declaration
public int SkipBytes { get; }
Property Value
| Type |
|---|
| System.Int32 |
Methods
BuildFastCharTree(Hashtable, String[])
Method create tree ob FastChar objects which allow to search faster any word from stream by chars. '\uffff' - symbol indicate end of string from source array.
Declaration
protected virtual void BuildFastCharTree(Hashtable source, string[] value)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Collections.Hashtable | source | hash table which will store FastChar's objects |
| System.String[] | value | array of strings |
BuildFastCharTreeEx(Hashtable, String[])
Method create tree ob FastChar objects which allow to search faster any word from stream by chars. '\uffff' - symbol indicate end of string from source array. Alternative method of FastChar tree building.
Declaration
protected virtual void BuildFastCharTreeEx(Hashtable source, string[] value)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Collections.Hashtable | source | hahs table which will store FastChar's objects |
| System.String[] | value | array of strings |
CalculateLineCount(String)
Calculate lines in stream
Declaration
protected virtual int CalculateLineCount(string endOfLine)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | endOfLine |
Returns
| Type | Description |
|---|---|
| System.Int32 | Return total lines count in file |
CalculateLineCount(String, Int64, out Int32)
Calculate lines in stream till specified positon
Declaration
protected virtual int CalculateLineCount(string endOfLine, long tillOffset, out int position)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | endOfLine | string which interpreted as end of line |
| System.Int64 | tillOffset | make calculations till specified offset |
| System.Int32 | position | return position part of calculation |
Returns
| Type | Description |
|---|---|
| System.Int32 | lines quantity in area from current Position tillOffset vaue |
Close()
Close current file
Declaration
public override void Close()
Overrides
ConvertToLinePosition(Int64, out Int32, out Int32)
Method convert offset to Line number and position in line
Declaration
public virtual void ConvertToLinePosition(long offset, out int line, out int position)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int64 | offset | Offset which must be converted to line and position values |
| System.Int32 | line | line part of offset |
| System.Int32 | position | position part of offset |
DetectFileEncoding()
Method try to detect file encoding
Declaration
public virtual Encoding DetectFileEncoding()
Returns
| Type | Description |
|---|---|
| System.Text.Encoding | Detect file encoding by preambles |
DetectFileNewLineStyle()
Method check file and try to detect which line end code is used in file
Declaration
public virtual NewLineStyle DetectFileNewLineStyle()
Returns
| Type | Description |
|---|---|
| NewLineStyle | in case of error NewLineStyle.Windows style returned |
Dispose()
Free resources of Token stream class
Declaration
public void Dispose()
Flush()
Flush changes from internal buffers to source streams
Declaration
public override void Flush()
Overrides
FromString(String)
Initializes TokenStream from string input
Declaration
public static TokenStream FromString(string buffer)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | buffer | String with input data |
Returns
| Type | Description |
|---|---|
| TokenStream | TokenStream Object |
GetEnumerator()
Method return enumerator which give us stream data by tokens
Declaration
public virtual IEnumerator GetEnumerator()
Returns
| Type |
|---|
| System.Collections.IEnumerator |
GetFastChar(Char)
According to CaseSensitive property value return case sensitive or case insensitive FastChar class instance.
Declaration
protected virtual TokenStream.FastChar GetFastChar(char ch)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Char | ch | Init new instance by char |
Returns
| Type | Description |
|---|---|
| TokenStream.FastChar | Reference on new instance of FastChar class |
GetLinesCount(Int64, Int64)
Calculates count of lines between to positions in the file
Declaration
public virtual int GetLinesCount(long startPos, long endPos)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int64 | startPos | Start position for calculating |
| System.Int64 | endPos | End position for calculating |
Returns
| Type | Description |
|---|---|
| System.Int32 | Count of lines |
GetMultiToken(Char[], out String)
Method check charecter from array for multi-symbols tokens and return quantity of used cherecters from array for token, also it return token. In case when nothing found return -1. Method try to find longest token from list.
Declaration
public virtual int GetMultiToken(char[] ch, out string token)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Char[] | ch | chars to check |
| System.String | token | found token |
Returns
| Type | Description |
|---|---|
| System.Int32 | Used chars from input array, otherwise -1 |
GetNewLineString(NewLineStyle)
Method convert enumeration to it string representation
Declaration
public virtual string GetNewLineString(NewLineStyle value)
Parameters
| Type | Name | Description |
|---|---|---|
| NewLineStyle | value | value to convert |
Returns
| Type | Description |
|---|---|
| System.String | end line string |
IsSplitTokenChar(Char)
Check does char belong to one symbols tokens separators or not
Declaration
public virtual bool IsSplitTokenChar(char ch)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Char | ch | char to test |
Returns
| Type | Description |
|---|---|
| System.Boolean | true - if char belong to split chars, otherwise false |
Peek()
Peek one byte from stream
Declaration
public virtual int Peek()
Returns
| Type | Description |
|---|---|
| System.Int32 | -1 if end of stream reached, otherwise one byte from stream |
PeekChar()
Method extract one char from stream
Declaration
public virtual int PeekChar()
Returns
| Type | Description |
|---|---|
| System.Int32 | -1 if end of stream, otherwise integer value of char |
PeekLine()
peek line from the stream
Declaration
public virtual string PeekLine()
Returns
| Type | Description |
|---|---|
| System.String | Exracted token |
PeekToken()
Peek Token from the Stream
Declaration
public virtual string PeekToken()
Returns
| Type | Description |
|---|---|
| System.String | string.Empty or null if end of stream, otherwise extracted token |
Read()
Reads one byte from stream
Declaration
public virtual int Read()
Returns
| Type | Description |
|---|---|
| System.Int32 | -1 if end of stream reached, otherwise one byte from stream |
Read(Byte[], Int32, Int32)
Reads data from the Stream
Declaration
public override int Read(byte[] buffer, int offset, int count)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Byte[] | buffer | Input Stream |
| System.Int32 | offset | Start Position |
| System.Int32 | count | Number of Symbols |
Returns
| Type | Description |
|---|---|
| System.Int32 | number of extracted bytes |
Overrides
Read(Char[], Int32, Int32)
Reads data from the Stream
Declaration
public virtual int Read(char[] buffer, int offset, int count)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Char[] | buffer | Source Stream |
| System.Int32 | offset | Start position |
| System.Int32 | count | Number of symbols |
Returns
| Type | Description |
|---|---|
| System.Int32 | number of extracted charecters |
ReadChar()
Read one char from stream and shift position of stream to next char
Declaration
public virtual int ReadChar()
Returns
| Type | Description |
|---|---|
| System.Int32 | -1 if end of stream, otherwise integer value of char |
ReadLine()
read single line
Declaration
public virtual string ReadLine()
Returns
| Type | Description |
|---|---|
| System.String | String.Empty if end of stream reached, otherwise line from file |
ReadToken()
Read one token from stream
Declaration
public virtual string ReadToken()
Returns
| Type | Description |
|---|---|
| System.String | null if end of stream reached, otherwise token string |
ReadTokens(String[], Int32, Int32)
Read mutliple tokens from stream into array
Declaration
public virtual int ReadTokens(string[] buffer, int position, int length)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String[] | buffer | array where extracted tokens must be placed |
| System.Int32 | position | start position in array |
| System.Int32 | length | quantity of tokens to extract |
Returns
| Type | Description |
|---|---|
| System.Int32 | quantity of extracted tokens |
Seek(Int64, SeekOrigin)
Sets position withing the stream
Declaration
public override long Seek(long offset, SeekOrigin origin)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int64 | offset | Start position |
| System.IO.SeekOrigin | origin | indicating the reference point used to obtain the new position |
Returns
| Type | Description |
|---|---|
| System.Int64 | new positions in stream |
Overrides
SeekOnTokenLength(String, Boolean, SeekOrigin)
Sets the position withing the Stream
Declaration
public virtual long SeekOnTokenLength(string token, bool bBack, SeekOrigin origin)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | token | Token |
| System.Boolean | bBack | bool bBack |
| System.IO.SeekOrigin | origin | indicating the reference point used to obtain the new position |
Returns
| Type | Description |
|---|---|
| System.Int64 | new position in stream |
SetLength(Int64)
Sets Length in the Stream
Declaration
public override void SetLength(long value)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int64 | value | Length of the Stream |
Overrides
SkipLine()
Moves current position in the stream to the next line
Declaration
public virtual void SkipLine()
Write(Byte[], Int32, Int32)
Writes data into Stream
Declaration
public override void Write(byte[] buffer, int offset, int count)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Byte[] | buffer | Data which will be writing |
| System.Int32 | offset | Start Position |
| System.Int32 | count | Number of Symbols |