The architecture.service-provider Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The architecture.service-provider Reference Manual

This is the architecture.service-provider Reference Manual, version 0.6.0, generated automatically by Declt version 2.4 "Will Decker" on Wed Jun 20 10:45:54 2018 GMT+0.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

#+TITLE:       architecture.service-provider README
#+AUTHOR:      Jan Moringen
#+EMAIL:       jmoringe@techfak.uni-bielefeld.de
#+DESCRIPTION: Framework for defining, introspecting and using services and providers of such
#+KEYWORDS:    common lisp, architecture, service, provider, framework
#+LANGUAGE:    en

* Introduction
  In software architectures, a common feature is parametrization of
  algorithms or protocols with higher order functions or classes and
  generic functions complying to a certain protocol. These places of
  potential variations can be thought of as requiring a certain
  service which can be provided by arbitrary providers (See [[*Java
  Service Provider Interface]] for a related approach).
  # are sometimes called "extension points".


  While Common Lisp supports these designs very well on a language
  level (via symbols naming functions, first class functions,
  =cl:make-instance=, etc.), it is often useful to go a little bit
  beyond these builtin features:
  * It is considered good practice to use something like
    =make-test-result-formatter= instead of letting clients call
    =cl:make-instance= directly.
  * It is sometimes desirable to be able to enumerate all known
    providers of a given service.
  * Compile-time analysis of provider instantiation requests can
    reveal errors early or enable transformation into more efficient
    code.
  * Service providers can be loaded lazily when they are instantiated.

  This system adds first class services and service providers to
  facilitate use cases like the above while trying to avoid conceptual
  mismatches with the builtin mechanisms.

  #+ATTR_HTML: :alt "build status image" :title Build Status :align right
  [[https://travis-ci.org/scymtym/architecture.service-provider][https://travis-ci.org/scymtym/architecture.service-provider.svg]]

* Tutorial
** Defining a Service
   In the simplest case, a service is a named collection of providers
   with an optional documentation string:
   #+BEGIN_SRC lisp :results value :exports both
     (service-provider:define-service my-service
       (:documentation
        "Providers of this service do stuff."))
   #+END_SRC

   #+RESULTS:
   : #

** Registering a Provider
   A provider of a service can be anything for which a method on
   =service-provider:make-provider=, and optionally
   =service-provider:make-provider-form=, is defined.

   For the common cases in which a provider instantiates a class or
   calls a functions, the builtin provider classes
   =service-provider:class-provider= and
   =service-provider:function-provider= can be used. The easiest way
   to register providers of these two kinds are the functions
   =service-provider:register-provider/class= and
   =service-provider:register-provider/function= respectively.

   For example, registering a class as a provider of a service can be
   accomplished like this:
   #+BEGIN_SRC lisp :results value :exports both
     (defclass my-class ()
       ((foo :initarg :foo)))

     (service-provider:register-provider/class 'my-service 'my-class)
   #+END_SRC

   #+RESULTS:
   : #

** Instantiating a Provider
   The primary way to instantiate a service provider is
   =service-provider:make-provider= which resembles =cl:make-instance=
   but takes a service and a provider designator instead of a class
   designator:
   #+BEGIN_SRC lisp :results value :exports both
     (service-provider:make-provider 'my-service 'my-class :foo 1)
   #+END_SRC

   #+RESULTS:
   : #

** Introspecting a Service
   Introspection of services works much like CLOS introspection: after
   retrieving a service object, reader functions as well as
   =cl:describe= and =cl:documentation= can be applied to it:
   #+BEGIN_SRC lisp :results output :exports both
     (let ((service (service-provider:find-service 'my-service)))
       (print (list (service-provider:service-name service)
                    (service-provider:service-providers service)))
       (fresh-line)
       (describe service)
       (fresh-line)
       (print (documentation service t)))
   #+END_SRC

   #+RESULTS:
   :
   : (MY-SERVICE (#))
   : #1=#
   :
   : Providers:
   : #1=#
   :
   : "Providers of this service do stuff."

** Compilation
   The system has some support for detecting uses of non-existent
   services and providers at compile-time. In particular, the
   =service-provider:make-provider= function can signal
   =cl:style-warning= s when service and/or provider arguments are
   constant and do not designate existing services or providers:
   #+BEGIN_SRC lisp :results output :exports both
     (handler-bind ((warning (lambda (condition)
                               (format t "~S:~%~2@T~A~%"
                                       (type-of condition) condition))))
       (compile nil '(lambda ()
                       (service-provider:make-provider :no-such-service :provider)))
       (compile nil '(lambda ()
                       (service-provider:make-provider 'my-service :no-such-provider))))
   #+END_SRC

   #+RESULTS:
   : SERVICE-PROVIDER:MISSING-SERVICE-WARNING:
   :   No service is known for the designator :NO-SUCH-SERVICE.
   : SERVICE-PROVIDER:MISSING-PROVIDER-WARNING:
   :   No provider of service # is
   :   known for the designator :NO-SUCH-PROVIDER.

** TODO Efficiency Considerations
* Dictionary
  #+begin_src lisp :results none :exports none :session "doc"
    (ql:quickload '(:architecture.service-provider :alexandria :split-sequence))
    (defun doc (symbol kind)
      (let* ((lambda-list (sb-introspect:function-lambda-list symbol))
             (string      (documentation symbol kind))
             (lines       (split-sequence:split-sequence #\Newline string))
             (trimmed     (mapcar (alexandria:curry #'string-left-trim '(#\Space)) lines)))
        (format nil "~(~A~) ~<~{~A~^ ~}~:@>~2%~{~A~^~%~}"
                symbol (list lambda-list) trimmed)))
  #+end_src
** Service Protocol
   The following generic functions operate on service objects:
   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:service-name 'function)
   #+END_SRC

   #+RESULTS:
   : service-name SERVICE
   :
   : Return the symbol which is the name of SERVICE.

   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:service-providers 'function)
   #+END_SRC

   #+RESULTS:
   : service-providers SERVICE
   :
   : Return a sequence of the providers of SERVICE.

   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:service-providers/alist 'function)
   #+END_SRC

   #+RESULTS:
   : service-providers/alist SERVICE
   :
   : Return the providers of SERVICE as an alist in which CARs are
   : provider names and CDRs are the corresponding provider objects.

   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:service-providers/plist 'function)
   #+END_SRC

   #+RESULTS:
   : service-providers/plist SERVICE
   :
   : Return the providers of SERVICE as a plist in which keys are
   : provider names and values are the corresponding provider
   : objects.

   The following generic functions query and manipulate the global set
   of services:
   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:find-service 'function)
   #+END_SRC

   #+RESULTS:
   #+begin_example
   find-service NAME &KEY IF-DOES-NOT-EXIST

   Find and return the service designated by the `service-designator'
   NAME.

   IF-DOES-NOT-EXIST controls the behavior in case the designated
   service cannot be found:

   The values #'error and 'error cause a `missing-service-error' to
   be signaled.

   The values #'warn and 'warn cause a `missing-service-warning' to
   be signaled and nil to be returned.

   The value nil causes nil to be returned without any conditions
   being signaled.

   `retry' and `use-value' restarts are established around error
   signaling (if IF-DOES-NOT-EXIST mandates that).
#+end_example

   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc '(setf service-provider:find-service) 'function)
   #+END_SRC

   #+RESULTS:
   #+begin_example
   (setf find-service) NEW-VALUE NAME &KEY IF-DOES-NOT-EXIST

   Set the service designated by the `service-designator' NAME to
   NEW-VALUE. When non-nil, NEW-VALUE has to implement the service
   protocol.

   If NAME already designates a service, the existing service object
   is replaced with NEW-VALUE.

   If NEW-VALUE is nil, an existing service designated by NAME is
   removed.

   IF-DOES-NOT-EXIST is accepted for parity with `find-service' and
   usually ignored. However, when NEW-VALUE is nil, IF-DOES-NOT-EXIST
   controls whether an error should be signaled in case the
   to-be-removed service does not exist.
#+end_example

** Provider Protocol
   The following generic functions operate on provider objects:
   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:provider-name 'function)
   #+END_SRC

   #+RESULTS:
   : provider-name PROVIDER
   :
   : Return the symbol which is the name of PROVIDER.

   The following generic functions query and manipulate the providers
   of a service:
   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:find-provider 'function)
   #+END_SRC

   #+RESULTS:
   #+begin_example
   find-provider SERVICE PROVIDER &KEY IF-DOES-NOT-EXIST

   Find and return the provider designated by the
   `provider-designator' PROVIDER in the service designated by the
   `service-designator' SERVICE.

   IF-DOES-NOT-EXIST controls the behavior in case SERVICE or
   PROVIDER cannot be found:

   The values #'error and 'error cause a `missing-service-error' to
   be signaled if SERVICE cannot be found and a
   `missing-provider-error' to be signaled if PROVIDER cannot be
   found.

   The values #'warn and 'warn cause a `missing-service-warning' to
   be signaled if SERVICE cannot be found and a
   `missing-provider-warning' to be signaled if PROVIDER cannot be
   found. In both cases, nil is returned.

   The value nil causes nil to be returned without any conditions
   being signaled.

   `retry' and `use-value' restarts are established around error
   signaling (if IF-DOES-NOT-EXIST mandates that).
#+end_example

   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc '(setf service-provider:find-provider) 'function)
   #+END_SRC

   #+RESULTS:
   #+begin_example
   (setf find-provider) NEW-VALUE SERVICE PROVIDER &KEY IF-DOES-NOT-EXIST

   Set the provider designated by the `provider-designator' PROVIDER
   in the service designated by the `service-designator' SERVICE to
   NEW-VALUE. When non-nil, NEW-VALUE has to implement the provider
   protocol.

   If SERVICE and PROVIDER already designate a provider, the existing
   provider object is replaced with NEW-VALUE.

   If NEW-VALUE is nil, an existing provider designated by SERVICE
   and PROVIDER is removed.

   IF-DOES-NOT-EXIST is accepted for parity with `find-provider' and
   usually ignored. However, when NEW-VALUE is nil, IF-DOES-NOT-EXIST
   controls whether an error should be signaled in case the
   to-be-removed provider does not exist.
#+end_example

   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:update-provider 'function)
   #+END_SRC

   #+RESULTS:
   : update-provider SERVICE NAME PROVIDER
   :
   : Update the provider designated by NAME in SERVICE with the new
   : value PROVIDER.

   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:add-provider 'function)
   #+END_SRC

   #+RESULTS:
   : add-provider SERVICE NAME PROVIDER
   :
   : Add PROVIDER to SERVICE as the provider designated by NAME.

   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:remove-provider 'function)
   #+END_SRC

   #+RESULTS:
   : remove-provider SERVICE NAME PROVIDER
   :
   : Remove PROVIDER from SERVICE as the provider designated by NAME.

   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:make-provider 'function)
   #+END_SRC

   #+RESULTS:
   : make-provider SERVICE PROVIDER &REST ARGS
   :
   : Make and return an instance of the provider designated by the
   : `provider-designator' PROVIDER of the service designated by the
   : `service-designator' SERVICE.

** Convenience Layer
   The following convenience functions and macros are provided for
   registering services:

   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:register-service 'function)
   #+END_SRC

   #+RESULTS:
   #+begin_example
   register-service NAME SERVICE-CLASS &REST INITARGS

   Register a service named NAME according to SERVICE-CLASS and INITARGS.

   If NAME does not name an existing service, an instance of
   SERVICE-CLASS is made with INITARGS and registered.

   If NAME names an existing service, the service is updated via
   re-initialization, potentially changing its class to SERVICE-CLASS.

   The new or updated service instance is returned.
#+end_example

   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:define-service 'function)
   #+END_SRC

   #+RESULTS:
   #+begin_example
   define-service NAME &BODY OPTIONS

   Define a service named NAME with additional aspects specified in
   OPTIONS.

   The following OPTIONS are accepted:

   (:service-class CLASS-NAME)

   Name of the class of the to-be-defined service. Defaults to
   `standard-service'.

   (:documentation STRING)

   If NAME already designates a service, the existing service object
   is destructively modified according to OPTIONS.

   The service definition is performed at compile, load and execute
   time to ensure availability in subsequent provider definitions
   and/or compilation of e.g. `find-service' calls.
#+end_example

   The following convenience functions are provided for registering
   providers:

   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:register-provider 'function)
   #+END_SRC

   #+RESULTS:
   #+begin_example
   register-provider SERVICE-NAME PROVIDER-NAME PROVIDER-CLASS &REST INITARGS

   Register a provider of SERVICE-NAME according to PROVIDER-NAME,
   PROVIDER-CLASS and INITARGS.

   If PROVIDER-NAME does not name an existing provider of the service
   designated by SERVICE-NAME, an instance of PROVIDER-CLASS is made
   with INITARGS and registered.

   If PROVIDER-NAME names an existing provider of the service
   designated by SERVICE-NAME, the provider is updated via
   re-initialization, potentially changing its class to
   PROVIDER-CLASS.

   The new or updated provider instance is returned.
#+end_example

   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:register-provider/class 'function)
   #+END_SRC

   #+RESULTS:
   #+begin_example
   register-provider/class SERVICE-NAME PROVIDER-NAME &REST ARGS &KEY
                           (PROVIDER-CLASS 'CLASS-PROVIDER) (CLASS PROVIDER-NAME)
                           &ALLOW-OTHER-KEYS

   Register CLASS as the provider named PROVIDER-NAME of the service
   designated by SERVICE-NAME.

   PROVIDER-CLASS can be used to select the class of which the created
   provider should be an instance.

   The `cl:documentation' of CLASS is used as the documentation of the
   provider.
#+end_example

   #+BEGIN_SRC lisp :results value :exports results :session "doc"
     (doc 'service-provider:register-provider/function 'function)
   #+END_SRC

   #+RESULTS:
   #+begin_example
   register-provider/function SERVICE-NAME PROVIDER-NAME &REST ARGS &KEY
                              (PROVIDER-CLASS 'FUNCTION-PROVIDER) #'PROVIDER-NAME
                              &ALLOW-OTHER-KEYS

   Register FUNCTION as the provider named PROVIDER-NAME of the
   service designated by SERVICE-NAME.

   PROVIDER-CLASS can be used to select the class of which the created
   provider should be an instance.

   The `cl:documentation' of FUNCTION is used as the documentation of
   the provider.
#+end_example

* Related Work
** Java Service Provider Interface
   See [[http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html][documentation of the ServiceLoader class]] for details.

   Differences:
   * =architecture.service-providers= does not tie services to classes
     (or interfaces); services and providers are identified by
     symbols (or lists of symbols).
   * Introspection is modeled after CLOS introspection, e.g.
     =cl:find-class=.
   * Documentation is modeled after and integrates =cl:defclass= and
     =cl:documentation=.
   * Redefinitions and class-changes of services and service providers
     are supported.
   * Support for compile-time error-detection and optimizations can be
     added.

* Settings                                                         :noexport:

#+OPTIONS: H:2 num:nil toc:t \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
#+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc


Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

The main system appears first, followed by any subsystem dependency.


Previous: , Up: Systems   [Contents][Index]

2.1 architecture.service-provider

Maintainer

Jan Moringen <jmoringe@techfak.uni-bielefeld.de>

Author

Jan Moringen <jmoringe@techfak.uni-bielefeld.de>

License

LLGPLv3

Description

Provides a framework for registering and finding services and providers of these.

Version

0.6.0

Dependencies
Source

architecture.service-provider.asd (file)

Component

src (module)


Next: , Previous: , Up: Top   [Contents][Index]

3 Modules

Modules are listed depth-first from the system components tree.


Previous: , Up: Modules   [Contents][Index]

3.1 architecture.service-provider/src

Parent

architecture.service-provider (system)

Location

src/

Components

Next: , Previous: , Up: Top   [Contents][Index]

4 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

4.1 Lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.1 architecture.service-provider.asd

Location

architecture.service-provider.asd

Systems

architecture.service-provider (system)


Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.2 architecture.service-provider/src/package.lisp

Parent

src (module)

Location

src/package.lisp

Packages

service-provider


Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.3 architecture.service-provider/src/types.lisp

Dependency

package.lisp (file)

Parent

src (module)

Location

src/types.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.4 architecture.service-provider/src/variables.lisp

Dependency

types.lisp (file)

Parent

src (module)

Location

src/variables.lisp

Internal Definitions

*services* (special variable)


Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.5 architecture.service-provider/src/conditions.lisp

Dependency

variables.lisp (file)

Parent

src (module)

Location

src/conditions.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.6 architecture.service-provider/src/protocol.lisp

Dependency

conditions.lisp (file)

Parent

src (module)

Location

src/protocol.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.7 architecture.service-provider/src/mixins.lisp

Dependency

protocol.lisp (file)

Parent

src (module)

Location

src/mixins.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.8 architecture.service-provider/src/service.lisp

Dependency

mixins.lisp (file)

Parent

src (module)

Location

src/service.lisp

Exported Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.9 architecture.service-provider/src/provider.lisp

Dependency

service.lisp (file)

Parent

src (module)

Location

src/provider.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.10 architecture.service-provider/src/macros.lisp

Dependency

provider.lisp (file)

Parent

src (module)

Location

src/macros.lisp

Exported Definitions
Internal Definitions

define-register-function (macro)


Previous: , Up: Lisp files   [Contents][Index]

4.1.11 architecture.service-provider/src/compilation.lisp

Dependency

macros.lisp (file)

Parent

src (module)

Location

src/compilation.lisp

Exported Definitions
Internal Definitions

check-service-and-provider (function)


Next: , Previous: , Up: Top   [Contents][Index]

5 Packages

Packages are listed by definition order.


Previous: , Up: Packages   [Contents][Index]

5.1 service-provider

This package contains functions and classes for defining, using and introspecting services and providers thereof.

For services, the most important functions and macros are ‘find-service’ and ‘define-service’.

For providers, the most important functions and macros are ‘find-provider’, ‘make-provider’, ‘register-provider/class’ and ‘register-provider/funtion’.

Source

package.lisp (file)

Use List
Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

6 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

6.1 Exported definitions


Next: , Previous: , Up: Exported definitions   [Contents][Index]

6.1.1 Macros

Macro: define-service NAME &body OPTIONS

Define a service named NAME with additional aspects specified in OPTIONS.

The following OPTIONS are accepted:

(:service-class CLASS-NAME)

Name of the class of the to-be-defined service. Defaults to ‘standard-service’.

(:documentation STRING)

If NAME already designates a service, the existing service object is destructively modified according to OPTIONS.

The service definition is performed at compile, load and execute time to ensure availability in subsequent provider definitions and/or compilation of e.g. ‘find-service’ calls.

Package

service-provider

Source

macros.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

6.1.2 Compiler macros

Compiler Macro: add-provider SERVICE NAME PROVIDER
Package

service-provider

Source

compilation.lisp (file)

Compiler Macro: find-provider SERVICE PROVIDER &key IF-DOES-NOT-EXIST
Package

service-provider

Source

compilation.lisp (file)

Compiler Macro: make-provider SERVICE PROVIDER &rest ARGS
Package

service-provider

Source

compilation.lisp (file)

Compiler Macro: register-provider SERVICE-NAME PROVIDER-NAME PROVIDER-CLASS &rest INITARGS
Package

service-provider

Source

compilation.lisp (file)

Compiler Macro: register-provider/class SERVICE-NAME PROVIDER-NAME &key &allow-other-keys
Package

service-provider

Source

compilation.lisp (file)

Compiler Macro: register-provider/function SERVICE-NAME PROVIDER-NAME &key &allow-other-keys
Package

service-provider

Source

compilation.lisp (file)

Compiler Macro: remove-provider SERVICE NAME PROVIDER
Package

service-provider

Source

compilation.lisp (file)

Compiler Macro: update-provider SERVICE NAME PROVIDER
Package

service-provider

Source

compilation.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

6.1.3 Functions

Function: register-provider SERVICE-NAME PROVIDER-NAME PROVIDER-CLASS &rest INITARGS

Register a provider of SERVICE-NAME according to PROVIDER-NAME, PROVIDER-CLASS and INITARGS.

If PROVIDER-NAME does not name an existing provider of the service designated by SERVICE-NAME, an instance of PROVIDER-CLASS is made with INITARGS and registered.

If PROVIDER-NAME names an existing provider of the service designated by SERVICE-NAME, the provider is updated via re-initialization, potentially changing its class to PROVIDER-CLASS.

The new or updated provider instance is returned.

Package

service-provider

Source

macros.lisp (file)

Function: register-provider/class SERVICE-NAME PROVIDER-NAME &rest ARGS &key PROVIDER-CLASS CLASS &allow-other-keys

Register CLASS as the provider named PROVIDER-NAME of the service designated by SERVICE-NAME.

PROVIDER-CLASS can be used to select the class of which the created provider should be an instance.

The ‘cl:documentation’ of CLASS is used as the documentation of the provider.

Package

service-provider

Source

macros.lisp (file)

Function: register-provider/function SERVICE-NAME PROVIDER-NAME &rest ARGS &key PROVIDER-CLASS FUNCTION &allow-other-keys

Register FUNCTION as the provider named PROVIDER-NAME of the service designated by SERVICE-NAME.

PROVIDER-CLASS can be used to select the class of which the created provider should be an instance.

The ‘cl:documentation’ of FUNCTION is used as the documentation of the provider.

Package

service-provider

Source

macros.lisp (file)

Function: register-service NAME SERVICE-CLASS &rest INITARGS

Register a service named NAME according to SERVICE-CLASS and INITARGS.

If NAME does not name an existing service, an instance of SERVICE-CLASS is made with INITARGS and registered.

If NAME names an existing service, the service is updated via re-initialization, potentially changing its class to SERVICE-CLASS.

The new or updated service instance is returned.

Package

service-provider

Source

macros.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

6.1.4 Generic functions

Generic Function: add-provider SERVICE NAME PROVIDER

Add PROVIDER to SERVICE as the provider designated by NAME.

Package

service-provider

Source

protocol.lisp (file)

Methods
Method: add-provider (SERVICE provider-list-mixin) NAME PROVIDER
Source

mixins.lisp (file)

Generic Function: find-provider SERVICE PROVIDER &key IF-DOES-NOT-EXIST

Find and return the provider designated by the ‘provider-designator’ PROVIDER in the service designated by the ‘service-designator’ SERVICE.

IF-DOES-NOT-EXIST controls the behavior in case SERVICE or PROVIDER cannot be found:

The values #’error and ’error cause a ‘missing-service-error’ to be signaled if SERVICE cannot be found and a ‘missing-provider-error’ to be signaled if PROVIDER cannot be found.

The values #’warn and ’warn cause a ‘missing-service-warning’ to be signaled if SERVICE cannot be found and a ‘missing-provider-warning’ to be signaled if PROVIDER cannot be found. In both cases, nil is returned.

The value nil causes nil to be returned without any conditions being signaled.

‘retry’ and ‘use-value’ restarts are established around error signaling (if IF-DOES-NOT-EXIST mandates that).

Package

service-provider

Source

protocol.lisp (file)

Writer

(setf find-provider) (generic function)

Methods
Method: find-provider (SERVICE provider-list-mixin) (PROVIDER cons) &key IF-DOES-NOT-EXIST
Source

mixins.lisp (file)

Method: find-provider (SERVICE provider-list-mixin) (PROVIDER symbol) &key IF-DOES-NOT-EXIST
Source

mixins.lisp (file)

Method: find-provider (SERVICE symbol) PROVIDER &key IF-DOES-NOT-EXIST
Method: find-provider SERVICE PROVIDER &key IF-DOES-NOT-EXIST around
Generic Function: (setf find-provider) NEW-VALUE SERVICE PROVIDER &key IF-DOES-NOT-EXIST

Set the provider designated by the ‘provider-designator’ PROVIDER in the service designated by the ‘service-designator’ SERVICE to NEW-VALUE. When non-nil, NEW-VALUE has to implement the provider protocol.

If SERVICE and PROVIDER already designate a provider, the existing provider object is replaced with NEW-VALUE.

If NEW-VALUE is nil, an existing provider designated by SERVICE and PROVIDER is removed.

IF-DOES-NOT-EXIST is accepted for parity with ‘find-provider’ and usually ignored. However, when NEW-VALUE is nil, IF-DOES-NOT-EXIST controls whether an error should be signaled in case the to-be-removed provider does not exist.

Package

service-provider

Source

protocol.lisp (file)

Reader

find-provider (generic function)

Methods
Method: (setf find-provider) NEW-VALUE (SERVICE provider-list-mixin) (PROVIDER cons) &key IF-DOES-NOT-EXIST
Source

mixins.lisp (file)

Method: (setf find-provider) NEW-VALUE (SERVICE provider-list-mixin) (PROVIDER symbol) &key IF-DOES-NOT-EXIST
Source

mixins.lisp (file)

Method: (setf find-provider) NEW-VALUE (SERVICE symbol) PROVIDER &key IF-DOES-NOT-EXIST
Generic Function: find-service NAME &key IF-DOES-NOT-EXIST

Find and return the service designated by the ‘service-designator’ NAME.

IF-DOES-NOT-EXIST controls the behavior in case the designated service cannot be found:

The values #’error and ’error cause a ‘missing-service-error’ to be signaled.

The values #’warn and ’warn cause a ‘missing-service-warning’ to be signaled and nil to be returned.

The value nil causes nil to be returned without any conditions being signaled.

‘retry’ and ‘use-value’ restarts are established around error signaling (if IF-DOES-NOT-EXIST mandates that).

Package

service-provider

Source

protocol.lisp (file)

Writer

(setf find-service) (generic function)

Methods
Method: find-service (NAME symbol) &key IF-DOES-NOT-EXIST
Generic Function: (setf find-service) NEW-VALUE NAME &key IF-DOES-NOT-EXIST

Set the service designated by the ‘service-designator’ NAME to NEW-VALUE. When non-nil, NEW-VALUE has to implement the service protocol.

If NAME already designates a service, the existing service object is replaced with NEW-VALUE.

If NEW-VALUE is nil, an existing service designated by NAME is removed.

IF-DOES-NOT-EXIST is accepted for parity with ‘find-service’ and usually ignored. However, when NEW-VALUE is nil, IF-DOES-NOT-EXIST controls whether an error should be signaled in case the to-be-removed service does not exist.

Package

service-provider

Source

protocol.lisp (file)

Reader

find-service (generic function)

Methods
Method: (setf find-service) NEW-VALUE (NAME symbol) &key IF-DOES-NOT-EXIST
Generic Function: make-provider SERVICE PROVIDER &rest ARGS

Make and return an instance of the provider designated by the ‘provider-designator’ PROVIDER of the service designated by the ‘service-designator’ SERVICE.

Package

service-provider

Source

protocol.lisp (file)

Methods
Method: make-provider SERVICE (PROVIDER function-provider) &rest ARGS
Source

provider.lisp (file)

Method: make-provider SERVICE (PROVIDER class-provider) &rest ARGS
Source

provider.lisp (file)

Method: make-provider SERVICE PROVIDER &rest ARGS
Method: make-provider (SERVICE symbol) PROVIDER &rest ARGS
Generic Function: missing-provider-designator CONDITION
Package

service-provider

Methods
Method: missing-provider-designator (CONDITION missing-provider-condition)
Source

conditions.lisp (file)

Generic Function: missing-provider-service CONDITION
Package

service-provider

Methods
Method: missing-provider-service (CONDITION missing-provider-condition)
Source

conditions.lisp (file)

Generic Function: missing-service-designator CONDITION
Package

service-provider

Methods
Method: missing-service-designator (CONDITION missing-service-condition)
Source

conditions.lisp (file)

Generic Function: provider-class OBJECT
Package

service-provider

Methods
Method: provider-class (CLASS-PROVIDER class-provider)

Stores the class providing the service.

Source

provider.lisp (file)

Generic Function: provider-function OBJECT
Package

service-provider

Methods
Method: provider-function (FUNCTION-PROVIDER function-provider)

Stores the function providing the service.

Source

provider.lisp (file)

Generic Function: provider-name PROVIDER

Return the symbol which is the name of PROVIDER.

Package

service-provider

Source

protocol.lisp (file)

Methods
Method: provider-name (FUNCTION-PROVIDER function-provider)

automatically generated reader method

Source

provider.lisp (file)

Method: provider-name (CLASS-PROVIDER class-provider)

automatically generated reader method

Source

provider.lisp (file)

Generic Function: remove-provider SERVICE NAME PROVIDER

Remove PROVIDER from SERVICE as the provider designated by NAME.

Package

service-provider

Source

protocol.lisp (file)

Methods
Method: remove-provider (SERVICE provider-list-mixin) NAME PROVIDER
Source

mixins.lisp (file)

Generic Function: service-name SERVICE

Return the symbol which is the name of SERVICE.

Package

service-provider

Source

protocol.lisp (file)

Methods
Method: service-name (STANDARD-SERVICE standard-service)

automatically generated reader method

Source

service.lisp (file)

Method: service-name (SERVICE symbol)
Generic Function: service-providers SERVICE

Return a sequence of the providers of SERVICE.

Package

service-provider

Source

protocol.lisp (file)

Methods
Method: service-providers (SERVICE provider-list-mixin)
Source

mixins.lisp (file)

Method: service-providers (SERVICE symbol)
Generic Function: service-providers/alist SERVICE

Return the providers of SERVICE as an alist in which CARs are provider names and CDRs are the corresponding provider objects.

Package

service-provider

Source

protocol.lisp (file)

Methods
Method: service-providers/alist (SERVICE provider-list-mixin)
Source

mixins.lisp (file)

Method: service-providers/alist (SERVICE symbol)
Generic Function: service-providers/plist SERVICE

Return the providers of SERVICE as a plist in which keys are provider names and values are the corresponding provider objects.

Package

service-provider

Source

protocol.lisp (file)

Methods
Method: service-providers/plist (SERVICE provider-list-mixin)
Source

mixins.lisp (file)

Method: service-providers/plist (SERVICE symbol)
Generic Function: update-provider SERVICE NAME PROVIDER

Update the provider designated by NAME in SERVICE with the new value PROVIDER.

Package

service-provider

Source

protocol.lisp (file)

Methods
Method: update-provider (SERVICE provider-list-mixin) NAME PROVIDER
Source

mixins.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

6.1.5 Conditions

Condition: missing-provider-error ()

This error is signaled when a provider of a certain service is specified as a designator but cannot be found.

Package

service-provider

Source

conditions.lisp (file)

Direct superclasses
Condition: missing-provider-warning ()

This warning is signaled when a provider of a certain service is specified as a designator but cannot be found.

Package

service-provider

Source

conditions.lisp (file)

Direct superclasses
Condition: missing-service-error ()

Subclasses of this are signaled when services specified by designators cannot be found.

Package

service-provider

Source

conditions.lisp (file)

Direct superclasses
Condition: missing-service-warning ()

This warning is signaled when a service specified by a designator cannot be found.

Package

service-provider

Source

conditions.lisp (file)

Direct superclasses
Condition: service-provider-condition ()

Superclass of all conditions signaled by the service-provider system.

Package

service-provider

Source

conditions.lisp (file)

Direct superclasses

condition (condition)

Direct subclasses

Next: , Previous: , Up: Exported definitions   [Contents][Index]

6.1.6 Classes

Class: class-provider ()

Instances of this class provide a particular service by instantiating a given class.

Package

service-provider

Source

provider.lisp (file)

Direct superclasses
Direct methods
Direct slots
Slot: name
Readers

provider-name (generic function)

Slot: class

Stores the class providing the service.

Type

class

Readers

provider-class (generic function)

Direct Default Initargs
InitargValue
:class(more-conditions:missing-required-initarg (quote service-provider:class-provider) :class)
Class: function-provider ()

Instances of this class provide a particular service by calling a given function and returning the result.

Package

service-provider

Source

provider.lisp (file)

Direct superclasses
Direct methods
Direct slots
Slot: name
Readers

provider-name (generic function)

Slot: function

Stores the function providing the service.

Type

(or symbol function)

Readers

provider-function (generic function)

Direct Default Initargs
InitargValue
:function(more-conditions:missing-required-initarg (quote service-provider:function-provider) :function)
Class: standard-service ()

This class provides a basic implementation of the service protocol. It can be used as a superclass for specialized service classes.

Package

service-provider

Source

service.lisp (file)

Direct superclasses
Direct methods
  • documentation (method)
  • describe-object (method)
  • print-items (method)
  • service-name (method)
Direct slots
Slot: name
Readers

service-name (generic function)


Previous: , Up: Exported definitions   [Contents][Index]

6.1.7 Types

Type: provider-designator ()

A symbol designating a service provider or a service provider.

Package

service-provider

Source

types.lisp (file)

Type: service-designator ()

A symbol designating a service or a service.

Package

service-provider

Source

types.lisp (file)


Previous: , Up: Definitions   [Contents][Index]

6.2 Internal definitions


Next: , Previous: , Up: Internal definitions   [Contents][Index]

6.2.1 Special variables

Special Variable: *services*

Stores a mapping of service names to service objects.

Package

service-provider

Source

variables.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

6.2.2 Macros

Macro: define-register-function NAME ARGS &key REQUIRED-INITARGS DEFAULT-PROVIDER-CLASS DOCUMENTATION

Define a function named NAME with a lambda-list of the form

(SERVICE-NAME PROVIDER-NAME . KEYWORD-PARAMETERS)

which registers service providers for the given service + provider combinations. ARGS has to be a list of elements the form

(NAME DEFAULT)

. As part of KEYWORD-PARAMETERS, the defined function accepts a :provider-class keyword parameter which defaults to DEFAULT-PROVIDER-CLASS. When instantiated, the provider class will receive as initargs REQUIRED-INITARGS, .

If supplied, DOCUMENTATION will be used as the documentation string of the defined function.

Package

service-provider

Source

macros.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

6.2.3 Functions

Function: %add-or-update-provider SERVICE NAME PROVIDER
Package

service-provider

Source

mixins.lisp (file)

Function: %provider-print-items NAME OBJECT-NAME
Package

service-provider

Source

provider.lisp (file)

Function: %remove-provider SERVICE NAME IF-DOES-NOT-EXIST
Package

service-provider

Source

mixins.lisp (file)

Function: check-service-and-provider SERVICE-FORM &optional PROVIDER-FORM
Package

service-provider

Source

compilation.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

6.2.4 Generic functions

Generic Function: make-provider-form SERVICE PROVIDER ARGS ENVIRONMENT

Return a form which makes and returns an instance of the provider designated by the ‘provider-designator’ PROVIDER of the service designated by the ‘service-designator’ SERVICE for ARGS and ENVIRONMENT.

Package

service-provider

Source

protocol.lisp (file)

Methods
Method: make-provider-form SERVICE (PROVIDER function-provider) (ARGS list) ENVIRONMENT
Source

provider.lisp (file)

Method: make-provider-form SERVICE (PROVIDER class-provider) (ARGS list) ENVIRONMENT
Source

provider.lisp (file)

Method: make-provider-form SERVICE PROVIDER ARGS ENVIRONMENT
Method: make-provider-form (SERVICE symbol) PROVIDER ARGS ENVIRONMENT
Generic Function: service-%providers OBJECT
Package

service-provider

Methods
Method: service-%providers (PROVIDER-LIST-MIXIN provider-list-mixin)

Associate provider names to provider instances.

Source

mixins.lisp (file)

Generic Function: service-documentation OBJECT
Generic Function: (setf service-documentation) NEW-VALUE OBJECT
Package

service-provider

Methods
Method: service-documentation (DOCUMENTATION-MIXIN documentation-mixin)
Method: (setf service-documentation) NEW-VALUE (DOCUMENTATION-MIXIN documentation-mixin)

Stores nil or a documentation string.

Source

mixins.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

6.2.5 Conditions

Condition: missing-provider-condition ()

Subclasses of this are signaled when providers specified by designators cannot be found within gives services.

Package

service-provider

Source

conditions.lisp (file)

Direct superclasses

service-provider-condition (condition)

Direct subclasses
Direct methods
Direct slots
Slot: service

Stores the service in which the specified provider could not be found.

Initargs

:service

Readers

missing-provider-service (generic function)

Slot: designator

The designator for which no provider could be found.

Initargs

:designator

Readers

missing-provider-designator (generic function)

Direct Default Initargs
InitargValue
:designator(more-conditions:missing-required-initarg (quote service-provider::missing-provider-condition) :designator)
:service(more-conditions:missing-required-initarg (quote service-provider::missing-provider-condition) :service)
Condition: missing-service-condition ()

Subclasses of this are signaled when services specified by designators cannot be found.

Package

service-provider

Source

conditions.lisp (file)

Direct superclasses

service-provider-condition (condition)

Direct subclasses
Direct methods

missing-service-designator (method)

Direct slots
Slot: designator

The designator for which no class could be found.

Initargs

:designator

Readers

missing-service-designator (generic function)

Direct Default Initargs
InitargValue
:designator(more-conditions:missing-required-initarg (quote service-provider::missing-service-condition) :designator)

Next: , Previous: , Up: Internal definitions   [Contents][Index]

6.2.6 Classes

Class: documentation-mixin ()

This class is intended to be mixed into service or provider classes which support associated documentation strings.

Package

service-provider

Source

mixins.lisp (file)

Direct superclasses

standard-object (class)

Direct subclasses

standard-service (class)

Direct methods
Direct slots
Slot: documentation

Stores nil or a documentation string.

Type

(or null string)

Initargs

:documentation

Readers

service-documentation (generic function)

Writers

(setf service-documentation) (generic function)

Class: name-mixin ()

This class is intended to be mixed into service or provider classes which have an associated name.

Package

service-provider

Source

mixins.lisp (file)

Direct superclasses

standard-object (class)

Direct subclasses
Direct slots
Slot: name

Stores the name of the service or provider.

Type

service-provider:provider-designator

Initargs

:name

Direct Default Initargs
InitargValue
:name(more-conditions:missing-required-initarg (quote service-provider::name-mixin) :name)
Class: provider-list-mixin ()

This class is intended to be mixed service classes which have to store a list of providers.

Package

service-provider

Source

mixins.lisp (file)

Direct superclasses

standard-object (class)

Direct subclasses

standard-service (class)

Direct methods
Direct slots
Slot: providers

Associate provider names to provider instances.

Type

hash-table

Initform

(make-hash-table :test (function equal))

Readers

service-%providers (generic function)


Previous: , Up: Internal definitions   [Contents][Index]

6.2.7 Types

Type: provider-designator/cons ()
Package

service-provider

Source

types.lisp (file)

Type: provider-designator/symbol ()
Package

service-provider

Source

types.lisp (file)


Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Jump to:   A   F   L   M  
Index Entry  Section

A
architecture.service-provider.asd: The architecture<dot>service-provider<dot>asd file
architecture.service-provider/src: The architecture<dot>service-provider/src module
architecture.service-provider/src/compilation.lisp: The architecture<dot>service-provider/src/compilation<dot>lisp file
architecture.service-provider/src/conditions.lisp: The architecture<dot>service-provider/src/conditions<dot>lisp file
architecture.service-provider/src/macros.lisp: The architecture<dot>service-provider/src/macros<dot>lisp file
architecture.service-provider/src/mixins.lisp: The architecture<dot>service-provider/src/mixins<dot>lisp file
architecture.service-provider/src/package.lisp: The architecture<dot>service-provider/src/package<dot>lisp file
architecture.service-provider/src/protocol.lisp: The architecture<dot>service-provider/src/protocol<dot>lisp file
architecture.service-provider/src/provider.lisp: The architecture<dot>service-provider/src/provider<dot>lisp file
architecture.service-provider/src/service.lisp: The architecture<dot>service-provider/src/service<dot>lisp file
architecture.service-provider/src/types.lisp: The architecture<dot>service-provider/src/types<dot>lisp file
architecture.service-provider/src/variables.lisp: The architecture<dot>service-provider/src/variables<dot>lisp file

F
File, Lisp, architecture.service-provider.asd: The architecture<dot>service-provider<dot>asd file
File, Lisp, architecture.service-provider/src/compilation.lisp: The architecture<dot>service-provider/src/compilation<dot>lisp file
File, Lisp, architecture.service-provider/src/conditions.lisp: The architecture<dot>service-provider/src/conditions<dot>lisp file
File, Lisp, architecture.service-provider/src/macros.lisp: The architecture<dot>service-provider/src/macros<dot>lisp file
File, Lisp, architecture.service-provider/src/mixins.lisp: The architecture<dot>service-provider/src/mixins<dot>lisp file
File, Lisp, architecture.service-provider/src/package.lisp: The architecture<dot>service-provider/src/package<dot>lisp file
File, Lisp, architecture.service-provider/src/protocol.lisp: The architecture<dot>service-provider/src/protocol<dot>lisp file
File, Lisp, architecture.service-provider/src/provider.lisp: The architecture<dot>service-provider/src/provider<dot>lisp file
File, Lisp, architecture.service-provider/src/service.lisp: The architecture<dot>service-provider/src/service<dot>lisp file
File, Lisp, architecture.service-provider/src/types.lisp: The architecture<dot>service-provider/src/types<dot>lisp file
File, Lisp, architecture.service-provider/src/variables.lisp: The architecture<dot>service-provider/src/variables<dot>lisp file

L
Lisp File, architecture.service-provider.asd: The architecture<dot>service-provider<dot>asd file
Lisp File, architecture.service-provider/src/compilation.lisp: The architecture<dot>service-provider/src/compilation<dot>lisp file
Lisp File, architecture.service-provider/src/conditions.lisp: The architecture<dot>service-provider/src/conditions<dot>lisp file
Lisp File, architecture.service-provider/src/macros.lisp: The architecture<dot>service-provider/src/macros<dot>lisp file
Lisp File, architecture.service-provider/src/mixins.lisp: The architecture<dot>service-provider/src/mixins<dot>lisp file
Lisp File, architecture.service-provider/src/package.lisp: The architecture<dot>service-provider/src/package<dot>lisp file
Lisp File, architecture.service-provider/src/protocol.lisp: The architecture<dot>service-provider/src/protocol<dot>lisp file
Lisp File, architecture.service-provider/src/provider.lisp: The architecture<dot>service-provider/src/provider<dot>lisp file
Lisp File, architecture.service-provider/src/service.lisp: The architecture<dot>service-provider/src/service<dot>lisp file
Lisp File, architecture.service-provider/src/types.lisp: The architecture<dot>service-provider/src/types<dot>lisp file
Lisp File, architecture.service-provider/src/variables.lisp: The architecture<dot>service-provider/src/variables<dot>lisp file

M
Module, architecture.service-provider/src: The architecture<dot>service-provider/src module

Jump to:   A   F   L   M  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   %   (  
A   C   D   F   G   M   P   R   S   U  
Index Entry  Section

%
%add-or-update-provider: Internal functions
%provider-print-items: Internal functions
%remove-provider: Internal functions

(
(setf find-provider): Exported generic functions
(setf find-provider): Exported generic functions
(setf find-provider): Exported generic functions
(setf find-provider): Exported generic functions
(setf find-service): Exported generic functions
(setf find-service): Exported generic functions
(setf service-documentation): Internal generic functions
(setf service-documentation): Internal generic functions

A
add-provider: Exported compiler macros
add-provider: Exported generic functions
add-provider: Exported generic functions

C
check-service-and-provider: Internal functions
Compiler Macro, add-provider: Exported compiler macros
Compiler Macro, find-provider: Exported compiler macros
Compiler Macro, make-provider: Exported compiler macros
Compiler Macro, register-provider: Exported compiler macros
Compiler Macro, register-provider/class: Exported compiler macros
Compiler Macro, register-provider/function: Exported compiler macros
Compiler Macro, remove-provider: Exported compiler macros
Compiler Macro, update-provider: Exported compiler macros

D
define-register-function: Internal macros
define-service: Exported macros

F
find-provider: Exported compiler macros
find-provider: Exported generic functions
find-provider: Exported generic functions
find-provider: Exported generic functions
find-provider: Exported generic functions
find-provider: Exported generic functions
find-service: Exported generic functions
find-service: Exported generic functions
Function, %add-or-update-provider: Internal functions
Function, %provider-print-items: Internal functions
Function, %remove-provider: Internal functions
Function, check-service-and-provider: Internal functions
Function, register-provider: Exported functions
Function, register-provider/class: Exported functions
Function, register-provider/function: Exported functions
Function, register-service: Exported functions

G
Generic Function, (setf find-provider): Exported generic functions
Generic Function, (setf find-service): Exported generic functions
Generic Function, (setf service-documentation): Internal generic functions
Generic Function, add-provider: Exported generic functions
Generic Function, find-provider: Exported generic functions
Generic Function, find-service: Exported generic functions
Generic Function, make-provider: Exported generic functions
Generic Function, make-provider-form: Internal generic functions
Generic Function, missing-provider-designator: Exported generic functions
Generic Function, missing-provider-service: Exported generic functions
Generic Function, missing-service-designator: Exported generic functions
Generic Function, provider-class: Exported generic functions
Generic Function, provider-function: Exported generic functions
Generic Function, provider-name: Exported generic functions
Generic Function, remove-provider: Exported generic functions
Generic Function, service-%providers: Internal generic functions
Generic Function, service-documentation: Internal generic functions
Generic Function, service-name: Exported generic functions
Generic Function, service-providers: Exported generic functions
Generic Function, service-providers/alist: Exported generic functions
Generic Function, service-providers/plist: Exported generic functions
Generic Function, update-provider: Exported generic functions

M
Macro, define-register-function: Internal macros
Macro, define-service: Exported macros
make-provider: Exported compiler macros
make-provider: Exported generic functions
make-provider: Exported generic functions
make-provider: Exported generic functions
make-provider: Exported generic functions
make-provider: Exported generic functions
make-provider-form: Internal generic functions
make-provider-form: Internal generic functions
make-provider-form: Internal generic functions
make-provider-form: Internal generic functions
make-provider-form: Internal generic functions
Method, (setf find-provider): Exported generic functions
Method, (setf find-provider): Exported generic functions
Method, (setf find-provider): Exported generic functions
Method, (setf find-service): Exported generic functions
Method, (setf service-documentation): Internal generic functions
Method, add-provider: Exported generic functions
Method, find-provider: Exported generic functions
Method, find-provider: Exported generic functions
Method, find-provider: Exported generic functions
Method, find-provider: Exported generic functions
Method, find-service: Exported generic functions
Method, make-provider: Exported generic functions
Method, make-provider: Exported generic functions
Method, make-provider: Exported generic functions
Method, make-provider: Exported generic functions
Method, make-provider-form: Internal generic functions
Method, make-provider-form: Internal generic functions
Method, make-provider-form: Internal generic functions
Method, make-provider-form: Internal generic functions
Method, missing-provider-designator: Exported generic functions
Method, missing-provider-service: Exported generic functions
Method, missing-service-designator: Exported generic functions
Method, provider-class: Exported generic functions
Method, provider-function: Exported generic functions
Method, provider-name: Exported generic functions
Method, provider-name: Exported generic functions
Method, remove-provider: Exported generic functions
Method, service-%providers: Internal generic functions
Method, service-documentation: Internal generic functions
Method, service-name: Exported generic functions
Method, service-name: Exported generic functions
Method, service-providers: Exported generic functions
Method, service-providers: Exported generic functions
Method, service-providers/alist: Exported generic functions
Method, service-providers/alist: Exported generic functions
Method, service-providers/plist: Exported generic functions
Method, service-providers/plist: Exported generic functions
Method, update-provider: Exported generic functions
missing-provider-designator: Exported generic functions
missing-provider-designator: Exported generic functions
missing-provider-service: Exported generic functions
missing-provider-service: Exported generic functions
missing-service-designator: Exported generic functions
missing-service-designator: Exported generic functions

P
provider-class: Exported generic functions
provider-class: Exported generic functions
provider-function: Exported generic functions
provider-function: Exported generic functions
provider-name: Exported generic functions
provider-name: Exported generic functions
provider-name: Exported generic functions

R
register-provider: Exported compiler macros
register-provider: Exported functions
register-provider/class: Exported compiler macros
register-provider/class: Exported functions
register-provider/function: Exported compiler macros
register-provider/function: Exported functions
register-service: Exported functions
remove-provider: Exported compiler macros
remove-provider: Exported generic functions
remove-provider: Exported generic functions

S
service-%providers: Internal generic functions
service-%providers: Internal generic functions
service-documentation: Internal generic functions
service-documentation: Internal generic functions
service-name: Exported generic functions
service-name: Exported generic functions
service-name: Exported generic functions
service-providers: Exported generic functions
service-providers: Exported generic functions
service-providers: Exported generic functions
service-providers/alist: Exported generic functions
service-providers/alist: Exported generic functions
service-providers/alist: Exported generic functions
service-providers/plist: Exported generic functions
service-providers/plist: Exported generic functions
service-providers/plist: Exported generic functions

U
update-provider: Exported compiler macros
update-provider: Exported generic functions
update-provider: Exported generic functions

Jump to:   %   (  
A   C   D   F   G   M   P   R   S   U  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   *  
C   D   F   N   P   S  
Index Entry  Section

*
*services*: Internal special variables

C
class: Exported classes

D
designator: Internal conditions
designator: Internal conditions
documentation: Internal classes

F
function: Exported classes

N
name: Exported classes
name: Exported classes
name: Exported classes
name: Internal classes

P
providers: Internal classes

S
service: Internal conditions
Slot, class: Exported classes
Slot, designator: Internal conditions
Slot, designator: Internal conditions
Slot, documentation: Internal classes
Slot, function: Exported classes
Slot, name: Exported classes
Slot, name: Exported classes
Slot, name: Exported classes
Slot, name: Internal classes
Slot, providers: Internal classes
Slot, service: Internal conditions
Special Variable, *services*: Internal special variables

Jump to:   *  
C   D   F   N   P   S  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   A   C   D   F   M   N   P   S   T  
Index Entry  Section

A
architecture.service-provider: The architecture<dot>service-provider system

C
Class, class-provider: Exported classes
Class, documentation-mixin: Internal classes
Class, function-provider: Exported classes
Class, name-mixin: Internal classes
Class, provider-list-mixin: Internal classes
Class, standard-service: Exported classes
class-provider: Exported classes
Condition, missing-provider-condition: Internal conditions
Condition, missing-provider-error: Exported conditions
Condition, missing-provider-warning: Exported conditions
Condition, missing-service-condition: Internal conditions
Condition, missing-service-error: Exported conditions
Condition, missing-service-warning: Exported conditions
Condition, service-provider-condition: Exported conditions

D
documentation-mixin: Internal classes

F
function-provider: Exported classes

M
missing-provider-condition: Internal conditions
missing-provider-error: Exported conditions
missing-provider-warning: Exported conditions
missing-service-condition: Internal conditions
missing-service-error: Exported conditions
missing-service-warning: Exported conditions

N
name-mixin: Internal classes

P
Package, service-provider: The service-provider package
provider-designator: Exported types
provider-designator/cons: Internal types
provider-designator/symbol: Internal types
provider-list-mixin: Internal classes

S
service-designator: Exported types
service-provider: The service-provider package
service-provider-condition: Exported conditions
standard-service: Exported classes
System, architecture.service-provider: The architecture<dot>service-provider system

T
Type, provider-designator: Exported types
Type, provider-designator/cons: Internal types
Type, provider-designator/symbol: Internal types
Type, service-designator: Exported types

Jump to:   A   C   D   F   M   N   P   S   T