diff --git a/brmsaptool.scm b/brmsaptool.scm index 47f3c6c..7ac2c51 100644 --- a/brmsaptool.scm +++ b/brmsaptool.scm @@ -79,6 +79,7 @@ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. (-action- 'print-member-file)) (-tests () "Run self-tests upon startup" (-run-tests?- #t)) (-idstats () "Returns information about available member ids" (-action- 'print-idstats)) + (-genid () "Generates random member id" (-action- 'genid)) ) ;; Run tests @@ -132,4 +133,8 @@ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. (newline) (print-members-ids-stats MB) (newline)) + ((genid) + (newline) + (print "New member id: " (gen-member-id MB)) + (newline)) ) diff --git a/members-base.scm b/members-base.scm index ec74ab3..4d13e3e 100644 --- a/members-base.scm +++ b/members-base.scm @@ -38,6 +38,7 @@ print-members-base-stats get-free-members-ids print-members-ids-stats + gen-member-id members-base-tests! ) @@ -51,6 +52,7 @@ (chicken sort) (chicken string) (chicken format) + (chicken random) testing utils dictionary @@ -374,6 +376,12 @@ ", ") ")")))) + ;; Generates random vector id. + (define (gen-member-id mb) + (let* ((fids (get-free-members-ids mb)) + (vfids (list->vector fids))) + (vector-ref vfids (pseudo-random-integer (vector-length vfids))))) + ;; Performs self-tests of this module. (define (members-base-tests!) (run-tests