Skip to content

Commit 8069f21

Browse files
committed
micropdf417: Use stack accumulation to build sequence array
1 parent 0ec84ca commit 8069f21

1 file changed

Lines changed: 15 additions & 31 deletions

File tree

‎src/micropdf417.ps.src‎

Lines changed: 15 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -766,69 +766,53 @@ begin
766766
/numtext numtext 0 msglen getinterval def
767767
/numbytes numbytes 0 msglen getinterval def
768768

769-
/seq [] def /seqlen 0 def /state //micropdf417.b def /p 0 def { % loop
769+
mark
770+
/seqlen 0 def /state //micropdf417.b def /p 0 def { % loop
770771
p msglen eq {exit} if
771772
p 0 eq msg p get dup //micropdf417.m05 eq exch //micropdf417.m06 eq or and {
772-
/seq [
773-
seq aload pop
774-
msg p get //micropdf417.m05 eq { //micropdf417.m05 } { //micropdf417.m06 } ifelse
775-
] def
773+
msg p get //micropdf417.m05 eq { //micropdf417.m05 } { //micropdf417.m06 } ifelse
776774
/p p 1 add def
777775
/seqlen seqlen 1 add def
778776
} {
779777
iseci p get {
780778
/eci msg p get def
781-
/seq [
782-
seq aload pop
783-
[ eci ]
784-
] def
779+
[ eci ]
785780
/p p 1 add def
786781
/seqlen seqlen eci -1810900 le {2} {eci -1000900 le {3} {2} ifelse} ifelse add def
787782
} {
788783
/n numdigits p get def
789784
n 13 ge n msglen eq n 8 ge and or { % 13+ digits or all-numeric and 8+ digits
790-
/seq [
791-
seq aload pop
792-
//micropdf417.nl
793-
[ msg p n getinterval aload pop ]
794-
] def
785+
//micropdf417.nl
786+
[ msg p n getinterval aload pop ]
795787
/state //micropdf417.n def
796788
/p p n add def
797789
/seqlen seqlen 1 add n add def
798790
} { % next
799791
/t numtext p get def
800792
t 5 ge {
801-
/seq [
802-
seq aload pop
803-
state //micropdf417.t ne {
804-
//micropdf417.tl
805-
} if
806-
[ msg p t getinterval aload pop ]
807-
] def
793+
state //micropdf417.t ne {
794+
//micropdf417.tl
795+
} if
796+
[ msg p t getinterval aload pop ]
808797
/state //micropdf417.t def
809798
/p p t add def
810799
/seqlen seqlen 1 add t add def % ish
811800
} { % next
812801
/b numbytes p get def
813802
b 1 eq state //micropdf417.t eq and {
814-
/seq [
815-
seq aload pop
816-
//micropdf417.bs
817-
[ msg p get ]
818-
] def
803+
//micropdf417.bs
804+
[ msg p get ]
819805
/p p b add def
820806
/seqlen seqlen 2 add def
821807
} { % next
822-
/seq [
823-
seq aload pop
824-
b 6 mod 0 ne {//micropdf417.bl} {//micropdf417.bl6} ifelse
825-
[ msg p b getinterval aload pop ]
826-
] def
808+
b 6 mod 0 ne {//micropdf417.bl} {//micropdf417.bl6} ifelse
809+
[ msg p b getinterval aload pop ]
827810
/state //micropdf417.b def
828811
/p p b add def
829812
/seqlen seqlen 1 add b add def
830813
} ifelse } ifelse } ifelse } ifelse } ifelse
831814
} loop
815+
counttomark array astore exch pop /seq exch def
832816

833817
/latchcws <<
834818
//micropdf417.tl 900 //micropdf417.bl 901 //micropdf417.bl6 924 //micropdf417.nl 902 //micropdf417.bs 913 //micropdf417.m05 916 //micropdf417.m06 917

0 commit comments

Comments
 (0)