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