indexing
description: "Behavior of commands"
author: "Patrick Schoenbach"
deferred class interface
COMMAND_BEHAVIOR
feature -- Access
get_context: like context
-- Returned context
require
context_available: context_available
ensure
context_retrieved: not context_available
feature -- Status report
arguments_needed: BOOLEAN
-- Does command need arguments?
arguments_set: BOOLEAN
-- Are arguments set?
clear_history: BOOLEAN
-- Shall history be cleared after execution?
context_available: BOOLEAN
-- Is context available for retrieval?
context_set: BOOLEAN
-- Is context set?
is_undoable: BOOLEAN
-- Can command be taken back?
valid_arguments_type (other: ANY): BOOLEAN
-- Is arguments type valid?
valid_context_type (other: ANY): BOOLEAN
-- Is context type valid?
feature -- Status setting
set_arguments (args: like arguments)
-- Set arguments.
require
arguments_not_set: not arguments_set
ensure
arguments_set: arguments_set
set_context (c: like context)
-- Set context.
require
no_context_returned: not context_available
ensure
context_set: context_set
feature -- Basic operations
frozen run
-- Run the command.
require
arguments_set: arguments_set;
no_context_set: not context_set;
no_context_available: not context_available
ensure
context_available: context_available;
arguments_flag_reset: arguments_needed implies not arguments_set
frozen take_back
-- Take command back.
require
context_set: context_set
ensure
no_context_set: not context_set
invariant
-- from GENERAL
reflexive_equality: standard_is_equal (Current);
reflexive_conformance: conforms_to (Current);
context_availability_constraint: context_available implies not context_set;
context_set_constraint: context_set implies not context_available;
arguments_exist: arguments /= void;
context_exists: context /= void;
unneeded_arguments_empty: not arguments_needed implies arguments.empty;
end -- class COMMAND_BEHAVIOR