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