5151
5252 StructContext = ref object of RootObj
5353 byteOrder: Endianness
54- nativeAlignment: int
55- nativeSize: int
5654 buffer: string
5755 offset: int
5856 repeat: int
6765 'h' : sizeof (int16 ),
6866 'H' : sizeof (uint16 ),
6967 'i' : sizeof (int32 ),
70- 'l' : sizeof (int32 ),
7168 'I' : sizeof (uint32 ),
72- 'L' : sizeof (uint32 ),
7369 'q' : sizeof (int64 ),
7470 'Q' : sizeof (uint64 ),
7571 'f' : sizeof (float32 ),
@@ -137,8 +133,6 @@ proc newStructString*(s: string): StructNode =
137133proc newStructContext (): StructContext =
138134 new (result )
139135 result .byteOrder = system.cpuEndian
140- result .nativeSize = 1
141- result .nativeAlignment = 1
142136 result .offset = 0
143137 result .repeat = 1
144138
@@ -229,20 +223,12 @@ proc parse_prefix(ctx: StructContext, f: char) =
229223 case f
230224 of '=' :
231225 ctx.byteOrder = system.cpuEndian
232- ctx.nativeSize = 0
233- ctx.nativeAlignment = 0
234226 of '<' :
235227 ctx.byteOrder = littleEndian
236- ctx.nativeSize = 0
237- ctx.nativeAlignment = 0
238228 of '>' , '!' :
239229 ctx.byteOrder = bigEndian
240- ctx.nativeSize = 0
241- ctx.nativeAlignment = 0
242230 else :
243231 ctx.byteOrder = system.cpuEndian
244- ctx.nativeSize = 1
245- ctx.nativeAlignment = 1
246232
247233proc load_16 * [T:byte | char | int8 | uint8 ](a, b: T, endian: Endianness ): int16 {.inline .} =
248234 if endian == littleEndian:
@@ -328,7 +314,7 @@ proc unpack_bool(vars: var seq[StructNode], ctx: StructContext) =
328314proc unpack_short (vars: var seq [StructNode ], ctx: StructContext , f: char , signed: bool = false ) =
329315 for i in 0 .. ctx.repeat- 1 :
330316 var value = load_16 (ctx.buffer[ctx.offset], ctx.buffer[ctx.offset+ 1 ], ctx.byteOrder)
331- if signed:
317+ if not signed:
332318 vars.add (newStructShort (value))
333319 else :
334320 vars.add (newStructUShort (value.uint16 ))
@@ -337,7 +323,7 @@ proc unpack_short(vars: var seq[StructNode], ctx: StructContext, f: char, signed
337323proc unpack_int (vars: var seq [StructNode ], ctx: StructContext , f: char , signed: bool = false ) =
338324 for i in 0 .. ctx.repeat- 1 :
339325 var value = load_32 (ctx.buffer[ctx.offset], ctx.buffer[ctx.offset+ 1 ], ctx.buffer[ctx.offset+ 2 ], ctx.buffer[ctx.offset+ 3 ], ctx.byteOrder)
340- if signed:
326+ if not signed:
341327 vars.add (newStructInt (value))
342328 else :
343329 vars.add (newStructUInt (value.uint32 ))
@@ -346,7 +332,7 @@ proc unpack_int(vars: var seq[StructNode], ctx: StructContext, f: char, signed:
346332proc unpack_quad (vars: var seq [StructNode ], ctx: StructContext , f: char , signed: bool = false ) =
347333 for i in 0 .. ctx.repeat- 1 :
348334 var value = load_64 (ctx.buffer[ctx.offset.. ctx.offset+ 7 ], ctx.byteOrder)
349- if signed:
335+ if not signed:
350336 vars.add (newStructQuad (value))
351337 else :
352338 vars.add (newStructUQuad (value.uint64 ))
@@ -544,52 +530,52 @@ proc pack*(fmt: string, vars: varargs[StructNode]): string =
544530 raise newException (ValueError , " bad char in struct format" )
545531
546532
547- proc newStruct (fmt: string ): Struct =
533+ proc newStruct * (fmt: string ): Struct =
548534 new (result )
549535 result .fmt = fmt
550536 result .vars = @ []
551537
552- proc add (s: Struct , c: char ): Struct =
538+ proc add * (s: Struct , c: char ): Struct =
553539 result = s
554540 s.vars.add (newStructChar (c))
555541
556- proc add (s: Struct , b: bool ): Struct =
542+ proc add * (s: Struct , b: bool ): Struct =
557543 result = s
558544 s.vars.add (newStructBool (b))
559545
560- proc add (s: Struct , i: int16 ): Struct =
546+ proc add * (s: Struct , i: int16 ): Struct =
561547 result = s
562548 s.vars.add (newStructShort (i))
563549
564- proc add (s: Struct , i: uint16 ): Struct =
550+ proc add * (s: Struct , i: uint16 ): Struct =
565551 result = s
566552 s.vars.add (newStructUShort (i))
567553
568- proc add (s: Struct , i: int32 ): Struct =
554+ proc add * (s: Struct , i: int32 ): Struct =
569555 result = s
570556 s.vars.add (newStructInt (i))
571557
572- proc add (s: Struct , i: uint32 ): Struct =
558+ proc add * (s: Struct , i: uint32 ): Struct =
573559 result = s
574560 s.vars.add (newStructUint (i))
575561
576- proc add (s: Struct , i: int64 ): Struct =
562+ proc add * (s: Struct , i: int64 ): Struct =
577563 result = s
578564 s.vars.add (newStructQuad (i))
579565
580- proc add (s: Struct , i: uint64 ): Struct =
566+ proc add * (s: Struct , i: uint64 ): Struct =
581567 result = s
582568 s.vars.add (newStructUQuad (i))
583569
584- proc add (s: Struct , f: float32 ): Struct =
570+ proc add * (s: Struct , f: float32 ): Struct =
585571 result = s
586572 s.vars.add (newStructFloat (f))
587573
588- proc add (s: Struct , d: float64 ): Struct =
574+ proc add * (s: Struct , d: float64 ): Struct =
589575 result = s
590576 s.vars.add (newStructDouble (d))
591577
592- proc add (s: Struct , str: string ): Struct =
578+ proc add * (s: Struct , str: string ): Struct =
593579 result = s
594580 s.vars.add (newStructString (str))
595581
0 commit comments