~ chicken-core (chicken-5) 5b2564ab28ce1dc90244090bfc969b6c6d03e8b0
commit 5b2564ab28ce1dc90244090bfc969b6c6d03e8b0
Author: Evan Hanson <evhan@foldling.org>
AuthorDate: Thu Jul 27 07:46:23 2017 +1200
Commit: Peter Bex <peter@more-magic.net>
CommitDate: Sun Aug 6 17:21:19 2017 +0200
Add chicken.plist module
Signed-off-by: Peter Bex <peter@more-magic.net>
diff --git a/README b/README
index 3f97e813..75f51e0a 100644
--- a/README
+++ b/README
@@ -310,6 +310,7 @@ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/_/
| | |-- chicken.memory.import.so
| | |-- chicken.pathname.import.so
| | |-- chicken.platform.import.so
+ | | |-- chicken.plist.import.so
| | |-- chicken.port.import.so
| | |-- chicken.posix.import.so
| | |-- chicken.pretty-print.import.so
diff --git a/chicken.import.scm b/chicken.import.scm
index 806d2820..563cf7ff 100644
--- a/chicken.import.scm
+++ b/chicken.import.scm
@@ -109,13 +109,11 @@
(fxxor . chicken.fixnum#fxxor)
(fxlen . chicken.fixnum#fxlen)
gensym
- get
(get-call-chain . chicken.condition#get-call-chain)
(get-condition-property . chicken.condition#get-condition-property)
get-environment-variable
(get-line-number . chicken.syntax#get-line-number)
get-output-string
- get-properties
getter-with-setter
implicit-exit-handler
infinite?
@@ -155,12 +153,10 @@
procedure-information
program-name
promise?
- put!
quotient&modulo
quotient&remainder
ratnum?
(register-feature! . chicken.platform#register-feature!)
- remprop!
rename-file
(repository-path . chicken.platform#repository-path)
(require . chicken.load#require)
@@ -182,7 +178,6 @@
subvector
symbol-append
symbol-escape
- symbol-plist
(syntax-error . chicken.syntax#syntax-error)
system
(unregister-feature! . chicken.platform#unregister-feature!)
diff --git a/defaults.make b/defaults.make
index 0504b93d..8b072088 100644
--- a/defaults.make
+++ b/defaults.make
@@ -267,7 +267,7 @@ PRIMITIVE_IMPORT_LIBRARIES = chicken chicken.condition chicken.csi chicken.forei
DYNAMIC_IMPORT_LIBRARIES = srfi-4
DYNAMIC_CHICKEN_IMPORT_LIBRARIES = bitwise blob errno file.posix \
fixnum flonum format gc io keyword load locative memory \
- platform posix pretty-print process process.signal \
+ platform plist posix pretty-print process process.signal \
process-context random syntax time time.posix
DYNAMIC_CHICKEN_COMPILER_IMPORT_LIBRARIES = user-pass
DYNAMIC_CHICKEN_UNIT_IMPORT_LIBRARIES = continuation data-structures \
diff --git a/distribution/manifest b/distribution/manifest
index 57f19f46..56ceddb4 100644
--- a/distribution/manifest
+++ b/distribution/manifest
@@ -316,6 +316,8 @@ chicken.pathname.import.scm
chicken.pathname.import.c
chicken.platform.import.scm
chicken.platform.import.c
+chicken.plist.import.scm
+chicken.plist.import.c
chicken.port.import.scm
chicken.port.import.c
chicken.posix.import.scm
diff --git a/library.scm b/library.scm
index e4ed6312..a75e77a9 100644
--- a/library.scm
+++ b/library.scm
@@ -5608,6 +5608,11 @@ EOF
;;; Property lists
+(module chicken.plist
+ (get get-properties put! remprop! symbol-plist)
+
+(import scheme chicken)
+
(define (put! sym prop val)
(##sys#check-symbol sym 'put!)
(##core#inline_allocate ("C_a_i_putprop" 8) sym prop val) )
@@ -5670,6 +5675,8 @@ EOF
(values prop (##sys#slot tl 0) nxt)
(loop nxt) ) ) ) ) )
+) ; chicken.plist
+
;;; Print timing information (support for "time" macro):
diff --git a/rules.make b/rules.make
index c425f855..a4faa94b 100644
--- a/rules.make
+++ b/rules.make
@@ -512,6 +512,7 @@ $(eval $(call declare-emitted-import-lib-dependency,chicken.flonum,library))
$(eval $(call declare-emitted-import-lib-dependency,chicken.gc,library))
$(eval $(call declare-emitted-import-lib-dependency,chicken.keyword,library))
$(eval $(call declare-emitted-import-lib-dependency,chicken.platform,library))
+$(eval $(call declare-emitted-import-lib-dependency,chicken.plist,library))
$(eval $(call declare-emitted-import-lib-dependency,chicken.time,library))
$(eval $(call declare-emitted-import-lib-dependency,chicken.load,eval))
$(eval $(call declare-emitted-import-lib-dependency,chicken.format,extras))
@@ -615,6 +616,7 @@ support.c: support.scm mini-srfi-1.scm \
chicken.keyword.import.scm \
chicken.pathname.import.scm \
chicken.platform.import.scm \
+ chicken.plist.import.scm \
chicken.port.import.scm \
chicken.pretty-print.import.scm \
chicken.random.import.scm \
@@ -780,6 +782,7 @@ library.c: $(SRCDIR)library.scm $(SRCDIR)banner.scm $(SRCDIR)common-declarations
-emit-import-library chicken.gc \
-emit-import-library chicken.keyword \
-emit-import-library chicken.platform \
+ -emit-import-library chicken.plist \
-emit-import-library chicken.time
internal.c: $(SRCDIR)internal.scm $(SRCDIR)mini-srfi-1.scm
$(bootstrap-lib) -emit-import-library chicken.internal
diff --git a/support.scm b/support.scm
index 8a343315..158cae2f 100644
--- a/support.scm
+++ b/support.scm
@@ -88,6 +88,7 @@
chicken.keyword
chicken.pathname
chicken.platform
+ chicken.plist
chicken.port
chicken.pretty-print
chicken.random
diff --git a/types.db b/types.db
index a0f6e212..7e685404 100644
--- a/types.db
+++ b/types.db
@@ -1197,12 +1197,8 @@
(gensym (#(procedure #:clean) gensym (#!optional (or string symbol)) symbol))
-(get (#(procedure #:clean #:enforce) get (symbol symbol #!optional *) *)
- ((symbol symbol *) (##core#inline "C_i_getprop" #(1) #(2) #(3))))
-
(get-environment-variable (#(procedure #:clean #:enforce) get-environment-variable (string) *))
(get-output-string (#(procedure #:clean #:enforce) get-output-string (output-port) string))
-(get-properties (#(procedure #:clean #:enforce) get-properties (symbol list) symbol * list))
;; keyword
@@ -1241,6 +1237,17 @@
(chicken.platform#repository-path (#(procedure #:clean) chicken.platform#repository-path (#!optional *) *))
(chicken.platform#installation-repository (#(procedure #:clean) chicken.platform#installation-repository (#!optional *) *))
+;; plist
+
+(chicken.plist#get (#(procedure #:clean #:enforce) chicken.plist#get (symbol symbol #!optional *) *)
+ ((symbol symbol *) (##core#inline "C_i_getprop" #(1) #(2) #(3))))
+(chicken.plist#get-properties (#(procedure #:clean #:enforce) chicken.plist#get-properties (symbol list) symbol * list))
+(chicken.plist#put! (#(procedure #:clean #:enforce) chicken.plist#put! (symbol symbol *) undefined)
+ ((symbol symbol *)
+ (##core#inline_allocate ("C_a_i_putprop" 8) #(1) #(2) #(3))))
+(chicken.plist#remprop! (#(procedure #:clean #:enforce) chicken.plist#remprop! (symbol symbol) undefined))
+(chicken.plist#symbol-plist (#(procedure #:clean #:enforce) chicken.plist#symbol-plist (symbol) list)
+ ((symbol) (##sys#slot #(1) '2)))
(getter-with-setter
(#(procedure #:clean #:enforce)
@@ -1284,11 +1291,6 @@
(make-promise (#(procedure #:enforce) make-promise (*) (struct promise))
(((struct promise)) #(1)))
-(put! (#(procedure #:clean #:enforce) put! (symbol symbol *) undefined)
- ((symbol symbol *)
- (##core#inline_allocate ("C_a_i_putprop" 8) #(1) #(2) #(3))))
-
-(remprop! (#(procedure #:clean #:enforce) remprop! (symbol symbol) undefined))
(rename-file (#(procedure #:clean #:enforce) rename-file (string string) string))
(reset (procedure reset () noreturn))
(reset-handler (#(procedure #:clean #:enforce) reset-handler (#!optional (procedure () . *)) procedure))
@@ -1338,9 +1340,6 @@
(subvector (forall (a) (#(procedure #:clean #:enforce) subvector ((vector-of a) fixnum #!optional fixnum) (vector-of a))))
(symbol-escape (#(procedure #:clean) symbol-escape (#!optional *) *))
-(symbol-plist (#(procedure #:clean #:enforce) symbol-plist (symbol) list)
- ((symbol) (##sys#slot #(1) '2)))
-
(system (#(procedure #:clean #:enforce) system (string) fixnum))
(vector-resize
(forall (a b) (#(procedure #:clean #:enforce) vector-resize ((vector-of a) fixnum #!optional b)
Trap