mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-10 11:12:58 -08:00
Most of the STRING* functions operate on string designators
This commit is contained in:
parent
c7e83eeba9
commit
d58911db98
2 changed files with 28 additions and 19 deletions
|
|
@ -20,6 +20,9 @@ ECL 0.9h
|
|||
- The block name of a function does not involve the the forms in the lambda
|
||||
list: i.e. (LAMBDA-EXT F (&aux (X (RETURN-FROM F 2)))) is no longer valid.
|
||||
|
||||
- Many of the STRING* functions (STRING=, STRING<, etc) were proclaimed to
|
||||
work only on strings, instead of string-designators.
|
||||
|
||||
* Design:
|
||||
|
||||
- Simplified the structure of the frame stack, removing redundant fields.
|
||||
|
|
|
|||
|
|
@ -86,6 +86,12 @@
|
|||
(put-sysprop name safety (cons inline-info (get-sysprop name safety))))
|
||||
nil)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; AUXILIARY TYPES
|
||||
;;
|
||||
|
||||
(deftype string-designator () '(or string symbol character))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;
|
||||
;;; ALL FUNCTION DECLARATIONS AND INLINE FORMS
|
||||
|
|
@ -1113,7 +1119,7 @@ type_of(#0)==t_bitvector")
|
|||
(def-inline si:char-set :unsafe (t fixnum character) :char
|
||||
"(#0)->string.self[#1]= #2")
|
||||
|
||||
(proclaim-function schar (string fixnum) character :no-side-effects t)
|
||||
(proclaim-function schar (simple-string fixnum) character :no-side-effects t)
|
||||
(def-inline schar :always (t t) t "elt(#0,fixint(#1))")
|
||||
(def-inline schar :always (t fixnum) t "elt(#0,#1)")
|
||||
(def-inline schar :unsafe (t t) t "CODE_CHAR((#0)->string.self[fix(#1)])")
|
||||
|
|
@ -1129,30 +1135,30 @@ type_of(#0)==t_bitvector")
|
|||
(def-inline si:schar-set :unsafe (t fixnum character) :char
|
||||
"(#0)->string.self[#1]= #2")
|
||||
|
||||
(proclaim-function string= (string string *) t :predicate t :no-side-effects t)
|
||||
(proclaim-function string= (string-designator string-designator *) t :predicate t :no-side-effects t)
|
||||
(def-inline string= :always (string string) :bool "string_eq(#0,#1)")
|
||||
|
||||
(proclaim-function string-equal (string string *) t :predicate t
|
||||
(proclaim-function string-equal (string-designator string-designator *) t :predicate t
|
||||
:no-side-effects t)
|
||||
(def-inline string-equal :always (string string) :bool "string_equal(#0,#1)")
|
||||
|
||||
(proclaim-function string< (string string *) t :predicate t)
|
||||
(proclaim-function string> (string string *) t :predicate t)
|
||||
(proclaim-function string<= (string string *) t :predicate t)
|
||||
(proclaim-function string>= (string string *) t :predicate t)
|
||||
(proclaim-function string/= (string string *) t :predicate t)
|
||||
(proclaim-function string-lessp (string string *) t :predicate t)
|
||||
(proclaim-function string-greaterp (string string *) t :predicate t)
|
||||
(proclaim-function string-not-lessp (string string *) t :predicate t)
|
||||
(proclaim-function string-not-greaterp (string string *) t :predicate t)
|
||||
(proclaim-function string-not-equal (string string *) t :predicate t)
|
||||
(proclaim-function string< (string-designator string-designator *) t :predicate t)
|
||||
(proclaim-function string> (string-designator string-designator *) t :predicate t)
|
||||
(proclaim-function string<= (string-designator string-designator *) t :predicate t)
|
||||
(proclaim-function string>= (string-designator string-designator *) t :predicate t)
|
||||
(proclaim-function string/= (string-designator string-designator *) t :predicate t)
|
||||
(proclaim-function string-lessp (string-designator string-designator *) t :predicate t)
|
||||
(proclaim-function string-greaterp (string-designator string-designator *) t :predicate t)
|
||||
(proclaim-function string-not-lessp (string-designator string-designator *) t :predicate t)
|
||||
(proclaim-function string-not-greaterp (string-designator string-designator *) t :predicate t)
|
||||
(proclaim-function string-not-equal (string-designator string-designator *) t :predicate t)
|
||||
(proclaim-function make-string (fixnum *) string)
|
||||
(proclaim-function string-trim (t string) string)
|
||||
(proclaim-function string-left-trim (t string) string)
|
||||
(proclaim-function string-right-trim (t string) string)
|
||||
(proclaim-function string-upcase (string *) string)
|
||||
(proclaim-function string-downcase (string *) string)
|
||||
(proclaim-function string-capitalize (string *) string)
|
||||
(proclaim-function string-trim (t string-designator) string)
|
||||
(proclaim-function string-left-trim (t string-designator) string)
|
||||
(proclaim-function string-right-trim (t string-designator) string)
|
||||
(proclaim-function string-upcase (string-designator *) string)
|
||||
(proclaim-function string-downcase (string-designator *) string)
|
||||
(proclaim-function string-capitalize (string-designator *) string)
|
||||
(proclaim-function nstring-upcase (string *) string)
|
||||
(proclaim-function nstring-downcase (string *) string)
|
||||
(proclaim-function nstring-capitalize (string *) string)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue