Changeset 31014 in project


Ignore:
Timestamp:
06/14/14 20:35:21 (6 years ago)
Author:
Kon Lovett
Message:

added block-length to prim, dropped use of ##sys namespace procs in port

Location:
release/4/message-digest
Files:
8 edited
1 copied

Legend:

Unmodified
Added
Removed
  • release/4/message-digest/tags/3.1.0/message-digest-port.scm

    r26412 r31014  
    2222    (only ports make-output-port with-input-from-port)
    2323    (only srfi-13 string-suffix-length-ci)
    24     (only type-checks define-check+error-type)
    25     (only type-errors make-error-type-message signal-type-error)
     24    (only type-checks define-check+error-type check-output-port)
     25    (only type-errors error-argument-type make-error-type-message signal-type-error)
    2626    message-digest-primitive
    2727    message-digest-type
     
    3232        ports
    3333        srfi-13
     34        type-checks
    3435        type-errors
    3536    message-digest-primitive
     
    4243(define (%port-type p) (##sys#slot p 7))
    4344(define (%port-type-set! p t) (##sys#setslot p 7 t))
     45
     46;
    4447(define (%port-name p) (##sys#slot p 3))
    4548(define (%port-name-set! p s) (##sys#setslot p 3 s))
    4649
    4750;
     51(define (check-open-port loc obj #!optional argnam)
     52  (if (port-closed? obj)
     53    (error-argument-type loc obj "open port" argnam)
     54    obj ) )
    4855
    49 (define (check-open-digest-output-port loc obj)
    50   (##sys#check-port* obj loc) ;must be open
    51   (##sys#check-port-mode obj #f loc)
     56;
     57(define (check-open-digest-output-port loc obj #!optional argnam)
     58  (check-open-port loc (check-output-port loc obj argnam) argnam)
    5259  (unless (eq? 'digest (%port-type obj))
    53     (signal-type-error loc (make-error-type-message 'digest-output-port) obj) ) )
     60    (signal-type-error loc (make-error-type-message 'digest-output-port) obj argnam) )
     61  obj )
    5462
    5563; Synthesize a port-name from a primitive-name
    56 
    5764(define (make-digest-port-name mdp)
    5865  (let ((nam (->string (or (message-digest-primitive-name mdp) 'digest))))
     
    6976(define (open-output-digest mdp)
    7077  (let* ((md (initialize-message-digest mdp))
    71          (writer (lambda (obj)
    72                                                         ; It will only ever be a string for now.
    73                                                         (if (string? obj) (message-digest-update-string md obj)
    74                                                                 (message-digest-update-blob md obj))))
     78         (writer
     79          (lambda (obj)
     80            ; It will only ever be a string for now.
     81            (if (string? obj) (message-digest-update-string md obj)
     82              (message-digest-update-blob md obj))))
    7583         (port (make-output-port writer void)) ) ;use default close behavior
    7684    (##sys#set-port-data! port md)
     
    92100
    93101(define (*close-output-digest loc digest-port result-type)
    94   (check-open-digest-output-port loc digest-port)
     102  (check-open-digest-output-port loc digest-port 'digest-port)
    95103  (let ((res (finalize-message-digest (##sys#port-data digest-port) result-type)))
    96104    (close-output-port digest-port)
  • release/4/message-digest/tags/3.1.0/message-digest-primitive.scm

    r26402 r31014  
    1313    message-digest-primitive? check-message-digest-primitive error-message-digest-primitive
    1414    message-digest-primitive-name
     15    message-digest-primitive-block-length
    1516    message-digest-primitive-context-info
    1617    message-digest-primitive-digest-length
     
    4445;;
    4546
    46 (define (check-message-digest-arguments loc ctx-info digest-len init update final)
     47(define (check-message-digest-arguments loc ctx-info digest-len init update final block-len name)
    4748  (unless (or (procedure? ctx-info) (positive-fixnum? ctx-info))
    4849    (error-argument-type loc ctx-info "positive-fixnum or procedure" 'context-info) )
     
    5051  (check-procedure loc init 'digest-initializer)
    5152  (check-procedure loc update 'digest-updater)
    52   (check-procedure loc final 'digest-finalizer) )
     53  (check-procedure loc final 'digest-finalizer)
     54  (check-positive-fixnum loc block-len 'block-length)
     55  (unless (or (symbol? name) (string? name))
     56    (error-argument-type loc name "symbol or string" 'name) ) )
    5357
    5458;;
    5559
    5660(define-record-type message-digest-primitive
    57   (*make-message-digest-primitive ctxi digest-len init update final name)
     61  (*make-message-digest-primitive ctxi digest-len init update final block-len name)
    5862  message-digest-primitive?
    5963  (ctxi message-digest-primitive-context-info)
     
    6266  (update message-digest-primitive-update)
    6367  (final message-digest-primitive-final)
     68  (block-len message-digest-primitive-block-length)
    6469  (name message-digest-primitive-name) )
    6570
    6671(define-check+error-type message-digest-primitive)
    6772
    68 (define (make-message-digest-primitive ctx-info digest-len init update final
    69                                        #!optional (name (gensym "mdp")))
    70   (check-message-digest-arguments 'make-message-digest-primitive
    71     ctx-info digest-len init update final)
    72   (*make-message-digest-primitive
    73     ctx-info
    74     digest-len
    75     init update final
    76     name) )
     73(define (make-message-digest-primitive ctx-info digest-len init update final . rest)
     74  (let-values (((block-len rest)
     75                (if (and (not (null? rest)) (number? (car rest)))
     76                  (values (car rest) (cdr rest))
     77                  (values 4 rest) ) ) )
     78    (let ((name (if (null? rest) (gensym "mdp") (car rest) ) ) )
     79      (check-message-digest-arguments 'make-message-digest-primitive
     80        ctx-info digest-len init update final block-len name)
     81      (*make-message-digest-primitive
     82        ctx-info
     83        digest-len
     84        init update final
     85        block-len
     86        name) ) ) )
    7787
    7888) ;module message-digest-primitive
  • release/4/message-digest/tags/3.1.0/message-digest.setup

    r27995 r31014  
    55(verify-extension-name "message-digest")
    66
    7 (setup-shared+static-extension-module 'message-digest-primitive (extension-version "3.0.5")
     7(setup-shared+static-extension-module 'message-digest-primitive (extension-version "3.1.0")
    88  #:inline? #t
    99        #:types? #t
    1010  #:compile-options '(
    11     -scrutinize
    1211    -optimize-level 3 -debug-level 1
    1312    -no-procedure-checks-for-toplevel-bindings))
    1413
    15 (setup-shared+static-extension-module 'message-digest-type (extension-version "3.0.5")
     14(setup-shared+static-extension-module 'message-digest-type (extension-version "3.1.0")
    1615  #:inline? #t
    1716        #:types? #t
    1817  #:compile-options '(
    19     -scrutinize
    2018    -optimize-level 3 -debug-level 1
    2119    -no-procedure-checks-for-toplevel-bindings))
    2220
    23 (setup-shared+static-extension-module 'message-digest-parameters (extension-version "3.0.5")
     21(setup-shared+static-extension-module 'message-digest-parameters (extension-version "3.1.0")
    2422  #:inline? #t
    2523        #:types? #t
    2624  #:compile-options '(
    27     -scrutinize
    2825    -optimize-level 3 -debug-level 1
    2926    -no-procedure-checks-for-toplevel-bindings))
    3027
    31 (setup-shared+static-extension-module 'message-digest-support (extension-version "3.0.5")
     28(setup-shared+static-extension-module 'message-digest-support (extension-version "3.1.0")
    3229  #:inline? #t
    3330        #:types? #t
    3431  #:compile-options '(
    35     -scrutinize
    3632    -optimize-level 3 -debug-level 1
    3733    -no-procedure-checks-for-toplevel-bindings))
    3834
    39 (setup-shared+static-extension-module 'message-digest-bv (extension-version "3.0.5")
     35(setup-shared+static-extension-module 'message-digest-bv (extension-version "3.1.0")
    4036  #:inline? #t
    4137        #:types? #t
    4238  #:compile-options '(
    43     -scrutinize
    4439    -optimize-level 3 -debug-level 1
    4540    -no-procedure-checks-for-toplevel-bindings))
    4641
    47 (setup-shared+static-extension-module 'message-digest-int (extension-version "3.0.5")
     42(setup-shared+static-extension-module 'message-digest-int (extension-version "3.1.0")
    4843  #:inline? #t
    4944        #:types? #t
    5045  #:compile-options '(
    51     -scrutinize
    5246    -optimize-level 3 -debug-level 1
    5347    -no-procedure-checks-for-toplevel-bindings))
    5448
    55 (setup-shared+static-extension-module 'message-digest-srfi-4 (extension-version "3.0.5")
     49(setup-shared+static-extension-module 'message-digest-srfi-4 (extension-version "3.1.0")
    5650  #:inline? #t
    5751        #:types? #t
    5852  #:compile-options '(
    59     -scrutinize
    6053    -optimize-level 3 -debug-level 1
    6154    -no-procedure-checks-for-toplevel-bindings))
    6255
    63 (setup-shared+static-extension-module 'message-digest-update-item (extension-version "3.0.5")
     56(setup-shared+static-extension-module 'message-digest-update-item (extension-version "3.1.0")
    6457  #:inline? #t
    6558        #:types? #t
    6659  #:compile-options '(
    67     -scrutinize
    6860    -optimize-level 3 -debug-level 1
    6961    -no-procedure-checks-for-toplevel-bindings))
    7062
    71 (setup-shared+static-extension-module 'message-digest-item (extension-version "3.0.5")
     63(setup-shared+static-extension-module 'message-digest-item (extension-version "3.1.0")
    7264  #:inline? #t
    7365        #:types? #t
    7466  #:compile-options '(
    75     -scrutinize
    7667    -optimize-level 3 -debug-level 1
    7768    -no-procedure-checks-for-toplevel-bindings))
    7869
    79 (setup-shared+static-extension-module 'message-digest-port (extension-version "3.0.5")
     70(setup-shared+static-extension-module 'message-digest-port (extension-version "3.1.0")
    8071  #:inline? #t
    8172        #:types? #t
    8273  #:compile-options '(
    83     -scrutinize
    8474    -optimize-level 3 -debug-level 1
    8575    -no-procedure-checks-for-toplevel-bindings))
    8676
    87 (setup-shared+static-extension-module 'message-digest-basic (extension-version "3.0.5")
     77(setup-shared+static-extension-module 'message-digest-basic (extension-version "3.1.0")
    8878  #:inline? #t
    8979        #:types? #t
    9080  #:compile-options '(
    91     -scrutinize
    9281    -optimize-level 3 -debug-level 1
    9382    -no-procedure-checks-for-toplevel-bindings))
    9483
    95 (setup-shared+static-extension-module 'message-digest (extension-version "3.0.5")
     84(setup-shared+static-extension-module 'message-digest (extension-version "3.1.0")
    9685  #:inline? #t
    9786        #:types? #t
    9887  #:compile-options '(
    99     -scrutinize
    10088    -optimize-level 3 -debug-level 1
    10189    -no-procedure-checks-for-toplevel-bindings))
  • release/4/message-digest/tags/3.1.0/tests/run.scm

    r27995 r31014  
    2222
    2323(define digest-length 5)
     24(define block-length 64)
    2425(define context-size 10)
     26
     27(define-constant block-length-default 4)
    2528
    2629;;
     
    4649  (define (final ctx result) (void))
    4750
    48   (let ((mdp (make-message-digest-primitive context-size digest-length init update final 'foo)))
     51  (let ((mdp (make-message-digest-primitive context-size digest-length init update final)))
    4952    (test-assert (message-digest-primitive? mdp))
    5053    (test context-size (message-digest-primitive-context-info mdp))
     
    5356    (test update (message-digest-primitive-update mdp))
    5457    (test final (message-digest-primitive-final mdp))
     58    (test block-length-default (message-digest-primitive-block-length mdp))
     59    (test-assert (symbol? (message-digest-primitive-name mdp))) )
     60
     61  ;; don't bother testing the non-optional arguments again
     62
     63  (let ((mdp (make-message-digest-primitive context-size digest-length init update final 'foo)))
     64    (test block-length-default (message-digest-primitive-block-length mdp))
     65    (test 'foo (message-digest-primitive-name mdp)) )
     66
     67  (let ((mdp (make-message-digest-primitive context-size digest-length init update final block-length)))
     68    (test block-length (message-digest-primitive-block-length mdp))
     69    (test-assert (symbol? (message-digest-primitive-name mdp))) )
     70
     71  (let ((mdp (make-message-digest-primitive context-size digest-length init update final block-length 'foo)))
     72    (test block-length (message-digest-primitive-block-length mdp))
    5573    (test 'foo (message-digest-primitive-name mdp)) )
    5674)
  • release/4/message-digest/trunk/message-digest-port.scm

    r26412 r31014  
    2222    (only ports make-output-port with-input-from-port)
    2323    (only srfi-13 string-suffix-length-ci)
    24     (only type-checks define-check+error-type)
    25     (only type-errors make-error-type-message signal-type-error)
     24    (only type-checks define-check+error-type check-output-port)
     25    (only type-errors error-argument-type make-error-type-message signal-type-error)
    2626    message-digest-primitive
    2727    message-digest-type
     
    3232        ports
    3333        srfi-13
     34        type-checks
    3435        type-errors
    3536    message-digest-primitive
     
    4243(define (%port-type p) (##sys#slot p 7))
    4344(define (%port-type-set! p t) (##sys#setslot p 7 t))
     45
     46;
    4447(define (%port-name p) (##sys#slot p 3))
    4548(define (%port-name-set! p s) (##sys#setslot p 3 s))
    4649
    4750;
     51(define (check-open-port loc obj #!optional argnam)
     52  (if (port-closed? obj)
     53    (error-argument-type loc obj "open port" argnam)
     54    obj ) )
    4855
    49 (define (check-open-digest-output-port loc obj)
    50   (##sys#check-port* obj loc) ;must be open
    51   (##sys#check-port-mode obj #f loc)
     56;
     57(define (check-open-digest-output-port loc obj #!optional argnam)
     58  (check-open-port loc (check-output-port loc obj argnam) argnam)
    5259  (unless (eq? 'digest (%port-type obj))
    53     (signal-type-error loc (make-error-type-message 'digest-output-port) obj) ) )
     60    (signal-type-error loc (make-error-type-message 'digest-output-port) obj argnam) )
     61  obj )
    5462
    5563; Synthesize a port-name from a primitive-name
    56 
    5764(define (make-digest-port-name mdp)
    5865  (let ((nam (->string (or (message-digest-primitive-name mdp) 'digest))))
     
    6976(define (open-output-digest mdp)
    7077  (let* ((md (initialize-message-digest mdp))
    71          (writer (lambda (obj)
    72                                                         ; It will only ever be a string for now.
    73                                                         (if (string? obj) (message-digest-update-string md obj)
    74                                                                 (message-digest-update-blob md obj))))
     78         (writer
     79          (lambda (obj)
     80            ; It will only ever be a string for now.
     81            (if (string? obj) (message-digest-update-string md obj)
     82              (message-digest-update-blob md obj))))
    7583         (port (make-output-port writer void)) ) ;use default close behavior
    7684    (##sys#set-port-data! port md)
     
    92100
    93101(define (*close-output-digest loc digest-port result-type)
    94   (check-open-digest-output-port loc digest-port)
     102  (check-open-digest-output-port loc digest-port 'digest-port)
    95103  (let ((res (finalize-message-digest (##sys#port-data digest-port) result-type)))
    96104    (close-output-port digest-port)
  • release/4/message-digest/trunk/message-digest-primitive.scm

    r26402 r31014  
    1313    message-digest-primitive? check-message-digest-primitive error-message-digest-primitive
    1414    message-digest-primitive-name
     15    message-digest-primitive-block-length
    1516    message-digest-primitive-context-info
    1617    message-digest-primitive-digest-length
     
    4445;;
    4546
    46 (define (check-message-digest-arguments loc ctx-info digest-len init update final)
     47(define (check-message-digest-arguments loc ctx-info digest-len init update final block-len name)
    4748  (unless (or (procedure? ctx-info) (positive-fixnum? ctx-info))
    4849    (error-argument-type loc ctx-info "positive-fixnum or procedure" 'context-info) )
     
    5051  (check-procedure loc init 'digest-initializer)
    5152  (check-procedure loc update 'digest-updater)
    52   (check-procedure loc final 'digest-finalizer) )
     53  (check-procedure loc final 'digest-finalizer)
     54  (check-positive-fixnum loc block-len 'block-length)
     55  (unless (or (symbol? name) (string? name))
     56    (error-argument-type loc name "symbol or string" 'name) ) )
    5357
    5458;;
    5559
    5660(define-record-type message-digest-primitive
    57   (*make-message-digest-primitive ctxi digest-len init update final name)
     61  (*make-message-digest-primitive ctxi digest-len init update final block-len name)
    5862  message-digest-primitive?
    5963  (ctxi message-digest-primitive-context-info)
     
    6266  (update message-digest-primitive-update)
    6367  (final message-digest-primitive-final)
     68  (block-len message-digest-primitive-block-length)
    6469  (name message-digest-primitive-name) )
    6570
    6671(define-check+error-type message-digest-primitive)
    6772
    68 (define (make-message-digest-primitive ctx-info digest-len init update final
    69                                        #!optional (name (gensym "mdp")))
    70   (check-message-digest-arguments 'make-message-digest-primitive
    71     ctx-info digest-len init update final)
    72   (*make-message-digest-primitive
    73     ctx-info
    74     digest-len
    75     init update final
    76     name) )
     73(define (make-message-digest-primitive ctx-info digest-len init update final . rest)
     74  (let-values (((block-len rest)
     75                (if (and (not (null? rest)) (number? (car rest)))
     76                  (values (car rest) (cdr rest))
     77                  (values 4 rest) ) ) )
     78    (let ((name (if (null? rest) (gensym "mdp") (car rest) ) ) )
     79      (check-message-digest-arguments 'make-message-digest-primitive
     80        ctx-info digest-len init update final block-len name)
     81      (*make-message-digest-primitive
     82        ctx-info
     83        digest-len
     84        init update final
     85        block-len
     86        name) ) ) )
    7787
    7888) ;module message-digest-primitive
  • release/4/message-digest/trunk/message-digest.setup

    r27995 r31014  
    55(verify-extension-name "message-digest")
    66
    7 (setup-shared+static-extension-module 'message-digest-primitive (extension-version "3.0.5")
     7(setup-shared+static-extension-module 'message-digest-primitive (extension-version "3.1.0")
    88  #:inline? #t
    99        #:types? #t
    1010  #:compile-options '(
    11     -scrutinize
    1211    -optimize-level 3 -debug-level 1
    1312    -no-procedure-checks-for-toplevel-bindings))
    1413
    15 (setup-shared+static-extension-module 'message-digest-type (extension-version "3.0.5")
     14(setup-shared+static-extension-module 'message-digest-type (extension-version "3.1.0")
    1615  #:inline? #t
    1716        #:types? #t
    1817  #:compile-options '(
    19     -scrutinize
    2018    -optimize-level 3 -debug-level 1
    2119    -no-procedure-checks-for-toplevel-bindings))
    2220
    23 (setup-shared+static-extension-module 'message-digest-parameters (extension-version "3.0.5")
     21(setup-shared+static-extension-module 'message-digest-parameters (extension-version "3.1.0")
    2422  #:inline? #t
    2523        #:types? #t
    2624  #:compile-options '(
    27     -scrutinize
    2825    -optimize-level 3 -debug-level 1
    2926    -no-procedure-checks-for-toplevel-bindings))
    3027
    31 (setup-shared+static-extension-module 'message-digest-support (extension-version "3.0.5")
     28(setup-shared+static-extension-module 'message-digest-support (extension-version "3.1.0")
    3229  #:inline? #t
    3330        #:types? #t
    3431  #:compile-options '(
    35     -scrutinize
    3632    -optimize-level 3 -debug-level 1
    3733    -no-procedure-checks-for-toplevel-bindings))
    3834
    39 (setup-shared+static-extension-module 'message-digest-bv (extension-version "3.0.5")
     35(setup-shared+static-extension-module 'message-digest-bv (extension-version "3.1.0")
    4036  #:inline? #t
    4137        #:types? #t
    4238  #:compile-options '(
    43     -scrutinize
    4439    -optimize-level 3 -debug-level 1
    4540    -no-procedure-checks-for-toplevel-bindings))
    4641
    47 (setup-shared+static-extension-module 'message-digest-int (extension-version "3.0.5")
     42(setup-shared+static-extension-module 'message-digest-int (extension-version "3.1.0")
    4843  #:inline? #t
    4944        #:types? #t
    5045  #:compile-options '(
    51     -scrutinize
    5246    -optimize-level 3 -debug-level 1
    5347    -no-procedure-checks-for-toplevel-bindings))
    5448
    55 (setup-shared+static-extension-module 'message-digest-srfi-4 (extension-version "3.0.5")
     49(setup-shared+static-extension-module 'message-digest-srfi-4 (extension-version "3.1.0")
    5650  #:inline? #t
    5751        #:types? #t
    5852  #:compile-options '(
    59     -scrutinize
    6053    -optimize-level 3 -debug-level 1
    6154    -no-procedure-checks-for-toplevel-bindings))
    6255
    63 (setup-shared+static-extension-module 'message-digest-update-item (extension-version "3.0.5")
     56(setup-shared+static-extension-module 'message-digest-update-item (extension-version "3.1.0")
    6457  #:inline? #t
    6558        #:types? #t
    6659  #:compile-options '(
    67     -scrutinize
    6860    -optimize-level 3 -debug-level 1
    6961    -no-procedure-checks-for-toplevel-bindings))
    7062
    71 (setup-shared+static-extension-module 'message-digest-item (extension-version "3.0.5")
     63(setup-shared+static-extension-module 'message-digest-item (extension-version "3.1.0")
    7264  #:inline? #t
    7365        #:types? #t
    7466  #:compile-options '(
    75     -scrutinize
    7667    -optimize-level 3 -debug-level 1
    7768    -no-procedure-checks-for-toplevel-bindings))
    7869
    79 (setup-shared+static-extension-module 'message-digest-port (extension-version "3.0.5")
     70(setup-shared+static-extension-module 'message-digest-port (extension-version "3.1.0")
    8071  #:inline? #t
    8172        #:types? #t
    8273  #:compile-options '(
    83     -scrutinize
    8474    -optimize-level 3 -debug-level 1
    8575    -no-procedure-checks-for-toplevel-bindings))
    8676
    87 (setup-shared+static-extension-module 'message-digest-basic (extension-version "3.0.5")
     77(setup-shared+static-extension-module 'message-digest-basic (extension-version "3.1.0")
    8878  #:inline? #t
    8979        #:types? #t
    9080  #:compile-options '(
    91     -scrutinize
    9281    -optimize-level 3 -debug-level 1
    9382    -no-procedure-checks-for-toplevel-bindings))
    9483
    95 (setup-shared+static-extension-module 'message-digest (extension-version "3.0.5")
     84(setup-shared+static-extension-module 'message-digest (extension-version "3.1.0")
    9685  #:inline? #t
    9786        #:types? #t
    9887  #:compile-options '(
    99     -scrutinize
    10088    -optimize-level 3 -debug-level 1
    10189    -no-procedure-checks-for-toplevel-bindings))
  • release/4/message-digest/trunk/tests/run.scm

    r27995 r31014  
    2222
    2323(define digest-length 5)
     24(define block-length 64)
    2425(define context-size 10)
     26
     27(define-constant block-length-default 4)
    2528
    2629;;
     
    4649  (define (final ctx result) (void))
    4750
    48   (let ((mdp (make-message-digest-primitive context-size digest-length init update final 'foo)))
     51  (let ((mdp (make-message-digest-primitive context-size digest-length init update final)))
    4952    (test-assert (message-digest-primitive? mdp))
    5053    (test context-size (message-digest-primitive-context-info mdp))
     
    5356    (test update (message-digest-primitive-update mdp))
    5457    (test final (message-digest-primitive-final mdp))
     58    (test block-length-default (message-digest-primitive-block-length mdp))
     59    (test-assert (symbol? (message-digest-primitive-name mdp))) )
     60
     61  ;; don't bother testing the non-optional arguments again
     62
     63  (let ((mdp (make-message-digest-primitive context-size digest-length init update final 'foo)))
     64    (test block-length-default (message-digest-primitive-block-length mdp))
     65    (test 'foo (message-digest-primitive-name mdp)) )
     66
     67  (let ((mdp (make-message-digest-primitive context-size digest-length init update final block-length)))
     68    (test block-length (message-digest-primitive-block-length mdp))
     69    (test-assert (symbol? (message-digest-primitive-name mdp))) )
     70
     71  (let ((mdp (make-message-digest-primitive context-size digest-length init update final block-length 'foo)))
     72    (test block-length (message-digest-primitive-block-length mdp))
    5573    (test 'foo (message-digest-primitive-name mdp)) )
    5674)
Note: See TracChangeset for help on using the changeset viewer.