summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar John Cowan 2020-09-11 17:21:23 -0400
committerGravatar John Cowan 2020-09-11 17:21:23 -0400
commit110b3f5d3a377537ad9c7562d5d87a2243cf54e1 (patch)
treea1aeecbb7df13096800ff12af1f38f616ed4230a
parentdictionary code initial (diff)
next stage of Dictionaries; added right-fold to FoldOrder
-rw-r--r--indexes.scm14
-rw-r--r--internals.scm117
2 files changed, 53 insertions, 78 deletions
diff --git a/indexes.scm b/indexes.scm
index 8969b33..4476943 100644
--- a/indexes.scm
+++ b/indexes.scm
@@ -1,4 +1,6 @@
;;;; Indexes into dictionary vectors
+;;; Add more at the end for new dictionary methods
+;;; Add an entry to model-vec as well
(define d? 0)
(define dempty? 1)
@@ -28,17 +30,13 @@
(define dentries 25)
(define dfold 26)
(define dmap->list 27)
-(define ddict->alist 28)
+(define d->alist 28)
-;;; To call an internal procedure from another internal procedure:
-;;; (dcall dref/default vec dict key default)
-(define-syntax dcall
- (syntax-rules ()
- ((dcall dindex vec arg ...)
- ((vector-ref vec dindex) arg ...))))
+;;; Sample of a call to an internal procedure from another internal procedure:
+;;; (dcall dref/default vec dict key default)
-;;; maps names to indexes
+;;; Maps names to indexes
(define dname-map
`(dictionary? . ,d?)
diff --git a/internals.scm b/internals.scm
index 9e30e6c..76aed2c 100644
--- a/internals.scm
+++ b/internals.scm
@@ -1,127 +1,104 @@
-;;; Internal procedure definitions (all take a vec argument first)
-
-(define (idictionary? obj)
+;;;; Internal procedure definitions (all take a vec argument first)
+
+;;; Sample call of an internal procedure from another internal procedure:
+;;; (dcall dref/default vec dictionary key default)
+
+;;; Notes on definitions:
+;;; Vec argument is not used except to pass to dcalls
+;;; External procedures with a rest argument use a list argument here
+;;; External procedures with optional arguments are not optional here
+
+(define-syntax dcall
+ (syntax-rules ()
+ ((dcall dproc vec dictionary arg ...)
+ ((vector-ref vec dindex) vec dictionary arg ...))))
+
+(define (idictionary? vec obj)
(error "dictionary? method not defined"))
-(define (idict-empty? dictionary)
- #f)
+(define (idict-empty? vec dictionary)
+ (= 0 (dcall dsize vec dictionary)))
-(define (idict-contains? dictionary key)
- #f)
+(define (idict-contains? vec dictionary key)
+ (dcall dref vec dictionary key
+ (lambda () #f) (lambda (x) #t)))
-(define idict-ref
- (case-lambda
- ((vec dictionary key)
- (idict-ref* vec dictionary key error values))
- ((vec dictionary key failure)
- (idict-ref* vec dictionary key failure values))
- ((vec dictionary key failure success)
- (idict-ref* vec dictionary key failure success))))
-
-(define (idict-ref* dictionary key failure success)
+(define (idict-ref vec dictionary key failure success)
#f)
-(define idict-ref
- (case-lambda
- ((vec dictionary key)
- (idict-ref* vec dictionary key error values))
- ((vec dictionary key failure)
- (idict-ref* vec dictionary key failure values))
- ((vec dictionary key failure success)
- (idict-ref* vec dictionary key failure success))))
-
-(define (idict-ref* vec dictionary key failure success)
+(define (idict-ref/default vec dictionary key default)
#f)
-(define (idict-ref/default dictionary key default)
+(define (idict-set! vec dictionary . objs)
#f)
-(define (idict-set! dictionary . objs)
+(define (idict-adjoin! vec dictionary . objs)
#f)
-(define (idict-adjoin! dictionary . objs)
+(define (idict-delete! vec dictionary . keys)
#f)
-(define (idict-delete! dictionary . keys)
+(define (idict-delete-all! vec dictionary keylist)
#f)
-(define (idict-delete-all! dictionary keylist)
+(define (idict-replace! vec dictionary key value)
#f)
-(define (idict-replace! dictionary key value)
+(define (idict-intern! vec dictionary key failure)
#f)
-(define (idict-intern! dictionary key failure)
+(define (idict-update! vec dictionary key updater failure success)
#f)
-(define idict-update!
- (case-lambda
- ((vec dictionary key updater)
- (idict-update!* vec dictionary key updater error values))
- ((vec dictionary key updater failure)
- (idict-update!* vec dictionary key updater failure values))
- ((vec dictionary key updater failure success)
- (idict-update!* vec dictionary key updater failure success))))
-
-(define (idict-update!* vec dictionary key updater failure success)
- #f)
-
-(define (idict-update/default! dictionary key updater default)
+(define (idict-update/default! vec dictionary key updater default)
#f)
-(define idict-pop!
- (case-lambda
- ((vec dictionary)
- (idict-pop!* vec dictionary error))
- ((vec dictionary failure)
- (idict-pop!* vec dictionary failure))))
-
-(define (idict-pop!* vec dictionary failure)
+(define (idict-pop! vec dictionary failure)
#f)
-(define (idict-map! proc dictionary)
+(define (idict-map! proc vec dictionary)
(error "dict-map method not defined"))
-(define (idict-filter! pred dictionary)
+(define (idict-filter! pred vec dictionary)
(error "dict-filter! method not defined"))
-(define (idict-remove! dictionary pred)
+(define (idict-remove! vec pred dictionary)
#f)
-(define (idict-search! dictionary key failure success)
+(define (idict-search! vec dictionary key failure success)
(error "dict-search! method not defined"))
-(define (idict-size dictionary)
+(define (idict-size vec dictionary)
(error "dict-size method not defined"))
-(define (idict-for-each proc dictionary)
+(define (idict-for-each proc vec dictionary)
(error "dict-for-each method not defined"))
-(define (idict-count pred dictionary)
+(define (idict-count pred vec dictionary)
#f)
-(define (idict-any pred dictionary)
+(define (idict-any pred vec dictionary)
#f)
-(define (idict-every pred dictionary)
+(define (idict-every pred vec dictionary)
#f)
-(define (idict-keys dictionary)
+(define (idict-keys vec dictionary)
#f)
-(define (idict-values dictionary)
+(define (idict-values vec dictionary)
#f)
-(define (idict-entries dictionary)
+(define (idict-entries vec dictionary)
#f)
-(define (idict-fold proc knil dictionary)
+(define (idict-fold proc knil vec dictionary)
#f)
-(define (idict-map->list proc dictionary)
+(define (idict-map->list proc vec dictionary)
#f)
-(define (idict->alist dictionary)
+(define (idict->alist vec dictionary)
#f)
(define model-vec #(
git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@119 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-07-13Ooops...libtool works a bit different than I thought, but atleast it worksGravatar bencollins 2-6/+1 like it is supposed to. git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@117 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-07-13Generate and install the pdf in the Debian package.Gravatar bencollins 3-3/+4 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@114 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-07-13Don't run configure at the end of autogen.sh. Also, remove autom4te.cache.Gravatar bencollins 1-1/+1 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@113 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-07-13Update Debian maintainerGravatar bencollins 1-1/+2 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@112 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-07-13Update Debian changelog.Gravatar bencollins 1-0/+8 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@111 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-07-13File doesn't really seem needed. The NEWS file gives a good overview, andGravatar bencollins 1-4/+0 the svn log is more than verbose enough for info seekers. git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@110 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-07-13Fix compiler warnings.Gravatar bencollins 4-12/+22 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@109 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-07-13Updates from 0.10.0 release.Gravatar bencollins 4-5/+14 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@108 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-04-23add libtoolize to bootstrapGravatar ddennedy 1-1/+10 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@107 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-04-21added Dan Maas' rawiso docsGravatar ddennedy 1-32/+295 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@106 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-04-07new_handle_on_port() error path fix from Jim RadfordGravatar dmaas 1-1/+3 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@105 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-03-26add raw1394_new_handle_on_port() convenience functionGravatar dmaas 2-1/+41 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@104 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-02-22Updates for new rawiso ioctl interface.Gravatar bencollins 3-37/+125 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@103 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-01-15add iso_xmit_sync() and iso_xmit_write(); clean up iso handling a bitGravatar dmaas 5-39/+161 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@102 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-01-15implement tag matching for rawiso receptionGravatar dmaas 3-4/+12 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@101 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-01-06back out previous commit - don't drop the legacy API just yetGravatar dmaas 6-173/+130 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@100 53a565d1-3bb7-0310-b661-cf11e63c67ab 2003-01-05emulate legacy ISO reception API on top of new rawiso APIGravatar dmaas 7-131/+174 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@99 53a565d1-3bb7-0310-b661-cf11e63c67ab 2002-12-24update iso API for multi-channel reception and new packet buffer layoutGravatar dmaas 4-123/+236 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@98 53a565d1-3bb7-0310-b661-cf11e63c67ab 2002-12-20oops, irq_interval needs to be signedGravatar anonymous 1-1/+1 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@97 53a565d1-3bb7-0310-b661-cf11e63c67ab 2002-12-20dmaas - renamed exported arm definitions into the raw1394_ namespace; ↵Gravatar anonymous 3-124/+48 brought kernel-raw1394.h back in sync with the kernel version git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@96 53a565d1-3bb7-0310-b661-cf11e63c67ab 2002-12-16rawiso updates:Gravatar dmaas 3-18/+25 - changed return type of rawiso xmit/recv handlers from int to enum raw1394_iso_disposition - added an ioctl (RAW1394_ISO_QUEUE_ACTIVITY) to force an ISO_ACTIVITY event into the queue. This is needed for handling RAW1394_ISO_DEFER, to kick us out of the next read() instead of sleeping forever. - removed references to "8-byte" isochronous header - this is an OHCI-specific implementation detail git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@95 53a565d1-3bb7-0310-b661-cf11e63c67ab 2002-11-18fix cplusplus extern C blockGravatar ddennedy 1-4/+4 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@94 53a565d1-3bb7-0310-b661-cf11e63c67ab 2002-11-18merged rawiso branchGravatar ddennedy 7-6/+488 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@93 53a565d1-3bb7-0310-b661-cf11e63c67ab