X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=base%2Finitialize.lisp;h=32115123b7a9887b685d4da32dc7c435c5e2ffc2;hp=7adf1b5e7ddff8c75db1ef3d5442d5b67199fb4f;hb=09f07ac9d914a83f9426609f3264f4e66b5a6d97;hpb=33dcd7b49025344bd4c9827d1cd2b6e6857a0c03 diff --git a/base/initialize.lisp b/base/initialize.lisp index 7adf1b5..3211512 100644 --- a/base/initialize.lisp +++ b/base/initialize.lisp @@ -2,14 +2,14 @@ ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; -;;;; Name: initialize.cl +;;;; Name: initialize.lisp ;;;; Purpose: Initializion routines for backend ;;;; Programmers: Kevin M. Rosenberg ;;;; Date Started: May 2002 ;;;; -;;;; $Id: initialize.lisp,v 1.2 2002/10/16 11:51:04 kevin Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of CLSQL, is Copyright (c) 2002-2004 by Kevin M. Rosenberg ;;;; and Copyright (c) 1999-2001 by Pierre R. Mai ;;;; ;;;; CLSQL users are granted the rights to distribute and use this software @@ -17,14 +17,13 @@ ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; ************************************************************************* -(declaim (optimize (debug 3) (speed 3) (safety 1) (compilation-speed 0))) -(in-package :clsql-base-sys) +(in-package #:clsql-base) (defvar *loaded-database-types* nil "Contains a list of database types which have been defined/loaded.") (defmethod database-type-load-foreign (x) - (error "No generic function defined for database-type-load-foreign with parameters of %S" x)) + (error "No generic function defined for database-type-load-foreign with parameters of ~S" x)) (defmethod database-type-load-foreign :after (database-type) (when (database-type-library-loaded database-type) @@ -35,8 +34,7 @@ (mapc #'database-type-load-foreign *loaded-database-types*)) (defvar *default-database-type* nil - "Specifies the default type of database. Currently only :mysql is -supported.") + "Specifies the default type of database.") (defvar *initialized-database-types* nil "Contains a list of database types which have been initialized by calls @@ -45,10 +43,16 @@ to initialize-database-type.") (defun initialize-database-type (&key (database-type *default-database-type*)) "Initialize the given database-type, if it is not already initialized, as indicated by `*initialized-database-types*'." - (if (member database-type *initialized-database-types*) - t - (when (database-initialize-database-type database-type) - (push database-type *initialized-database-types*) - t))) - + (when (member database-type *initialized-database-types*) + (return-from initialize-database-type database-type)) + + (let ((system (intern (concatenate 'string + (symbol-name '#:clsql-) + (symbol-name database-type))))) + (when (not (find-package system)) + (asdf:operate 'asdf:load-op system))) + + (when (database-initialize-database-type database-type) + (push database-type *initialized-database-types*) + database-type))