X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=sql.lisp;h=179a452d9e3cc9dbe0d9852e36120826dc34b79d;hb=19cb24908d2ba2faec3afbdd180eed0c7d7d8515;hp=a16b6f8f4a18f2ca07642569369ba9c0de2e9fe3;hpb=b2823748750430fbeb14f46d06ec6c1477b31471;p=hyperobject.git diff --git a/sql.lisp b/sql.lisp index a16b6f8..179a452 100644 --- a/sql.lisp +++ b/sql.lisp @@ -2,21 +2,17 @@ ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; -;;;; Name: sqlgen.lisp +;;;; Name: sql.lisp ;;;; Purpose: SQL Generation functions for Hyperobject ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Apr 2000 ;;;; -;;;; $Id: sql.lisp,v 1.3 2003/03/29 04:04:21 kevin Exp $ +;;;; $Id: sql.lisp,v 1.6 2003/06/06 21:59:29 kevin Exp $ ;;;; -;;;; This file, part of Hyperobject-SQL, is -;;;; Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D. +;;;; This file is Copyright (c) 2000-2003 by Kevin M. Rosenberg ;;;; ************************************************************************* -(in-package :hyperobject) -(eval-when (:compile-toplevel :execute) - (declaim (optimize (speed 2) (safety 2) (compilation-speed 0) (debug 2)))) - +(in-package #:hyperobject) ;;;; Metaclass initialization commands @@ -36,7 +32,7 @@ (define-inverse cl esd)))) ) -(defgeneric sql-name ((cl hyperobject-class)) +(defgeneric sql-name (cl) ) (defmethod sql-name ((cl hyperobject-class)) @@ -51,7 +47,6 @@ (lisp-name (if name name (slot-definition-name esd)))) (lisp-name-to-sql-name lisp-name))) - (defun lisp-name-to-sql-name (lisp) "Convert a lisp name (atom or list, string or symbol) into a canonical SQL name" @@ -60,19 +55,17 @@ SQL name" (typecase lisp (symbol (symbol-name lisp)) (t (write-to-string lisp))))) - (let ((sql (make-string (length lisp)))) - (dotimes (i (length lisp)) - (declare (fixnum i)) - (setf (char sql i) - (let ((c (char lisp i))) - (case c - (#\- #\_) - (#\$ #\_) - (#\+ #\_) - (#\# #\_) - (otherwise c))))) - (string-upcase sql))) - + (do* ((len (length lisp)) + (sql (make-string len)) + (i 0 (1+ i))) + ((= i len) (string-upcase sql)) + (declare (fixnum i) + (simple-string sql)) + (setf (schar sql i) + (let ((c (char lisp i))) + (case c + ((#\- #\$ #\+ #\#) #\_) + (otherwise c)))))) (defun define-inverse (class esd) "Define an inverse function for a slot" @@ -204,8 +197,6 @@ SQL name" (slot-value self name)))))))))) values)) - - (defun inverse-field-string (fields) (let (inverse) (dolist (field fields)