@@ -60,7 +60,7 @@ public Struct(params object[] args) {
6060 }
6161
6262 [ Documentation ( "creates a new uninitialized struct object - all arguments are ignored" ) ]
63- public Struct ( [ ParamDictionary ] IDictionary < object , object > kwArgs , params object [ ] args ) {
63+ public Struct ( [ ParamDictionary ] IDictionary < object , object > kwArgs , params object [ ] args ) {
6464 }
6565
6666 [ Documentation ( "initializes or re-initializes the compiled struct object with a new format" ) ]
@@ -372,7 +372,6 @@ public void pack_into(CodeContext/*!*/ context, [NotNone] ByteArray/*!*/ buffer,
372372 System . Diagnostics . Debug . Assert ( res_idx == res . Length ) ;
373373
374374 return PythonTuple . MakeTuple ( res ) ;
375-
376375 }
377376
378377 public PythonTuple /*!*/ unpack ( CodeContext /*!*/ context , [ NotNone ] ArrayModule . array /*!*/ buffer )
@@ -1207,16 +1206,16 @@ private static void CheckRange(CodeContext context, int val, int min, int max, s
12071206 #region Data creater helpers
12081207
12091208 internal static bool CreateBoolValue ( CodeContext /*!*/ context , ref int index , IList < byte > data ) {
1210- return ( int ) ReadData ( context , ref index , data ) != 0 ;
1209+ return data [ index ++ ] != 0 ;
12111210 }
12121211
12131212 internal static byte CreateCharValue ( CodeContext /*!*/ context , ref int index , IList < byte > data ) {
1214- return ReadData ( context , ref index , data ) ;
1213+ return data [ index ++ ] ;
12151214 }
12161215
12171216 internal static short CreateShortValue ( CodeContext /*!*/ context , ref int index , bool fLittleEndian , IList < byte > data ) {
1218- byte b1 = ( byte ) ReadData ( context , ref index , data ) ;
1219- byte b2 = ( byte ) ReadData ( context , ref index , data ) ;
1217+ byte b1 = data [ index ++ ] ;
1218+ byte b2 = data [ index ++ ] ;
12201219
12211220 if ( fLittleEndian ) {
12221221 return ( short ) ( ( b2 << 8 ) | b1 ) ;
@@ -1226,8 +1225,8 @@ internal static short CreateShortValue(CodeContext/*!*/ context, ref int index,
12261225 }
12271226
12281227 internal static ushort CreateUShortValue ( CodeContext /*!*/ context , ref int index , bool fLittleEndian , IList < byte > data ) {
1229- byte b1 = ( byte ) ReadData ( context , ref index , data ) ;
1230- byte b2 = ( byte ) ReadData ( context , ref index , data ) ;
1228+ byte b1 = data [ index ++ ] ;
1229+ byte b2 = data [ index ++ ] ;
12311230
12321231 if ( fLittleEndian ) {
12331232 return ( ushort ) ( ( b2 << 8 ) | b1 ) ;
@@ -1238,16 +1237,16 @@ internal static ushort CreateUShortValue(CodeContext/*!*/ context, ref int index
12381237
12391238 internal static float CreateFloatValue ( CodeContext /*!*/ context , ref int index , bool fLittleEndian , IList < byte > data ) {
12401239 byte [ ] bytes = new byte [ 4 ] ;
1241- if ( fLittleEndian ) {
1242- bytes [ 0 ] = ( byte ) ReadData ( context , ref index , data ) ;
1243- bytes [ 1 ] = ( byte ) ReadData ( context , ref index , data ) ;
1244- bytes [ 2 ] = ( byte ) ReadData ( context , ref index , data ) ;
1245- bytes [ 3 ] = ( byte ) ReadData ( context , ref index , data ) ;
1240+ if ( fLittleEndian == BitConverter . IsLittleEndian ) {
1241+ bytes [ 0 ] = data [ index ++ ] ;
1242+ bytes [ 1 ] = data [ index ++ ] ;
1243+ bytes [ 2 ] = data [ index ++ ] ;
1244+ bytes [ 3 ] = data [ index ++ ] ;
12461245 } else {
1247- bytes [ 3 ] = ( byte ) ReadData ( context , ref index , data ) ;
1248- bytes [ 2 ] = ( byte ) ReadData ( context , ref index , data ) ;
1249- bytes [ 1 ] = ( byte ) ReadData ( context , ref index , data ) ;
1250- bytes [ 0 ] = ( byte ) ReadData ( context , ref index , data ) ;
1246+ bytes [ 3 ] = data [ index ++ ] ;
1247+ bytes [ 2 ] = data [ index ++ ] ;
1248+ bytes [ 1 ] = data [ index ++ ] ;
1249+ bytes [ 0 ] = data [ index ++ ] ;
12511250 }
12521251 float res = BitConverter . ToSingle ( bytes , 0 ) ;
12531252
@@ -1261,10 +1260,10 @@ internal static float CreateFloatValue(CodeContext/*!*/ context, ref int index,
12611260 }
12621261
12631262 internal static int CreateIntValue ( CodeContext /*!*/ context , ref int index , bool fLittleEndian , IList < byte > data ) {
1264- byte b1 = ( byte ) ReadData ( context , ref index , data ) ;
1265- byte b2 = ( byte ) ReadData ( context , ref index , data ) ;
1266- byte b3 = ( byte ) ReadData ( context , ref index , data ) ;
1267- byte b4 = ( byte ) ReadData ( context , ref index , data ) ;
1263+ byte b1 = data [ index ++ ] ;
1264+ byte b2 = data [ index ++ ] ;
1265+ byte b3 = data [ index ++ ] ;
1266+ byte b4 = data [ index ++ ] ;
12681267
12691268 if ( fLittleEndian )
12701269 return ( int ) ( ( b4 << 24 ) | ( b3 << 16 ) | ( b2 << 8 ) | b1 ) ;
@@ -1273,10 +1272,10 @@ internal static int CreateIntValue(CodeContext/*!*/ context, ref int index, bool
12731272 }
12741273
12751274 internal static uint CreateUIntValue ( CodeContext /*!*/ context , ref int index , bool fLittleEndian , IList < byte > data ) {
1276- byte b1 = ( byte ) ReadData ( context , ref index , data ) ;
1277- byte b2 = ( byte ) ReadData ( context , ref index , data ) ;
1278- byte b3 = ( byte ) ReadData ( context , ref index , data ) ;
1279- byte b4 = ( byte ) ReadData ( context , ref index , data ) ;
1275+ byte b1 = data [ index ++ ] ;
1276+ byte b2 = data [ index ++ ] ;
1277+ byte b3 = data [ index ++ ] ;
1278+ byte b4 = data [ index ++ ] ;
12801279
12811280 if ( fLittleEndian )
12821281 return ( uint ) ( ( b4 << 24 ) | ( b3 << 16 ) | ( b2 << 8 ) | b1 ) ;
@@ -1285,14 +1284,14 @@ internal static uint CreateUIntValue(CodeContext/*!*/ context, ref int index, bo
12851284 }
12861285
12871286 internal static long CreateLongValue ( CodeContext /*!*/ context , ref int index , bool fLittleEndian , IList < byte > data ) {
1288- long b1 = ( byte ) ReadData ( context , ref index , data ) ;
1289- long b2 = ( byte ) ReadData ( context , ref index , data ) ;
1290- long b3 = ( byte ) ReadData ( context , ref index , data ) ;
1291- long b4 = ( byte ) ReadData ( context , ref index , data ) ;
1292- long b5 = ( byte ) ReadData ( context , ref index , data ) ;
1293- long b6 = ( byte ) ReadData ( context , ref index , data ) ;
1294- long b7 = ( byte ) ReadData ( context , ref index , data ) ;
1295- long b8 = ( byte ) ReadData ( context , ref index , data ) ;
1287+ long b1 = data [ index ++ ] ;
1288+ long b2 = data [ index ++ ] ;
1289+ long b3 = data [ index ++ ] ;
1290+ long b4 = data [ index ++ ] ;
1291+ long b5 = data [ index ++ ] ;
1292+ long b6 = data [ index ++ ] ;
1293+ long b7 = data [ index ++ ] ;
1294+ long b8 = data [ index ++ ] ;
12961295
12971296 if ( fLittleEndian )
12981297 return ( long ) ( ( b8 << 56 ) | ( b7 << 48 ) | ( b6 << 40 ) | ( b5 << 32 ) |
@@ -1303,14 +1302,14 @@ internal static long CreateLongValue(CodeContext/*!*/ context, ref int index, bo
13031302 }
13041303
13051304 internal static ulong CreateULongValue ( CodeContext /*!*/ context , ref int index , bool fLittleEndian , IList < byte > data ) {
1306- ulong b1 = ( byte ) ReadData ( context , ref index , data ) ;
1307- ulong b2 = ( byte ) ReadData ( context , ref index , data ) ;
1308- ulong b3 = ( byte ) ReadData ( context , ref index , data ) ;
1309- ulong b4 = ( byte ) ReadData ( context , ref index , data ) ;
1310- ulong b5 = ( byte ) ReadData ( context , ref index , data ) ;
1311- ulong b6 = ( byte ) ReadData ( context , ref index , data ) ;
1312- ulong b7 = ( byte ) ReadData ( context , ref index , data ) ;
1313- ulong b8 = ( byte ) ReadData ( context , ref index , data ) ;
1305+ ulong b1 = data [ index ++ ] ;
1306+ ulong b2 = data [ index ++ ] ;
1307+ ulong b3 = data [ index ++ ] ;
1308+ ulong b4 = data [ index ++ ] ;
1309+ ulong b5 = data [ index ++ ] ;
1310+ ulong b6 = data [ index ++ ] ;
1311+ ulong b7 = data [ index ++ ] ;
1312+ ulong b8 = data [ index ++ ] ;
13141313 if ( fLittleEndian )
13151314 return ( ulong ) ( ( b8 << 56 ) | ( b7 << 48 ) | ( b6 << 40 ) | ( b5 << 32 ) |
13161315 ( b4 << 24 ) | ( b3 << 16 ) | ( b2 << 8 ) | b1 ) ;
@@ -1321,24 +1320,24 @@ internal static ulong CreateULongValue(CodeContext/*!*/ context, ref int index,
13211320
13221321 internal static double CreateDoubleValue ( CodeContext /*!*/ context , ref int index , bool fLittleEndian , IList < byte > data ) {
13231322 byte [ ] bytes = new byte [ 8 ] ;
1324- if ( fLittleEndian ) {
1325- bytes [ 0 ] = ( byte ) ReadData ( context , ref index , data ) ;
1326- bytes [ 1 ] = ( byte ) ReadData ( context , ref index , data ) ;
1327- bytes [ 2 ] = ( byte ) ReadData ( context , ref index , data ) ;
1328- bytes [ 3 ] = ( byte ) ReadData ( context , ref index , data ) ;
1329- bytes [ 4 ] = ( byte ) ReadData ( context , ref index , data ) ;
1330- bytes [ 5 ] = ( byte ) ReadData ( context , ref index , data ) ;
1331- bytes [ 6 ] = ( byte ) ReadData ( context , ref index , data ) ;
1332- bytes [ 7 ] = ( byte ) ReadData ( context , ref index , data ) ;
1323+ if ( fLittleEndian == BitConverter . IsLittleEndian ) {
1324+ bytes [ 0 ] = data [ index ++ ] ;
1325+ bytes [ 1 ] = data [ index ++ ] ;
1326+ bytes [ 2 ] = data [ index ++ ] ;
1327+ bytes [ 3 ] = data [ index ++ ] ;
1328+ bytes [ 4 ] = data [ index ++ ] ;
1329+ bytes [ 5 ] = data [ index ++ ] ;
1330+ bytes [ 6 ] = data [ index ++ ] ;
1331+ bytes [ 7 ] = data [ index ++ ] ;
13331332 } else {
1334- bytes [ 7 ] = ( byte ) ReadData ( context , ref index , data ) ;
1335- bytes [ 6 ] = ( byte ) ReadData ( context , ref index , data ) ;
1336- bytes [ 5 ] = ( byte ) ReadData ( context , ref index , data ) ;
1337- bytes [ 4 ] = ( byte ) ReadData ( context , ref index , data ) ;
1338- bytes [ 3 ] = ( byte ) ReadData ( context , ref index , data ) ;
1339- bytes [ 2 ] = ( byte ) ReadData ( context , ref index , data ) ;
1340- bytes [ 1 ] = ( byte ) ReadData ( context , ref index , data ) ;
1341- bytes [ 0 ] = ( byte ) ReadData ( context , ref index , data ) ;
1333+ bytes [ 7 ] = data [ index ++ ] ;
1334+ bytes [ 6 ] = data [ index ++ ] ;
1335+ bytes [ 5 ] = data [ index ++ ] ;
1336+ bytes [ 4 ] = data [ index ++ ] ;
1337+ bytes [ 3 ] = data [ index ++ ] ;
1338+ bytes [ 2 ] = data [ index ++ ] ;
1339+ bytes [ 1 ] = data [ index ++ ] ;
1340+ bytes [ 0 ] = data [ index ++ ] ;
13421341 }
13431342
13441343 double res = BitConverter . ToDouble ( bytes , 0 ) ;
@@ -1354,30 +1353,25 @@ internal static double CreateDoubleValue(CodeContext/*!*/ context, ref int index
13541353 internal static Bytes CreateString ( CodeContext /*!*/ context , ref int index , int count , IList < byte > data ) {
13551354 using var res = new MemoryStream ( ) ;
13561355 for ( int i = 0 ; i < count ; i ++ ) {
1357- res . WriteByte ( ReadData ( context , ref index , data ) ) ;
1356+ res . WriteByte ( data [ index ++ ] ) ;
13581357 }
13591358 return Bytes . Make ( res . ToArray ( ) ) ;
13601359 }
13611360
13621361
13631362 internal static Bytes CreatePascalString ( CodeContext /*!*/ context , ref int index , int count , IList < byte > data ) {
1364- int realLen = ( int ) ReadData ( context , ref index , data ) ;
1363+ int realLen = ( int ) data [ index ++ ] ;
13651364 using var res = new MemoryStream ( ) ;
13661365 for ( int i = 0 ; i < realLen ; i ++ ) {
1367- res . WriteByte ( ReadData ( context , ref index , data ) ) ;
1366+ res . WriteByte ( data [ index ++ ] ) ;
13681367 }
13691368 for ( int i = realLen ; i < count ; i ++ ) {
13701369 // throw away null bytes
1371- ReadData ( context , ref index , data ) ;
1370+ index ++ ;
13721371 }
13731372 return Bytes . Make ( res . ToArray ( ) ) ;
13741373 }
13751374
1376- private static byte ReadData ( CodeContext /*!*/ context , ref int index , IList < byte > data ) {
1377- if ( index >= data . Count ) throw Error ( context , "not enough data while reading" ) ;
1378-
1379- return data [ index ++ ] ;
1380- }
13811375 #endregion
13821376
13831377 #region Misc. Private APIs
0 commit comments