;;;;
;;;; A simple example file for hyperobjects
;;;;
-;;;; $Id: mop-example.lisp,v 1.1 2002/11/22 10:49:24 kevin Exp $
+;;;; $Id: mop-example.lisp,v 1.2 2002/11/22 14:58:16 kevin Exp $
;;;;
;;;; This file is Copyright (c) 2000-2002 by Kevin M. Rosenberg
;;;;
(defclass person (hyperobject)
- ((first-name :type string :initarg :first-name :reader first-name)
- (last-name :type string :initarg :last-name :reader last-name)
- (dob :type integer :initarg :dob :reader dob)
- (resume :initarg :resume :reader resume)
- (addresses :initarg :addresses :reader addresses))
+ ((first-name :type string :initarg :first-name :reader first-name :initform nil)
+ (last-name :type string :initarg :last-name :reader last-name :initform nil
+ :reference find-person-by-last-name)
+ (dob :type integer :initarg :dob :reader dob :initform 0 :format-func format-date)
+ (resume :type cdata :initarg :resume :reader resume)
+ (addresses :initarg :addresses :reader addresses :initform nil :subobject t))
(:metaclass hyperobject-class)
- (:default-initargs
- :first-name nil :last-name nil :resume nil :dob 0 :addresses nil)
- (:title "Person")
- (:subobjects-lists (addresses address))
- (:fields (first-name :string) (last-name :string) (dob :integer format-date)
- (resume :cdata))
- (:ref-fields (last-name find-person-by-last-name)))
+ (:title "Person"))
(defun format-date (ut)
(when (typep ut 'integer)
hr min sec))))
(defclass address (hyperobject)
- ((title :type string :initarg :title :reader title)
- (street :type string :initarg :street :reader street)
- (phones :initarg :phones :reader phones))
+ ((title :type string :initarg :title :reader title :initform nil)
+ (street :type string :initarg :street :reader street :initform nil)
+ (phones :initarg :phones :reader phones :initform nil :subobject t))
(:metaclass hyperobject-class)
- (:default-initargs :title nil :street nil :phones nil)
- (:title "Address")
- (:subobjects-lists (phones phone))
- (:fields (title :string) (street :string)))
-
+ (:title "Address"))
(defclass phone (hyperobject)
((phone-number :type string :initarg :phone-number :reader phone-number))
(:metaclass hyperobject-class)
- (:title "Phone Number")
- (:fields (phone-number :string)))
+ (:title "Phone Number"))
(defparameter home-phone-1 (make-instance 'phone :phone-number "367-9812"))