convenience_socket_bases.h revision 13513
19883Sandreas@sandberg.pp.se/***************************************************************************** 29883Sandreas@sandberg.pp.se 39883Sandreas@sandberg.pp.se Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 49883Sandreas@sandberg.pp.se more contributor license agreements. See the NOTICE file distributed 59883Sandreas@sandberg.pp.se with this work for additional information regarding copyright ownership. 69883Sandreas@sandberg.pp.se Accellera licenses this file to you under the Apache License, Version 2.0 79883Sandreas@sandberg.pp.se (the "License"); you may not use this file except in compliance with the 89883Sandreas@sandberg.pp.se License. You may obtain a copy of the License at 99883Sandreas@sandberg.pp.se 109883Sandreas@sandberg.pp.se http://www.apache.org/licenses/LICENSE-2.0 119883Sandreas@sandberg.pp.se 129883Sandreas@sandberg.pp.se Unless required by applicable law or agreed to in writing, software 139883Sandreas@sandberg.pp.se distributed under the License is distributed on an "AS IS" BASIS, 149883Sandreas@sandberg.pp.se WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 159883Sandreas@sandberg.pp.se implied. See the License for the specific language governing 169883Sandreas@sandberg.pp.se permissions and limitations under the License. 179883Sandreas@sandberg.pp.se 189883Sandreas@sandberg.pp.se *****************************************************************************/ 199883Sandreas@sandberg.pp.se#ifndef __SYSTEMC_EXT_TLM_UTILS_CONVENIENCE_SOCKET_BASES_H__ 209883Sandreas@sandberg.pp.se#define __SYSTEMC_EXT_TLM_UTILS_CONVENIENCE_SOCKET_BASES_H__ 219883Sandreas@sandberg.pp.se 229883Sandreas@sandberg.pp.se#include <systemc> 239883Sandreas@sandberg.pp.se 249883Sandreas@sandberg.pp.senamespace sc_core 259883Sandreas@sandberg.pp.se{ 269883Sandreas@sandberg.pp.se 279883Sandreas@sandberg.pp.seclass sc_object; 289883Sandreas@sandberg.pp.se 299883Sandreas@sandberg.pp.se} // namespace sc_core 309883Sandreas@sandberg.pp.se 3111793Sbrandon.potter@amd.comnamespace tlm_utils 3211793Sbrandon.potter@amd.com{ 339883Sandreas@sandberg.pp.se 349883Sandreas@sandberg.pp.se// Implementation-defined base class helper for convenience sockets. 359883Sandreas@sandberg.pp.seclass convenience_socket_base 369883Sandreas@sandberg.pp.se{ 379883Sandreas@sandberg.pp.se public: 389883Sandreas@sandberg.pp.se void display_warning(const char *msg) const; 3911793Sbrandon.potter@amd.com void display_error(const char *msg) const; 4011793Sbrandon.potter@amd.com 419883Sandreas@sandberg.pp.se protected: 429883Sandreas@sandberg.pp.se virtual ~convenience_socket_base() {} 439883Sandreas@sandberg.pp.se 449883Sandreas@sandberg.pp.se private: 459883Sandreas@sandberg.pp.se virtual const char *get_report_type() const = 0; 469883Sandreas@sandberg.pp.se virtual const sc_core::sc_object *get_socket() const = 0; 479883Sandreas@sandberg.pp.se}; 489883Sandreas@sandberg.pp.se 499883Sandreas@sandberg.pp.se// Implementation-defined base class helper for simple sockets. 509883Sandreas@sandberg.pp.seclass simple_socket_base : public convenience_socket_base 519883Sandreas@sandberg.pp.se{ 529883Sandreas@sandberg.pp.se virtual const char *get_report_type() const; 539883Sandreas@sandberg.pp.se 549883Sandreas@sandberg.pp.se protected: 559883Sandreas@sandberg.pp.se void elaboration_check(const char *action) const; 569883Sandreas@sandberg.pp.se}; 579886Sandreas@sandberg.pp.se 589886Sandreas@sandberg.pp.se// Implementation-defined base class helper for passthrough sockets. 599886Sandreas@sandberg.pp.seclass passthrough_socket_base : public convenience_socket_base 609886Sandreas@sandberg.pp.se{ 619886Sandreas@sandberg.pp.se virtual const char *get_report_type() const; 629886Sandreas@sandberg.pp.se}; 639886Sandreas@sandberg.pp.se 649886Sandreas@sandberg.pp.se// Implementation-defined base class helper for multi sockets. 659886Sandreas@sandberg.pp.seclass multi_socket_base : public convenience_socket_base 669886Sandreas@sandberg.pp.se{ 679886Sandreas@sandberg.pp.se virtual const char *get_report_type() const; 689886Sandreas@sandberg.pp.se}; 699886Sandreas@sandberg.pp.se 709886Sandreas@sandberg.pp.se// Implementation-defined base class for callback helpers. 719890Sandreas@sandberg.pp.seclass convenience_socket_cb_holder 729890Sandreas@sandberg.pp.se{ 739890Sandreas@sandberg.pp.se public: 749890Sandreas@sandberg.pp.se void display_warning(const char *msg) const; 759890Sandreas@sandberg.pp.se void display_error(const char *msg) const; 769890Sandreas@sandberg.pp.se 779890Sandreas@sandberg.pp.se protected: 789890Sandreas@sandberg.pp.se explicit convenience_socket_cb_holder(convenience_socket_base *owner) : 799890Sandreas@sandberg.pp.se m_owner(owner) 809890Sandreas@sandberg.pp.se {} 819890Sandreas@sandberg.pp.se 829890Sandreas@sandberg.pp.se private: 839890Sandreas@sandberg.pp.se convenience_socket_base *m_owner; 849890Sandreas@sandberg.pp.se}; 859890Sandreas@sandberg.pp.se 869890Sandreas@sandberg.pp.se} // namespace tlm_utils 879890Sandreas@sandberg.pp.se 889890Sandreas@sandberg.pp.se#endif /* __SYSTEMC_EXT_TLM_UTILS_CONVENIENCE_SOCKET_BASES_H__ */ 899890Sandreas@sandberg.pp.se