|
@@ -96,11 +96,11 @@ Class Stream Extends std.resource.Resource
|
|
#end
|
|
#end
|
|
Property ByteOrder:ByteOrder()
|
|
Property ByteOrder:ByteOrder()
|
|
|
|
|
|
- Return _tmpbuf.ByteOrder
|
|
|
|
|
|
+ Return _swap ? ByteOrder.BigEndian Else ByteOrder.LittleEndian
|
|
|
|
|
|
Setter( byteOrder:ByteOrder )
|
|
Setter( byteOrder:ByteOrder )
|
|
|
|
|
|
- _tmpbuf=(byteOrder=ByteOrder.BigEndian ? _BEbuf Else _LEbuf)
|
|
|
|
|
|
+ _swap=(byteOrder=ByteOrder.BigEndian)
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Reads as many bytes as possible from a stream into memory.
|
|
#rem monkeydoc Reads as many bytes as possible from a stream into memory.
|
|
@@ -121,7 +121,7 @@ Class Stream Extends std.resource.Resource
|
|
Local pos:=0
|
|
Local pos:=0
|
|
|
|
|
|
While pos<count
|
|
While pos<count
|
|
- Local n:=Read( Cast<Byte Ptr>( buf )+pos,count-pos )
|
|
|
|
|
|
+ Local n:=Read( Cast<UByte Ptr>( buf )+pos,count-pos )
|
|
If n<=0 Exit
|
|
If n<=0 Exit
|
|
pos+=n
|
|
pos+=n
|
|
Wend
|
|
Wend
|
|
@@ -138,7 +138,7 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
Local data:=New DataBuffer( count )
|
|
Local data:=New DataBuffer( count )
|
|
Local n:=ReadAll( data,0,count )
|
|
Local n:=ReadAll( data,0,count )
|
|
- If n>=count Return data
|
|
|
|
|
|
+ If n=count Return data
|
|
Local tmp:=data.Slice( 0,n )
|
|
Local tmp:=data.Slice( 0,n )
|
|
data.Discard()
|
|
data.Discard()
|
|
Return tmp
|
|
Return tmp
|
|
@@ -168,7 +168,7 @@ Class Stream Extends std.resource.Resource
|
|
buf.Discard()
|
|
buf.Discard()
|
|
Return data
|
|
Return data
|
|
End
|
|
End
|
|
-
|
|
|
|
|
|
+
|
|
#rem monkeydoc Reads data from the stream and throws it away.
|
|
#rem monkeydoc Reads data from the stream and throws it away.
|
|
|
|
|
|
@param count The number of bytes to skip.
|
|
@param count The number of bytes to skip.
|
|
@@ -199,9 +199,9 @@ Class Stream Extends std.resource.Resource
|
|
#end
|
|
#end
|
|
Method ReadByte:Byte()
|
|
Method ReadByte:Byte()
|
|
|
|
|
|
- If Read( _tmpbuf.Data,1 )=1 Return _tmpbuf.PeekByte( 0 )
|
|
|
|
-
|
|
|
|
- Return 0
|
|
|
|
|
|
+ Local n:Byte
|
|
|
|
+ Read( Varptr n,1 )
|
|
|
|
+ Return n
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Reads an unsigned byte from the stream.
|
|
#rem monkeydoc Reads an unsigned byte from the stream.
|
|
@@ -211,9 +211,9 @@ Class Stream Extends std.resource.Resource
|
|
#end
|
|
#end
|
|
Method ReadUByte:UByte()
|
|
Method ReadUByte:UByte()
|
|
|
|
|
|
- If Read( _tmpbuf.Data,1 )=1 Return _tmpbuf.PeekUByte( 0 )
|
|
|
|
-
|
|
|
|
- Return 0
|
|
|
|
|
|
+ Local n:UByte
|
|
|
|
+ Read( Varptr n,1 )
|
|
|
|
+ Return n
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Reads a 16 bit short from the stream.
|
|
#rem monkeydoc Reads a 16 bit short from the stream.
|
|
@@ -222,10 +222,11 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method ReadShort:Short()
|
|
Method ReadShort:Short()
|
|
-
|
|
|
|
- If ReadAll( _tmpbuf.Data,2 )=2 Return _tmpbuf.PeekShort( 0 )
|
|
|
|
-
|
|
|
|
- Return 0
|
|
|
|
|
|
+
|
|
|
|
+ Local n:Short
|
|
|
|
+ If Read( Varptr n,2 )<>2 n=0
|
|
|
|
+ If _swap Swap2( Varptr n )
|
|
|
|
+ Return n
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Reads a 16 bit unsigned short from the stream.
|
|
#rem monkeydoc Reads a 16 bit unsigned short from the stream.
|
|
@@ -234,10 +235,11 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method ReadUShort:UShort()
|
|
Method ReadUShort:UShort()
|
|
-
|
|
|
|
- If ReadAll( _tmpbuf.Data,2 )=2 Return _tmpbuf.PeekUShort( 0 )
|
|
|
|
-
|
|
|
|
- Return 0
|
|
|
|
|
|
+
|
|
|
|
+ Local n:UShort
|
|
|
|
+ If Read( Varptr n,2 )<>2 n=0
|
|
|
|
+ If _swap Swap2( Varptr n )
|
|
|
|
+ Return n
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Reads a 32 bit int from the stream.
|
|
#rem monkeydoc Reads a 32 bit int from the stream.
|
|
@@ -247,9 +249,10 @@ Class Stream Extends std.resource.Resource
|
|
#end
|
|
#end
|
|
Method ReadInt:Int()
|
|
Method ReadInt:Int()
|
|
|
|
|
|
- If ReadAll( _tmpbuf.Data,4 )=4 Return _tmpbuf.PeekInt( 0 )
|
|
|
|
-
|
|
|
|
- Return 0
|
|
|
|
|
|
+ Local n:Int
|
|
|
|
+ If Read( Varptr n,4 )<>4 n=0
|
|
|
|
+ If _swap Swap4( Varptr n )
|
|
|
|
+ Return n
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Reads a 32 bit unsigned int from the stream.
|
|
#rem monkeydoc Reads a 32 bit unsigned int from the stream.
|
|
@@ -259,9 +262,10 @@ Class Stream Extends std.resource.Resource
|
|
#end
|
|
#end
|
|
Method ReadUInt:UInt()
|
|
Method ReadUInt:UInt()
|
|
|
|
|
|
- If ReadAll( _tmpbuf.Data,4 )=4 Return _tmpbuf.PeekUInt( 0 )
|
|
|
|
-
|
|
|
|
- Return 0
|
|
|
|
|
|
+ Local n:UInt
|
|
|
|
+ If Read( Varptr n,4 )<>4 n=0
|
|
|
|
+ If _swap Swap4( Varptr n )
|
|
|
|
+ Return n
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Reads a 32 bit long from the stream.
|
|
#rem monkeydoc Reads a 32 bit long from the stream.
|
|
@@ -271,9 +275,10 @@ Class Stream Extends std.resource.Resource
|
|
#end
|
|
#end
|
|
Method ReadLong:Long()
|
|
Method ReadLong:Long()
|
|
|
|
|
|
- If ReadAll( _tmpbuf.Data,8 )=8 Return _tmpbuf.PeekLong( 0 )
|
|
|
|
-
|
|
|
|
- Return 0
|
|
|
|
|
|
+ Local n:Long
|
|
|
|
+ If Read( Varptr n,8 )<>8 n=0
|
|
|
|
+ If _swap Swap8( Varptr n )
|
|
|
|
+ Return n
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Reads a 32 bit unsigned long from the stream.
|
|
#rem monkeydoc Reads a 32 bit unsigned long from the stream.
|
|
@@ -283,9 +288,10 @@ Class Stream Extends std.resource.Resource
|
|
#end
|
|
#end
|
|
Method ReadULong:ULong()
|
|
Method ReadULong:ULong()
|
|
|
|
|
|
- If ReadAll( _tmpbuf.Data,8 )=8 Return _tmpbuf.PeekULong( 0 )
|
|
|
|
-
|
|
|
|
- Return 0
|
|
|
|
|
|
+ Local n:ULong
|
|
|
|
+ If Read( Varptr n,8 )<>8 n=0
|
|
|
|
+ If _swap Swap8( Varptr n )
|
|
|
|
+ Return n
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Reads a 32 bit float from the stream.
|
|
#rem monkeydoc Reads a 32 bit float from the stream.
|
|
@@ -294,10 +300,11 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method ReadFloat:Float()
|
|
Method ReadFloat:Float()
|
|
-
|
|
|
|
- If ReadAll( _tmpbuf.Data,4 )=4 Return _tmpbuf.PeekFloat( 0 )
|
|
|
|
|
|
|
|
- Return 0
|
|
|
|
|
|
+ Local n:Float
|
|
|
|
+ If Read( Varptr n,4 )<>4 n=0
|
|
|
|
+ If _swap Swap4( Varptr n )
|
|
|
|
+ Return n
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Reads a 64 bit double from the stream.
|
|
#rem monkeydoc Reads a 64 bit double from the stream.
|
|
@@ -307,9 +314,10 @@ Class Stream Extends std.resource.Resource
|
|
#end
|
|
#end
|
|
Method ReadDouble:Double()
|
|
Method ReadDouble:Double()
|
|
|
|
|
|
- If ReadAll( _tmpbuf.Data,8 )=8 Return _tmpbuf.PeekDouble( 0 )
|
|
|
|
-
|
|
|
|
- Return 0
|
|
|
|
|
|
+ Local n:Double
|
|
|
|
+ If Read( Varptr n,8 )<>8 n=0
|
|
|
|
+ If _swap Swap8( Varptr n )
|
|
|
|
+ Return n
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Reads the entire stream into a string.
|
|
#rem monkeydoc Reads the entire stream into a string.
|
|
@@ -329,7 +337,7 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method ReadSizedString:String()
|
|
Method ReadSizedString:String()
|
|
- Local n:=ReadInt()
|
|
|
|
|
|
+ Local n:=ReadInt()
|
|
Local data:=ReadAll( n )
|
|
Local data:=ReadAll( n )
|
|
Local str:=data.PeekString( 0 )
|
|
Local str:=data.PeekString( 0 )
|
|
data.Discard()
|
|
data.Discard()
|
|
@@ -377,8 +385,8 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method WriteByte( data:Byte )
|
|
Method WriteByte( data:Byte )
|
|
- _tmpbuf.PokeByte( 0,data )
|
|
|
|
- Write( _tmpbuf.Data,1 )
|
|
|
|
|
|
+
|
|
|
|
+ Write( Varptr data,1 )
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Write an unsigned byte to the stream.
|
|
#rem monkeydoc Write an unsigned byte to the stream.
|
|
@@ -387,8 +395,8 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method WriteUByte( data:UByte )
|
|
Method WriteUByte( data:UByte )
|
|
- _tmpbuf.PokeUByte( 0,data )
|
|
|
|
- Write( _tmpbuf.Data,1 )
|
|
|
|
|
|
+
|
|
|
|
+ Write( Varptr data,1 )
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Writes a 16 bit short to the stream.
|
|
#rem monkeydoc Writes a 16 bit short to the stream.
|
|
@@ -397,8 +405,9 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method WriteShort( data:Short )
|
|
Method WriteShort( data:Short )
|
|
- _tmpbuf.PokeShort( 0,data )
|
|
|
|
- Write( _tmpbuf.Data,2 )
|
|
|
|
|
|
+
|
|
|
|
+ If _swap Swap2( Varptr data )
|
|
|
|
+ Write( Varptr data,2 )
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Writes a 16 bit unsigned short to the stream.
|
|
#rem monkeydoc Writes a 16 bit unsigned short to the stream.
|
|
@@ -407,8 +416,9 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method WriteUShort( data:UShort )
|
|
Method WriteUShort( data:UShort )
|
|
- _tmpbuf.PokeUShort( 0,data )
|
|
|
|
- Write( _tmpbuf.Data,2 )
|
|
|
|
|
|
+
|
|
|
|
+ If _swap Swap2( Varptr data )
|
|
|
|
+ Write( Varptr data,2 )
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Writes a 32 bit int to the stream.
|
|
#rem monkeydoc Writes a 32 bit int to the stream.
|
|
@@ -417,8 +427,9 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method WriteInt( data:Int )
|
|
Method WriteInt( data:Int )
|
|
- _tmpbuf.PokeInt( 0,data )
|
|
|
|
- Write( _tmpbuf.Data,4 )
|
|
|
|
|
|
+
|
|
|
|
+ If _swap Swap4( Varptr data )
|
|
|
|
+ Write( Varptr data,4 )
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Writes a 32 bit unsigned int to the stream.
|
|
#rem monkeydoc Writes a 32 bit unsigned int to the stream.
|
|
@@ -427,8 +438,9 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method WriteUInt( data:UInt )
|
|
Method WriteUInt( data:UInt )
|
|
- _tmpbuf.PokeUInt( 0,data )
|
|
|
|
- Write( _tmpbuf.Data,4 )
|
|
|
|
|
|
+
|
|
|
|
+ If _swap Swap4( Varptr data )
|
|
|
|
+ Write( Varptr data,4 )
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Writes a 64 bit long to the stream.
|
|
#rem monkeydoc Writes a 64 bit long to the stream.
|
|
@@ -437,8 +449,9 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method WriteLong( data:Long )
|
|
Method WriteLong( data:Long )
|
|
- _tmpbuf.PokeLong( 0,data )
|
|
|
|
- Write( _tmpbuf.Data,8 )
|
|
|
|
|
|
+
|
|
|
|
+ If _swap Swap8( Varptr data )
|
|
|
|
+ Write( Varptr data,8 )
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Writes a 64 bit unsigned long to the stream.
|
|
#rem monkeydoc Writes a 64 bit unsigned long to the stream.
|
|
@@ -447,8 +460,9 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method WriteULong( data:ULong )
|
|
Method WriteULong( data:ULong )
|
|
- _tmpbuf.PokeULong( 0,data )
|
|
|
|
- Write( _tmpbuf.Data,8 )
|
|
|
|
|
|
+
|
|
|
|
+ If _swap Swap8( Varptr data )
|
|
|
|
+ Write( Varptr data,8 )
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Writes a 32 bit float to the stream,
|
|
#rem monkeydoc Writes a 32 bit float to the stream,
|
|
@@ -457,8 +471,9 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method WriteFloat:Void( data:Float )
|
|
Method WriteFloat:Void( data:Float )
|
|
- _tmpbuf.PokeFloat( 0,data )
|
|
|
|
- Write( _tmpbuf.Data,4 )
|
|
|
|
|
|
+
|
|
|
|
+ If _swap Swap4( Varptr data )
|
|
|
|
+ Write( Varptr data,4 )
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Writes a 64 bit double to the stream.
|
|
#rem monkeydoc Writes a 64 bit double to the stream.
|
|
@@ -467,8 +482,9 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method WriteDouble( data:Double )
|
|
Method WriteDouble( data:Double )
|
|
- _tmpbuf.PokeDouble( 0,data )
|
|
|
|
- Write( _tmpbuf.Data,8 )
|
|
|
|
|
|
+
|
|
|
|
+ If _swap Swap8( Varptr data )
|
|
|
|
+ Write( Varptr data,8 )
|
|
End
|
|
End
|
|
|
|
|
|
#rem monkeydoc Writes a string to the stream (NOT null terminated).
|
|
#rem monkeydoc Writes a string to the stream (NOT null terminated).
|
|
@@ -477,6 +493,7 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method WriteString( str:String )
|
|
Method WriteString( str:String )
|
|
|
|
+
|
|
Local buf:=New DataBuffer( str.CStringLength )
|
|
Local buf:=New DataBuffer( str.CStringLength )
|
|
buf.PokeString( 0,str )
|
|
buf.PokeString( 0,str )
|
|
Write( buf,0,buf.Length )
|
|
Write( buf,0,buf.Length )
|
|
@@ -489,6 +506,7 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method WriteSizedString( str:String )
|
|
Method WriteSizedString( str:String )
|
|
|
|
+
|
|
WriteInt( str.CStringLength )
|
|
WriteInt( str.CStringLength )
|
|
WriteString( str )
|
|
WriteString( str )
|
|
End
|
|
End
|
|
@@ -499,6 +517,7 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method WriteCString( str:String )
|
|
Method WriteCString( str:String )
|
|
|
|
+
|
|
WriteString( str )
|
|
WriteString( str )
|
|
WriteByte( 0 )
|
|
WriteByte( 0 )
|
|
End
|
|
End
|
|
@@ -509,6 +528,7 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
#end
|
|
#end
|
|
Method WriteLine( str:String )
|
|
Method WriteLine( str:String )
|
|
|
|
+
|
|
WriteString( str )
|
|
WriteString( str )
|
|
WriteString( "~r~n" )
|
|
WriteString( "~r~n" )
|
|
End
|
|
End
|
|
@@ -542,7 +562,8 @@ Class Stream Extends std.resource.Resource
|
|
Protected
|
|
Protected
|
|
|
|
|
|
Method New()
|
|
Method New()
|
|
- _tmpbuf=_LEbuf
|
|
|
|
|
|
+
|
|
|
|
+ _swap=false
|
|
End
|
|
End
|
|
|
|
|
|
Method OnClose() Virtual
|
|
Method OnClose() Virtual
|
|
@@ -552,9 +573,21 @@ Class Stream Extends std.resource.Resource
|
|
|
|
|
|
Private
|
|
Private
|
|
|
|
|
|
- Field _tmpbuf:DataBuffer
|
|
|
|
|
|
+ Field _swap:Bool
|
|
|
|
|
|
- Global _BEbuf:=New DataBuffer( 8,std.memory.ByteOrder.BigEndian )
|
|
|
|
- Global _LEbuf:=New DataBuffer( 8,std.memory.ByteOrder.LittleEndian )
|
|
|
|
|
|
+ Function Swap2( v:Void Ptr )
|
|
|
|
+ Local t:=Cast<UShort Ptr>( v )[0]
|
|
|
|
+ Cast<UShort Ptr>( v )[0]=(t Shr 8 & $ff) | (t & $ff) Shl 8
|
|
|
|
+ End
|
|
|
|
+
|
|
|
|
+ Function Swap4( v:Void Ptr )
|
|
|
|
+ Local t:=Cast<UInt Ptr>( v )[0]
|
|
|
|
+ Cast<UInt Ptr>( v )[0]=(t Shr 24 & $ff) | (t & $ff) Shl 24 | (t Shr 8 & $ff00) | (t & $ff00) Shl 8
|
|
|
|
+ End
|
|
|
|
+
|
|
|
|
+ Function Swap8( v:Void Ptr )
|
|
|
|
+ Local t:=Cast<ULong Ptr>( v )[0]
|
|
|
|
+ Cast<ULong Ptr>( v )[0]=(t Shr 56 & $ff) | (t & $ff) Shl 56 | (t Shr 40 & $ff00) | (t & $ff00) Shl 40 | (t Shr 24 & $ff0000) | (t & $ff0000) Shl 24 | (t Shr 8 & $ff000000) | (t & $ff000000) Shl 8
|
|
|
|
+ End
|
|
|
|
|
|
End
|
|
End
|