@@ -91,17 +91,23 @@ private void Push<T>(T b)
9191 public void WriteShort ( short s ) => Push ( s ) ;
9292 public void WriteInt ( int i ) => Push ( i ) ;
9393 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 ) ;
10494 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+ }
105111
106112 public long Finalize ( ref byte [ ] buffer )
107113 {
@@ -139,7 +145,7 @@ private static void Serialize<T>(T t, byte[] writeTo, ref long bitOffset)
139145 if ( type . IsArray )
140146 {
141147 var array = t as Array ;
142- Serialize ( ( ushort ) array . Length , writeTo , ref bitOffset ) ;
148+ Serialize ( ( uint ) array . Length , writeTo , ref bitOffset ) ;
143149 foreach ( var element in array )
144150 Serialize ( element , writeTo , ref bitOffset ) ;
145151 }
0 commit comments