scsh-checkins
[Top] [All Lists]

[Scsh-checkins] CVS: scsh-0.6/scsh weaktables.scm,NONE,1.1 newports.scm,

To: scsh-checkins@lists.sourceforge.net
Subject: [Scsh-checkins] CVS: scsh-0.6/scsh weaktables.scm,NONE,1.1 newports.scm,1.10,1.11 procobj.scm,1.10,1.11 scsh-interfaces.scm,1.20,1.21 scsh-package.scm,1.20,1.21
From: Martin Gasbichler <mainzelm@users.sourceforge.net>
Date: Sat, 07 Jul 2001 12:29:31 -0700
List-id: <scsh-checkins.lists.sourceforge.net>
Sender: scsh-checkins-admin@lists.sourceforge.net
Update of /cvsroot/scsh/scsh-0.6/scsh
In directory usw-pr-cvs1:/tmp/cvs-serv30979

Modified Files:
        newports.scm procobj.scm scsh-interfaces.scm scsh-package.scm 
Added Files:
        weaktables.scm 
Log Message:
+ Added a simple version of weak-tables. Only tail weak for now.
+ Replaced forgotten vector-ref in newports.scm


--- NEW FILE ---
;;; Tail-weak tables. This is for internal use only, for real life
;;; applications we have to provide a more general interface with the
;;; 3 combinations of head and tail weakness.

(define make-weak-table make-table)

(define (weak-table-set! table number set-me)
  (table-set! table number (make-weak-pointer set-me)))

(define (weak-table-ref table number)
  (let ((ref (table-ref table number)))
    (if (weak-pointer? ref) (weak-pointer-ref ref) ref)))

(define (weak-table-walk proc table)
  (table-walk
   (lambda (number value)
     (if (weak-pointer? value) (weak-pointer-ref value) value))
   table))

(define (strengthen-weak-table-ref table number)
  (table-set! table number (weak-table-ref table number)))

(define (weaken-weak-table-ref table number)
  (weak-table-set! table number (weak-table-ref table number)))

Index: newports.scm
===================================================================
RCS file: /cvsroot/scsh/scsh-0.6/scsh/newports.scm,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -r1.10 -r1.11
*** newports.scm        2001/06/21 08:30:51     1.10
--- newports.scm        2001/07/07 19:29:29     1.11
***************
*** 10,32 ****
  ; Vector of weak pointers mapping fd -> fdport.
  
- (define (weak-table-set! table number set-me)
-   (table-set! table number (make-weak-pointer set-me)))
- 
- (define (weak-table-ref table number)
-   (let ((ref (table-ref table number)))
-     (if (weak-pointer? ref) (weak-pointer-ref ref) ref)))
- 
- (define (weak-table-walk proc table)
-   (table-walk
-    (lambda (number value)
-      (if (weak-pointer? value) (weak-pointer-ref value) value))
-    table))
- 
- (define (strengthen-weak-table-ref table number)
-   (table-set! table number (weak-table-ref vector number)))
- 
- (define (weaken-weak-table-ref table number)
-   (weak-table-set! table number (weak-table-ref vector number)))
- 
  (define fdports (make-integer-table))
  
--- 10,13 ----
***************
*** 523,527 ****
         (ch (fdport-data:channel fdport*))
         (old-fd (channel-os-index ch))
!        (old-vector-ref (vector-ref fdports old-fd)))
      (set-fdport-data:revealed fdport* new-revealed)
      (table-set! fdports old-fd #f)
--- 504,508 ----
         (ch (fdport-data:channel fdport*))
         (old-fd (channel-os-index ch))
!        (old-vector-ref (table-ref fdports old-fd)))
      (set-fdport-data:revealed fdport* new-revealed)
      (table-set! fdports old-fd #f)

Index: procobj.scm
===================================================================
RCS file: /cvsroot/scsh/scsh-0.6/scsh/procobj.scm,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -r1.10 -r1.11
*** procobj.scm 2001/04/09 08:05:58     1.10
--- procobj.scm 2001/07/07 19:29:29     1.11
***************
*** 59,74 ****
    (weak-table-set! (auto-init-value process-table) n val))
  
- (define (weak-table-ref t n)
-   (let ((r (table-ref t n)))
-     (if (weak-pointer? r)
-       (weak-pointer-ref r)
-       (error "there was a non-weak-pointer" r))))
- 
- (define (weak-table-set! t n s)
-   (table-set! t n (make-weak-pointer s)))
- 
- ;(define (weaken-table-ref! t n)
- ;  (weak-table-set! t n (weak-table-ref t n)))
- 
  (define (maybe-pid->proc pid)
    (process-table-ref pid))
--- 59,62 ----

Index: scsh-interfaces.scm
===================================================================
RCS file: /cvsroot/scsh/scsh-0.6/scsh/scsh-interfaces.scm,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -r1.20 -r1.21
*** scsh-interfaces.scm 2001/06/20 16:12:40     1.20
--- scsh-interfaces.scm 2001/07/07 19:29:29     1.21
***************
*** 593,596 ****
--- 593,600 ----
          real->exact-integer))
  
+ (define-interface weak-tables-interface
+   (export make-weak-table weak-table-set! weak-table-ref weak-table-walk
+         strengthen-weak-table-ref weaken-weak-table-ref))
+ 
  ;;; semi-standard network magic numbers
  ;;; should be available on all platforms

Index: scsh-package.scm
===================================================================
RCS file: /cvsroot/scsh/scsh-0.6/scsh/scsh-package.scm,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -r1.20 -r1.21
*** scsh-package.scm    2001/06/06 11:06:05     1.20
--- scsh-package.scm    2001/07/07 19:29:29     1.21
***************
*** 39,42 ****
--- 39,47 ----
    )
  
+ (define-structure weak-tables weak-tables-interface
+   (open scheme
+       weak
+       tables)
+   (files weaktables))
  
  ;;; This guy goes into the FOR-SYNTAX part of scsh's syntax exports.
***************
*** 159,163 ****
        handle
        fluids
!       weak
  
        scsh-char-set-low-level-lib         ; rdelim.scm needs it.
--- 164,168 ----
        handle
        fluids
!       weak-tables
  
        scsh-char-set-low-level-lib         ; rdelim.scm needs it.



<Prev in Thread] Current Thread [Next in Thread>
  • [Scsh-checkins] CVS: scsh-0.6/scsh weaktables.scm,NONE,1.1 newports.scm,1.10,1.11 procobj.scm,1.10,1.11 scsh-interfaces.scm,1.20,1.21 scsh-package.scm,1.20,1.21, Martin Gasbichler <=