@@ -91,17 +91,23 @@ private void Push<T>(T b)
91
91
public void WriteShort ( short s ) => Push ( s ) ;
92
92
public void WriteInt ( int i ) => Push ( i ) ;
93
93
public void WriteLong ( long l ) => Push ( l ) ;
94
- public void WriteFloatArray ( float [ ] f ) => Push ( f ) ;
95
- public void WriteDoubleArray ( double [ ] d ) => Push ( d ) ;
96
- public void WriteByteArray ( byte [ ] b ) => Push ( b ) ;
97
- public void WriteUShortArray ( ushort [ ] s ) => Push ( s ) ;
98
- public void WriteUIntArray ( uint [ ] i ) => Push ( i ) ;
99
- public void WriteULongArray ( ulong [ ] l ) => Push ( l ) ;
100
- public void WriteSByteArray ( sbyte [ ] b ) => Push ( b ) ;
101
- public void WriteShortArray ( short [ ] s ) => Push ( s ) ;
102
- public void WriteIntArray ( int [ ] i ) => Push ( i ) ;
103
- public void WriteLongArray ( long [ ] l ) => Push ( l ) ;
104
94
public void WriteString ( string s ) => Push ( s ) ;
95
+ public void WriteFloatArray ( float [ ] f , bool known = false ) => PushArray ( f , known ) ;
96
+ public void WriteDoubleArray ( double [ ] d , bool known = false ) => PushArray ( d , known ) ;
97
+ public void WriteByteArray ( byte [ ] b , bool known = false ) => PushArray ( b , known ) ;
98
+ public void WriteUShortArray ( ushort [ ] s , bool known = false ) => PushArray ( s , known ) ;
99
+ public void WriteUIntArray ( uint [ ] i , bool known = false ) => PushArray ( i , known ) ;
100
+ public void WriteULongArray ( ulong [ ] l , bool known = false ) => PushArray ( l , known ) ;
101
+ public void WriteSByteArray ( sbyte [ ] b , bool known = false ) => PushArray ( b , known ) ;
102
+ public void WriteShortArray ( short [ ] s , bool known = false ) => PushArray ( s , known ) ;
103
+ public void WriteIntArray ( int [ ] i , bool known = false ) => PushArray ( i , known ) ;
104
+ public void WriteLongArray ( long [ ] l , bool known = false ) => PushArray ( l , known ) ;
105
+
106
+ private void PushArray < T > ( T [ ] t , bool knownSize = false )
107
+ {
108
+ if ( ! knownSize ) Push ( t ) ;
109
+ else foreach ( T t1 in t ) Push ( t1 ) ;
110
+ }
105
111
106
112
public long Finalize ( ref byte [ ] buffer )
107
113
{
@@ -139,7 +145,7 @@ private static void Serialize<T>(T t, byte[] writeTo, ref long bitOffset)
139
145
if ( type . IsArray )
140
146
{
141
147
var array = t as Array ;
142
- Serialize ( ( ushort ) array . Length , writeTo , ref bitOffset ) ;
148
+ Serialize ( ( uint ) array . Length , writeTo , ref bitOffset ) ;
143
149
foreach ( var element in array )
144
150
Serialize ( element , writeTo , ref bitOffset ) ;
145
151
}
0 commit comments