mirror of
https://github.com/Open-Cascade-SAS/OCCT.git
synced 2026-06-07 05:37:56 +08:00
180 lines
6.7 KiB
Plaintext
Executable File
180 lines
6.7 KiB
Plaintext
Executable File
-- File: LibCtl_Library.cdl
|
|
-- Created: Fri Jan 29 15:48:51 1993
|
|
-- Author: Christian CAILLET
|
|
-- <cky@phobox>
|
|
---Copyright: Matra Datavision 1993
|
|
|
|
|
|
generic class Library from LibCtl
|
|
(TheObject as any;
|
|
TheModule as Transient;
|
|
TheProtocol as Transient) -- must comply with Protocol template
|
|
|
|
---Purpose : Manages a list of Execution Modules attached to Protocols
|
|
-- to perform a specific set of functionnalities.
|
|
--
|
|
-- Each instantiated class of Library has a global set a Modules.
|
|
-- These Modules are put in this set before working, for instance
|
|
-- by static construction (using method SetGlobal). One Module
|
|
-- is bound which each Protocol (considered as a class).
|
|
--
|
|
-- To work, a Library is created by taking the Modules which
|
|
-- comply with a Protocol (bound with its class and the classes
|
|
-- of its Resources), given as parameter of its creation.
|
|
--
|
|
-- Thus, any tool can use it to get the suitable Modules
|
|
---Warning : The order of the Modules in the Library has assumed to be
|
|
-- useless, and is not managed.
|
|
|
|
raises NoSuchObject
|
|
|
|
-- -- Nested class : Node of Module -- --
|
|
|
|
private class GlobalNode inherits Transient
|
|
---Purpose : Manages a (possibly static) Global List of Modules bound to
|
|
-- Protocols.
|
|
-- Remark that it requires independance from Memory Management
|
|
-- (because a Global List of Modules can be build through static
|
|
-- declarations, i.e. before any sequential execution)
|
|
-- Remark there will not be many many GlobalNodes created
|
|
|
|
is
|
|
|
|
Create returns mutable GlobalNode;
|
|
---Purpose : Creates an empty GlobalNode, with no Next
|
|
|
|
Add (me : mutable; amodule : TheModule; aprotocol : TheProtocol)
|
|
is static;
|
|
---Purpose : Adds a Module bound with a Protocol to the list : does
|
|
-- nothing if already in the list, THAT IS, Same Type (exact
|
|
-- match) and Same State (that is, IsEqual is not required)
|
|
-- Once added, stores its attached Protocol in correspondance
|
|
|
|
Module (me) returns any TheModule is static;
|
|
---Purpose : Returns the Module stored in a given GlobalNode
|
|
---C++ : return const &
|
|
|
|
Protocol (me) returns any TheProtocol is static;
|
|
---Purpose : Returns the attached Protocol stored in a given GlobalNode
|
|
---C++ : return const &
|
|
|
|
Next (me) returns any GlobalNode is static;
|
|
---Purpose : Returns the Next GlobalNode. If none is defined, returned
|
|
-- value is a Null Handle
|
|
---C++ : return const &
|
|
|
|
fields
|
|
|
|
themod : TheModule;
|
|
theprot : TheProtocol;
|
|
thenext : GlobalNode;
|
|
|
|
end GlobalNode;
|
|
|
|
|
|
private class Node inherits TShared
|
|
|
|
---Purpose : Manages a list of Modules for a Library (as an instance) :
|
|
-- Designates a GlobalNode (couple Module-Protocol)
|
|
|
|
is
|
|
|
|
Create returns mutable Node;
|
|
---Purpose : Creates an empty Node, with no Next
|
|
|
|
AddNode (me : mutable; anode : any GlobalNode) is static;
|
|
---Purpose : Adds a couple (Module,Protocol), that is, stores it into
|
|
-- itself if not yet done, else creates a Next Node to do it
|
|
|
|
Module (me) returns any TheModule is static;
|
|
---Purpose : Returns the Module designated by a precise Node
|
|
---C++ : return const &
|
|
|
|
Protocol (me) returns any TheProtocol is static;
|
|
---Purpose : Returns the Protocol designated by a precise Node
|
|
---C++ : return const &
|
|
|
|
Next (me) returns mutable Node is static;
|
|
---Purpose : Returns the Next Node. If none was defined, returned value
|
|
-- is a Null Handle
|
|
---C++ : return const &
|
|
|
|
fields
|
|
|
|
thenode : GlobalNode;
|
|
thenext : Node;
|
|
|
|
end Node;
|
|
|
|
|
|
is
|
|
|
|
SetGlobal (myclass; amodule : TheModule; aprotocol : TheProtocol);
|
|
---Purpose : Adds a couple (Module-Protocol) into the global definition set
|
|
-- for this class of Library.
|
|
|
|
Create (aprotocol : TheProtocol) returns Library;
|
|
---Purpose : Creates a Library which complies with a Protocol, that is :
|
|
-- Same class (criterium IsInstance)
|
|
-- This creation gets the Modules from the global set, those
|
|
-- which are bound to the given Protocol and its Resources
|
|
|
|
Create returns Library;
|
|
---Purpose : Creates an empty Library : it will later by filled by method
|
|
-- AddProtocol
|
|
|
|
AddProtocol (me : in out; aprotocol : Transient) is static;
|
|
---Purpose : Adds a couple (Module-Protocol) to the Library, given the
|
|
-- class of a Protocol. Takes Resources into account.
|
|
-- (if <aprotocol> is not of type TheProtocol, it is not added)
|
|
|
|
Clear (me : in out) is static;
|
|
---Purpose : Clears the list of Modules of a library (can be used to
|
|
-- redefine the order of Modules before action : Clear then
|
|
-- refill the Library by calls to AddProtocol)
|
|
|
|
SetComplete (me : in out);
|
|
---Purpose : Sets a library to be defined with the complete Global list
|
|
-- (all the couples Protocol/Modules recorded in it)
|
|
|
|
|
|
Select (me; obj : any TheObject; module : out any TheModule; CN : out Integer)
|
|
returns Boolean;
|
|
---Purpose : Selects a Module from the Library, given an Object.
|
|
-- Returns True if Select has succeeded, False else.
|
|
-- Also Returns (as arguments) the selected Module and the Case
|
|
-- Number determined by the associated Protocol.
|
|
-- If Select has failed, <module> is Null Handle and CN is zero.
|
|
-- (Select can work on any criterium, such as Object DynamicType)
|
|
|
|
|
|
Start (me : in out) is static;
|
|
---Purpose : Starts Iteration on the Modules (sets it on the first one)
|
|
|
|
More (me) returns Boolean is static;
|
|
---Purpose : Returns True if there are more Modules to iterate on
|
|
|
|
Next (me : in out) is static;
|
|
---Purpose : Iterates by getting the next Module in the list
|
|
-- If there is none, the exception will be raised by Value
|
|
|
|
Module (me) returns any TheModule
|
|
---Purpose : Returns the current Module in the Iteration
|
|
raises NoSuchObject is static;
|
|
-- Error if there is no current Module to iterate on
|
|
---C++ : return const &
|
|
|
|
Protocol (me) returns any TheProtocol
|
|
---Purpose : Returns the current Protocol in the Iteration
|
|
raises NoSuchObject is static;
|
|
-- Error if there is no current Protocol to iterate on
|
|
---C++ : return const &
|
|
|
|
fields
|
|
|
|
thelist : Node;
|
|
thecurr : Node; -- for iteration
|
|
-- there are also "class variables" which describe global set
|
|
|
|
end Library;
|