class EL_OBJECT_SCOPE
Client examples: GENERAL_TEST_SET
Defines a scope in which the contents of a once object are temporarily replaced by the contents of another object of the same type using the standard_copy routine of class ANY.
Usage Pattern:
use_temporary_object do if attached temporary_scope as scope then -- do stuff scope.revert end end temporary_scope: EL_OBJECT_SCOPE [MY_CLASS] do create Result.make (Standard_object, Temporary_object) end Standard_object: MY_CLASS once create Result.make end
note
description: "[
Defines a scope in which the contents of a once object are temporarily replaced by the contents
of another object of the same type using the `standard_copy' routine of class **ANY**.
]"
instructions: "[
Usage Pattern:
use_temporary_object
do
if attached temporary_scope as scope then
-- do stuff
scope.revert
end
end
temporary_scope: EL_OBJECT_SCOPE [MY_CLASS]
do
create Result.make (Standard_object, Temporary_object)
end
Standard_object: MY_CLASS
once
create Result.make
end
]"
author: "Finnian Reilly"
copyright: "Copyright (c) 2001-2022 Finnian Reilly"
contact: "finnian at eiffel hyphen loop dot com"
license: "MIT license (See: en.wikipedia.org/wiki/MIT_License)"
date: "2024-12-15 10:14:03 GMT (Sunday 15th December 2024)"
revision: "2"
class
EL_OBJECT_SCOPE [G -> ANY create default_create end]
create
make
feature {NONE} -- Initialization
make (a_once_object, scope_object: G)
require
same_type: a_once_object.same_type (scope_object)
do
once_object := a_once_object
create once_copy
once_copy.standard_copy (a_once_object)
a_once_object.standard_copy (scope_object)
end
feature -- Basic operations
exit
-- exit scope reverting `once_object' back to it's original state
do
once_object.standard_copy (once_copy)
end
feature {NONE} -- Internal attributes
once_object: G
once_copy: G
end