convenience_socket_bases.h revision 13511
111986Sandreas.sandberg@arm.com/***************************************************************************** 211986Sandreas.sandberg@arm.com 311986Sandreas.sandberg@arm.com Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 411986Sandreas.sandberg@arm.com more contributor license agreements. See the NOTICE file distributed 511986Sandreas.sandberg@arm.com with this work for additional information regarding copyright ownership. 611986Sandreas.sandberg@arm.com Accellera licenses this file to you under the Apache License, Version 2.0 712037Sandreas.sandberg@arm.com (the "License"); you may not use this file except in compliance with the 811986Sandreas.sandberg@arm.com License. You may obtain a copy of the License at 911986Sandreas.sandberg@arm.com 1011986Sandreas.sandberg@arm.com http://www.apache.org/licenses/LICENSE-2.0 1111986Sandreas.sandberg@arm.com 1211986Sandreas.sandberg@arm.com Unless required by applicable law or agreed to in writing, software 1311986Sandreas.sandberg@arm.com distributed under the License is distributed on an "AS IS" BASIS, 1411986Sandreas.sandberg@arm.com WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 1511986Sandreas.sandberg@arm.com implied. See the License for the specific language governing 1611986Sandreas.sandberg@arm.com permissions and limitations under the License. 1711986Sandreas.sandberg@arm.com 1811986Sandreas.sandberg@arm.com *****************************************************************************/ 1911986Sandreas.sandberg@arm.com#ifndef TLM_UTILS_CONVENIENCE_SOCKET_BASES_H_INCLUDED_ 2011986Sandreas.sandberg@arm.com#define TLM_UTILS_CONVENIENCE_SOCKET_BASES_H_INCLUDED_ 2111986Sandreas.sandberg@arm.com 2211986Sandreas.sandberg@arm.com#include <sysc/kernel/sc_cmnhdr.h> 2311986Sandreas.sandberg@arm.com 2411986Sandreas.sandberg@arm.comnamespace sc_core { class SC_API sc_object; } 2511986Sandreas.sandberg@arm.com 2611986Sandreas.sandberg@arm.comnamespace tlm_utils { 2711986Sandreas.sandberg@arm.com 2812037Sandreas.sandberg@arm.com// implementation-defined base class helper for convenience sockets 2912037Sandreas.sandberg@arm.comclass SC_API convenience_socket_base 3012037Sandreas.sandberg@arm.com{ 3112037Sandreas.sandberg@arm.compublic: 3212037Sandreas.sandberg@arm.com void display_warning(const char* msg) const; 3312037Sandreas.sandberg@arm.com void display_error(const char* msg) const; 3411986Sandreas.sandberg@arm.comprotected: 3511986Sandreas.sandberg@arm.com virtual ~convenience_socket_base(){} 3611986Sandreas.sandberg@arm.comprivate: 3711986Sandreas.sandberg@arm.com virtual const char* get_report_type() const = 0; 3811986Sandreas.sandberg@arm.com virtual const sc_core::sc_object* get_socket() const = 0; 3911986Sandreas.sandberg@arm.com}; 4011986Sandreas.sandberg@arm.com 4111986Sandreas.sandberg@arm.com// implementation-defined base class helper for simple sockets 4211986Sandreas.sandberg@arm.comclass SC_API simple_socket_base : public convenience_socket_base 4311986Sandreas.sandberg@arm.com{ 4411986Sandreas.sandberg@arm.com virtual const char* get_report_type() const; 4511986Sandreas.sandberg@arm.comprotected: 4611986Sandreas.sandberg@arm.com void elaboration_check(const char* action) const; 4711986Sandreas.sandberg@arm.com}; 4811986Sandreas.sandberg@arm.com 4911986Sandreas.sandberg@arm.com// implementation-defined base class helper for passthrough sockets 5011986Sandreas.sandberg@arm.comclass SC_API passthrough_socket_base : public convenience_socket_base 5111986Sandreas.sandberg@arm.com{ 5211986Sandreas.sandberg@arm.com virtual const char* get_report_type() const; 5311986Sandreas.sandberg@arm.com}; 5411986Sandreas.sandberg@arm.com 5511986Sandreas.sandberg@arm.com// implementation-defined base class helper for multi sockets 5611986Sandreas.sandberg@arm.comclass SC_API multi_socket_base : public convenience_socket_base 5711986Sandreas.sandberg@arm.com{ 5811986Sandreas.sandberg@arm.com virtual const char* get_report_type() const; 5911986Sandreas.sandberg@arm.com}; 6011986Sandreas.sandberg@arm.com 6112037Sandreas.sandberg@arm.com// implementation-defined base class for callback helpers 6212037Sandreas.sandberg@arm.comclass SC_API convenience_socket_cb_holder 6311986Sandreas.sandberg@arm.com{ 6411986Sandreas.sandberg@arm.compublic: 6511986Sandreas.sandberg@arm.com void display_warning(const char* msg) const; 6611986Sandreas.sandberg@arm.com void display_error(const char* msg) const; 6712037Sandreas.sandberg@arm.com 6812037Sandreas.sandberg@arm.comprotected: 6912037Sandreas.sandberg@arm.com explicit convenience_socket_cb_holder(convenience_socket_base* owner) 7011986Sandreas.sandberg@arm.com : m_owner(owner) {} 7111986Sandreas.sandberg@arm.com 7211986Sandreas.sandberg@arm.comprivate: 7311986Sandreas.sandberg@arm.com convenience_socket_base* m_owner; 7411986Sandreas.sandberg@arm.com}; 7511986Sandreas.sandberg@arm.com 7611986Sandreas.sandberg@arm.com} // namespace tlm_utils 7711986Sandreas.sandberg@arm.com#endif // TLM_UTILS_CONVENIENCE_SOCKET_BASES_H_INCLUDED_ 7811986Sandreas.sandberg@arm.com