summaryrefslogtreecommitdiff
path: root/boil/tests/LinearSearch.vapor
diff options
context:
space:
mode:
Diffstat (limited to 'boil/tests/LinearSearch.vapor')
-rw-r--r--boil/tests/LinearSearch.vapor150
1 files changed, 150 insertions, 0 deletions
diff --git a/boil/tests/LinearSearch.vapor b/boil/tests/LinearSearch.vapor
new file mode 100644
index 0000000..db4884a
--- /dev/null
+++ b/boil/tests/LinearSearch.vapor
@@ -0,0 +1,150 @@
+
+const vmt_LS
+ :LS.Start
+ :LS.Print
+ :LS.Search
+ :LS.Init
+
+
+func Main()
+ t.0 = HeapAllocZ(12)
+ [t.0] = :vmt_LS
+ if t.0 goto :null1
+ Error("null pointer")
+ null1:
+ t.1 = [t.0]
+ t.1 = [t.1+0]
+ t.2 = call t.1(t.0 10)
+ PrintIntS(t.2)
+ ret
+
+func LS.Start(this sz)
+ t.0 = [this]
+ t.0 = [t.0+12]
+ aux01 = call t.0(this sz)
+ t.1 = [this]
+ t.1 = [t.1+4]
+ aux02 = call t.1(this)
+ PrintIntS(9999)
+ t.2 = [this]
+ t.2 = [t.2+8]
+ t.3 = call t.2(this 8)
+ PrintIntS(t.3)
+ t.4 = [this]
+ t.4 = [t.4+8]
+ t.5 = call t.4(this 12)
+ PrintIntS(t.5)
+ t.6 = [this]
+ t.6 = [t.6+8]
+ t.7 = call t.6(this 17)
+ PrintIntS(t.7)
+ t.8 = [this]
+ t.8 = [t.8+8]
+ t.9 = call t.8(this 50)
+ PrintIntS(t.9)
+ ret 55
+
+func LS.Print(this)
+ j = 1
+ while1_top:
+ t.0 = [this+8]
+ t.1 = LtS(j t.0)
+ if0 t.1 goto :while1_end
+ t.2 = [this+4]
+ if t.2 goto :null2
+ Error("null pointer")
+ null2:
+ t.3 = [t.2]
+ t.3 = Lt(j t.3)
+ if t.3 goto :bounds1
+ Error("array index out of bounds")
+ bounds1:
+ t.3 = MulS(j 4)
+ t.3 = Add(t.3 t.2)
+ t.4 = [t.3+4]
+ PrintIntS(t.4)
+ j = Add(j 1)
+ goto :while1_top
+ while1_end:
+ ret 0
+
+func LS.Search(this num)
+ j = 1
+ ls01 = 0
+ ifound = 0
+ while2_top:
+ t.0 = [this+8]
+ t.1 = LtS(j t.0)
+ if0 t.1 goto :while2_end
+ t.2 = [this+4]
+ if t.2 goto :null3
+ Error("null pointer")
+ null3:
+ t.3 = [t.2]
+ t.3 = Lt(j t.3)
+ if t.3 goto :bounds2
+ Error("array index out of bounds")
+ bounds2:
+ t.3 = MulS(j 4)
+ t.3 = Add(t.3 t.2)
+ aux01 = [t.3+4]
+ aux02 = Add(num 1)
+ t.4 = LtS(aux01 num)
+ if0 t.4 goto :if1_else
+ nt = 0
+ goto :if1_end
+ if1_else:
+ t.5 = LtS(aux01 aux02)
+ t.6 = Sub(1 t.5)
+ if0 t.6 goto :if2_else
+ nt = 0
+ goto :if2_end
+ if2_else:
+ ls01 = 1
+ ifound = 1
+ j = [this+8]
+ if2_end:
+ if1_end:
+ j = Add(j 1)
+ goto :while2_top
+ while2_end:
+ ret ifound
+
+func LS.Init(this sz)
+ [this+8] = sz
+ t.0 = call :AllocArray(sz)
+ [this+4] = t.0
+ j = 1
+ t.1 = [this+8]
+ k = Add(t.1 1)
+ while3_top:
+ t.2 = [this+8]
+ t.3 = LtS(j t.2)
+ if0 t.3 goto :while3_end
+ aux01 = MulS(2 j)
+ aux02 = Sub(k 3)
+ t.4 = [this+4]
+ if t.4 goto :null4
+ Error("null pointer")
+ null4:
+ t.5 = [t.4]
+ t.5 = Lt(j t.5)
+ if t.5 goto :bounds3
+ Error("array index out of bounds")
+ bounds3:
+ t.5 = MulS(j 4)
+ t.5 = Add(t.5 t.4)
+ t.6 = Add(aux01 aux02)
+ [t.5+4] = t.6
+ j = Add(j 1)
+ k = Sub(k 1)
+ goto :while3_top
+ while3_end:
+ ret 0
+
+func AllocArray(size)
+ bytes = MulS(size 4)
+ bytes = Add(bytes 4)
+ v = HeapAllocZ(bytes)
+ [v] = size
+ ret v