added test code for variadic arguments
This commit is contained in:
parent
0725bfe27a
commit
c80dd5820d
38
README.md
38
README.md
@ -90,6 +90,44 @@ A HCL program is composed of expressions.
|
|||||||
(printf "%d\n" (+ 10 20))
|
(printf "%d\n" (+ 10 20))
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Variadic arguments
|
||||||
|
|
||||||
|
```
|
||||||
|
(defun fn-y (t1 t2 va-ctx)
|
||||||
|
| i |
|
||||||
|
(set i 0)
|
||||||
|
(while (< i (va-count va-ctx))
|
||||||
|
(printf "fn-y=>Y-VA[%d]=>[%d]\n" i (va-get i va-ctx))
|
||||||
|
(set i (+ i 1))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defun x(a b ... ::: x y z)
|
||||||
|
|i|
|
||||||
|
|
||||||
|
; (printf "VA_COUNT(x) = %d\n" (va-count))
|
||||||
|
(set x "xxx")
|
||||||
|
(set y "yyy")
|
||||||
|
(set z "zzz")
|
||||||
|
(set z (+ a b))
|
||||||
|
|
||||||
|
(set i 0)
|
||||||
|
(while (< i (va-count))
|
||||||
|
(printf "VA[%d]=>[%d]\n" i (va-get i))
|
||||||
|
(set i (+ i 1))
|
||||||
|
)
|
||||||
|
(fn-y "hello" "world" (va-context))
|
||||||
|
|
||||||
|
(return)
|
||||||
|
)
|
||||||
|
|
||||||
|
(printf "--------------------------\n")
|
||||||
|
(printf "[%O]\n" (x 10 20 30))
|
||||||
|
(printf "--------------------------\n")
|
||||||
|
(set q (set-r a b c (x 10 20 30 40 50)))
|
||||||
|
(printf "--------------------------\n")
|
||||||
|
```
|
||||||
|
|
||||||
## HCL Exchange Protocol
|
## HCL Exchange Protocol
|
||||||
|
|
||||||
The HCL library contains a simple server/client libraries that can exchange
|
The HCL library contains a simple server/client libraries that can exchange
|
||||||
|
@ -5,6 +5,7 @@ check_SCRIPTS = \
|
|||||||
insta-02.hcl \
|
insta-02.hcl \
|
||||||
ret-01.hcl \
|
ret-01.hcl \
|
||||||
retvar-01.hcl \
|
retvar-01.hcl \
|
||||||
|
va-01.hcl \
|
||||||
var-01.hcl
|
var-01.hcl
|
||||||
|
|
||||||
##noinst_SCRIPTS = $(check_SCRIPTS)
|
##noinst_SCRIPTS = $(check_SCRIPTS)
|
||||||
|
@ -466,6 +466,7 @@ check_SCRIPTS = \
|
|||||||
insta-02.hcl \
|
insta-02.hcl \
|
||||||
ret-01.hcl \
|
ret-01.hcl \
|
||||||
retvar-01.hcl \
|
retvar-01.hcl \
|
||||||
|
va-01.hcl \
|
||||||
var-01.hcl
|
var-01.hcl
|
||||||
|
|
||||||
EXTRA_DIST = $(check_SCRIPTS)
|
EXTRA_DIST = $(check_SCRIPTS)
|
||||||
|
41
t/va-01.hcl
Normal file
41
t/va-01.hcl
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
(defun fn-y (t1 t2 va-ctx)
|
||||||
|
| i |
|
||||||
|
(set i 0)
|
||||||
|
(while (< i (va-count va-ctx))
|
||||||
|
(printf "fn-y=>Y-VA[%d]=>[%d]\n" i (va-get i va-ctx))
|
||||||
|
(set i (+ i 1))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defun x(a b ... ::: x y z)
|
||||||
|
|i|
|
||||||
|
|
||||||
|
(set x (va-count))
|
||||||
|
(set y (* a b))
|
||||||
|
(set z (+ a b))
|
||||||
|
|
||||||
|
(set i 0)
|
||||||
|
(while (< i (va-count))
|
||||||
|
(printf "VA[%d]=>[%d]\n" i (va-get i))
|
||||||
|
(set i (+ i 1))
|
||||||
|
)
|
||||||
|
(fn-y "hello" "world" (va-context))
|
||||||
|
|
||||||
|
(return)
|
||||||
|
)
|
||||||
|
|
||||||
|
(set t (x 10 20 30))
|
||||||
|
(if (/= t 1) (printf "ERROR: t is not 1\n")
|
||||||
|
else (printf "OK: %d\n" t))
|
||||||
|
|
||||||
|
(set t (set-r a b c (x 10 20 30 40 50)))
|
||||||
|
(if (/= t 3) (printf "ERROR: t is not 3\n")
|
||||||
|
else (printf "OK: %d\n" t))
|
||||||
|
(if (/= a 3) (printf "ERROR: a is not 3\n")
|
||||||
|
else (printf "OK: %d\n" a))
|
||||||
|
(if (/= b 200) (printf "ERROR: b is not 200\n")
|
||||||
|
else (printf "OK: %d\n" b))
|
||||||
|
(if (/= c 30) (printf "ERROR: c is not 30\n")
|
||||||
|
else (printf "OK: %d\n" c))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user