Changeset 1141:3fe93de3be82


Ignore:
Timestamp:
05/06/12 02:17:14 (6 years ago)
Author:
Raymond Toy <toy.raymond@…>
Branch:
default
Message:

Fix up some bugs in the last fix for using STRING declarations instead of
(SIMPLE-ARRAY CHARACTER).

src/f2cl1.l:
o Fix typo in RELAX-ARRAY-DECL.

src/f2cl5.l:
o Need to handle the new STRING declarations correctly in

GENERATE-WITH-ARRAY.

src/macros.l:
o In MULTI-ARRAY-DATA-AUX, handle arrays of type CHARACTER specially.

Make the declaration STRING instead of (SIMPLE-ARRAY CHARACTER).

Location:
src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/f2cl1.l

    r1140 r1141  
    207207                      decl
    208208                    (if (subtypep a 'string)
    209                         `(a ,(mapcar (constantly '*) l))
     209                        `(,a ,@(mapcar (constantly '*) l))
    210210                        `(,a ,n ,(mapcar (constantly '*) l)))))
    211211                 (t
  • src/f2cl5.l

    r1140 r1141  
    20302030                         (dolist (x (rest (first formal-arg-decls)))
    20312031                           (when (member a (cddr x))
    2032                              (return-from find-type (second (second x))))
    2033                            t)))
     2032                             (cond
     2033                               ((subtypep (first (second x)) 'string)
     2034                                (return-from find-type 'character))
     2035                               (t
     2036                                (return-from find-type (second (second x)))))
     2037                           t))))
    20342038                  (dolist (a arrays)
    20352039                    (let ((d-name (array-data-name a))
  • src/macros.l

    r1126 r1141  
    159159      (destructuring-bind (array a-type var-name offset-var)
    160160          a
    161         (setf results
    162               `((multiple-value-bind (,var-name ,offset-var)
    163                     (find-array-data ,array)
    164                   (declare (ignorable ,offset-var ,var-name)
    165                            (type f2cl-lib:integer4 ,offset-var)
    166                            (type (simple-array ,a-type (*)) ,var-name))
    167                   ,@results)))))
     161        (let ((atype (if (subtypep a-type 'character)
     162                         `(simple-string)
     163                         `(simple-array ,a-type (*)))))
     164          (setf results
     165                `((multiple-value-bind (,var-name ,offset-var)
     166                      (find-array-data ,array)
     167                    (declare (ignorable ,offset-var ,var-name)
     168                             (type f2cl-lib:integer4 ,offset-var)
     169                             (type ,atype ,var-name))
     170                    ,@results))))))
    168171    (first results)))
    169172
Note: See TracChangeset for help on using the changeset viewer.