X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=cl-symbols.lisp;h=ab709f6a76ac7b9734186a850567c47ef93ac205;hb=e408a6bd2a959f734733cd26a8c8098051fc46f6;hp=e8bfc909c879a4eaebe941c2862d602cb2a4f5e7;hpb=30b4f8d91af2bb031e8d4ef7d5a38492739de2bf;p=kmrcl.git diff --git a/cl-symbols.lisp b/cl-symbols.lisp index e8bfc90..ab709f6 100644 --- a/cl-symbols.lisp +++ b/cl-symbols.lisp @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Apr 2000 ;;;; -;;;; $Id: cl-symbols.lisp,v 1.3 2002/10/10 16:23:48 kevin Exp $ +;;;; $Id: cl-symbols.lisp,v 1.5 2002/12/15 17:10:50 kevin Exp $ ;;;; ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -42,3 +42,31 @@ (fboundp sym)) (push sym funcs)))) (nreverse funcs))) + +;;; Symbol functions + +(defun concat-symbol-pkg (pkg &rest args) + (declare (dynamic-extent args)) + (flet ((stringify (arg) + (etypecase arg + (string + (string-upcase arg)) + (symbol + (symbol-name arg))))) + (let ((str (apply #'concatenate 'string (mapcar #'stringify args)))) + (intern #-case-sensitive (string-upcase str) + #+case-sensitive str + (if pkg pkg *package*))))) + + +(defun concat-symbol (&rest args) + (apply #'concat-symbol-pkg nil args)) + +(defun ensure-keyword (name) + "Returns keyword for a name" + (etypecase name + (keyword name) + (string (intern #-case-sensitive (string-upcase name) + #+case-sensitive name + :keyword)) + (symbol (intern (symbol-name name) :keyword))))