// file : CCF/IDL3/Traversal/Component.tpp // author : Boris Kolpackov // cvs-id : $Id$ namespace CCF { namespace IDL3 { namespace Traversal { // // // template void PortTemplate:: traverse (T& p) { this->edge_traverser ().traverse (p.belongs ()); } // PortAccessorTemplate // // template void PortAccessorTemplate:: traverse (T& p) { pre (p); returns (p); name (p); receives (p); raises (p); post (p); } template void PortAccessorTemplate:: pre (T&) { } template void PortAccessorTemplate:: returns (T& p, EdgeDispatcherBase& d) { d.traverse (p.belongs ()); } template void PortAccessorTemplate:: returns (T&) { } template void PortAccessorTemplate:: name (T&) { } template void PortAccessorTemplate:: receives (T& p, EdgeDispatcherBase& d) { // @@ Still thinking about the way of making // fake parameter. // d.traverse (p.belongs ()); } template void PortAccessorTemplate:: receives (T& p) { receives_pre (p); receives_post (p); } template void PortAccessorTemplate:: receives_pre (T&) { } template void PortAccessorTemplate:: receives_post (T&) { } template void PortAccessorTemplate:: raises (T&, EdgeDispatcherBase&) { } template void PortAccessorTemplate:: raises (T& p) { raises_pre (p); raises_post (p); } template void PortAccessorTemplate:: raises_pre (T&) { } template void PortAccessorTemplate:: raises_post (T&) { } template void PortAccessorTemplate:: post (T&) { } // PortGetTemplate // // template void PortGetTemplate:: returns (T& p) { PortAccessorTemplate::returns (p, this->edge_traverser ()); } // PortSetTemplate // // template void PortSetTemplate:: receives (T& p) { receives_pre (p); PortAccessorTemplate::receives (p, this->edge_traverser ()); receives_post (p); } // PortDataTemplate // // template void PortDataTemplate:: traverse (T& p) { pre (p); belongs (p); name (p); post (p); } template void PortDataTemplate:: pre (T&) { } template void PortDataTemplate:: belongs (T& p, EdgeDispatcherBase& d) { d.traverse (p.belongs ()); } template void PortDataTemplate:: belongs (T& p) { belongs (p, this->edge_traverser ()); } template void PortDataTemplate:: name (T&) { } template void PortDataTemplate:: post (T&) { } } } }