Transient Attributes: Difference between revisions

From EiffelStudio: an EiffelSoftware project
Jump to navigation Jump to search
Manus (talk | contribs)
No edit summary
Manus (talk | contribs)
No edit summary
Line 1: Line 1:
[[Category:Compiler]]
[[Category:Runtime]]
For storable purposes, it makes sense that some attributes of objects are not stored to disk. We call them volatile attribute and currently are specified using a note clause:
For storable purposes, it makes sense that some attributes of objects are not stored to disk. We call them volatile attribute and currently are specified using a note clause:



Revision as of 18:57, 24 June 2009

For storable purposes, it makes sense that some attributes of objects are not stored to disk. We call them volatile attribute and currently are specified using a note clause:

field: detachable X
   note
     option: volatile
   attribute
   end

Validity Rule

An attribute can be marked `volatile' if and only if:

  1. its type has a default value
  2. it is not a user defined expanded type
  3. the enclosing class is not expanded

Rationale of validity rule

If the type did not have a default value (which is the case for attached types), then upon retrieval the volatile attribute would be Void which is against void-safety.

For simplicity and backward compatibility of `basic_store' which does a memory copy of the object to disk, it would be quite complicated to implement when expanded are involved. We prefer our users to use SED once it supports expanded.