<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=text/html;charset=iso-8859-1 http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.7600.16490"></HEAD>
<BODY style="PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 15px"
id=MailContainerBody leftMargin=0 topMargin=0 CanvasTabStop="true"
name="Compose message area">
<DIV><FONT size=2 face=Calibri>
<DIV><FONT size=2 face=Calibri>Hello,</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>I am using elephant with sbcl. I found a strange
behavior in a more or less complex scenario but I am not sure if it is a bug or
a fault caused by myself?</FONT></DIV>
<DIV><FONT size=2 face=Calibri>So I am posting here in hope that someone has a
similar experience:</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>After starting our system via (asdf:operate
'asdf:load-op ...) and creating some objects of the defined classes I closed the
sbcl interpreter/slime.</FONT></DIV>
<DIV><FONT size=2 face=Calibri>When I restarted the system and tried to read
some data I got the following error:</FONT></DIV>
<DIV><FONT size=2 face=Calibri>SB-MOP:CLASS-SLOTS called on
#<ELEPHANT:PERSISTENT-METACLASS DATAMODEL:ITEMIDENTIFIERC>, which is not
yet finalized.<BR> [Condition of type
SB-INT:SIMPLE-REFERENCE-ERROR]</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>After this message I called the function
(sb-mop:finalize-inheritance (find-class 'd:ItemIdentifierC)) with the effect
that it was possible to read the data (an object of the type
'd:ItemIdentifierC).</FONT></DIV>
<DIV>The actual error is caused in src/elephant/metaclasse.lisp by the function
find-slot-def-by-name.</DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>When I called the function </FONT><FONT
size=2 face=Calibri>(sb-mop:class-finalized-p (find-class 'd:ItemIdentifierC))
after loading our system and before creating any data - in this case objects of
the type 'd:ItemIdentifierC - the result was always nil. When I created an
object of this type the result was t.</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>Is it necessary to call
sb-mop:finalize-inheritance explecitely?</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV> </DIV>
<DIV><FONT size=2 face=Calibri>Maybe the class-hierarchy can help a little
bit:</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>(elephant:defpclass TopicMapConstructC
()<BR> ((versions :associate (VersionInfoC
versioned-construct)<BR>
:accessor
versions<BR>
:initarg :versions)))</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>(elephant:defpclass PointerC
(TopicMapConstructC)<BR> ((uri :accessor
uri<BR> :initarg
:uri<BR> :type
string<BR> :initform (error "The uri
must be set for a pointer")<BR> :index
t)<BR> (identified-construct :accessor
identified-construct<BR>
:initarg
:identified-construct<BR>
:associate ReifiableConstructC)))</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>(elephant:defpclass IdentifierC
(PointerC)<BR> ())</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>(elephant:defpclass ItemIdentifierC (IdentifierC)
<BR> ()<BR> (:index t))</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>Best regards</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>Lukas</FONT></DIV></FONT></DIV></BODY></HTML>