Hello,
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?
So I am posting here in hope that someone has a similar experience:
After starting our system via (asdf:operate 'asdf:load-op ...) and creating
some objects of the defined classes I closed the sbcl interpreter/slime.
When I restarted the system and tried to read some data I got the following
error:
SB-MOP:CLASS-SLOTS called on #<ELEPHANT:PERSISTENT-METACLASS
DATAMODEL:ITEMIDENTIFIERC>, which is not yet finalized.
[Condition of type SB-INT:SIMPLE-REFERENCE-ERROR]
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).
The actual error is caused in src/elephant/metaclasse.lisp by the function
find-slot-def-by-name.
When I called the function (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.
Is it necessary to call sb-mop:finalize-inheritance explecitely?
Maybe the class-hierarchy can help a little bit:
(elephant:defpclass TopicMapConstructC ()
((versions :associate (VersionInfoC versioned-construct)
:accessor versions
:initarg :versions)))
(elephant:defpclass PointerC (TopicMapConstructC)
((uri :accessor uri
:initarg :uri
:type string
:initform (error "The uri must be set for a pointer")
:index t)
(identified-construct :accessor identified-construct
:initarg :identified-construct
:associate ReifiableConstructC)))
(elephant:defpclass IdentifierC (PointerC)
())
(elephant:defpclass ItemIdentifierC (IdentifierC)
()
(:index t))
Best regards
Lukas
_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel