sc_fifo_in.hh revision 12868:23162a436538
14826Ssaidi@eecs.umich.edu/*
24826Ssaidi@eecs.umich.edu * Copyright 2018 Google, Inc.
34826Ssaidi@eecs.umich.edu *
44826Ssaidi@eecs.umich.edu * Redistribution and use in source and binary forms, with or without
54826Ssaidi@eecs.umich.edu * modification, are permitted provided that the following conditions are
64826Ssaidi@eecs.umich.edu * met: redistributions of source code must retain the above copyright
74826Ssaidi@eecs.umich.edu * notice, this list of conditions and the following disclaimer;
84826Ssaidi@eecs.umich.edu * redistributions in binary form must reproduce the above copyright
94826Ssaidi@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the
104826Ssaidi@eecs.umich.edu * documentation and/or other materials provided with the distribution;
114826Ssaidi@eecs.umich.edu * neither the name of the copyright holders nor the names of its
124826Ssaidi@eecs.umich.edu * contributors may be used to endorse or promote products derived from
134826Ssaidi@eecs.umich.edu * this software without specific prior written permission.
144826Ssaidi@eecs.umich.edu *
154826Ssaidi@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
164826Ssaidi@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
174826Ssaidi@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
184826Ssaidi@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
194826Ssaidi@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
204826Ssaidi@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
214826Ssaidi@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
224826Ssaidi@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
234826Ssaidi@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
244826Ssaidi@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
254826Ssaidi@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
264826Ssaidi@eecs.umich.edu *
274826Ssaidi@eecs.umich.edu * Authors: Gabe Black
284826Ssaidi@eecs.umich.edu */
294826Ssaidi@eecs.umich.edu
304826Ssaidi@eecs.umich.edu#ifndef __SYSTEMC_EXT_CHANNEL_SC_FIFO_IN_HH__
314826Ssaidi@eecs.umich.edu#define __SYSTEMC_EXT_CHANNEL_SC_FIFO_IN_HH__
3211793Sbrandon.potter@amd.com
3311793Sbrandon.potter@amd.com#include "../core/sc_port.hh"
347678Sgblack@eecs.umich.edu#include "sc_fifo_in_if.hh"
354826Ssaidi@eecs.umich.edu#include "warn_unimpl.hh"
368706Sandreas.hansson@arm.com
374826Ssaidi@eecs.umich.edunamespace sc_core
384826Ssaidi@eecs.umich.edu{
394826Ssaidi@eecs.umich.edu
404826Ssaidi@eecs.umich.educlass sc_event;
417741Sgblack@eecs.umich.educlass sc_event_finder;
427741Sgblack@eecs.umich.edu
437741Sgblack@eecs.umich.edutemplate <class T>
447741Sgblack@eecs.umich.educlass sc_fifo_in : public sc_port<sc_fifo_in_if<T>, 0>
457741Sgblack@eecs.umich.edu{
467741Sgblack@eecs.umich.edu  public:
477707Sgblack@eecs.umich.edu    sc_fifo_in() : sc_port<sc_fifo_in_if<T>, 0>() {}
487707Sgblack@eecs.umich.edu    explicit sc_fifo_in(const char *name) : sc_port<sc_fifo_in_if<T>, 0>(name)
497707Sgblack@eecs.umich.edu    {}
508806Sgblack@eecs.umich.edu    virtual ~sc_fifo_in() {}
518767Sgblack@eecs.umich.edu
528767Sgblack@eecs.umich.edu    // Deprecated binding constructors.
534826Ssaidi@eecs.umich.edu    explicit sc_fifo_in(const sc_fifo_in_if<T> &interface) :
548806Sgblack@eecs.umich.edu        sc_port<sc_fifo_in_if<T>, 0>(interface)
558806Sgblack@eecs.umich.edu    {}
568806Sgblack@eecs.umich.edu    sc_fifo_in(const char *name, const sc_fifo_in_if<T> &interface) :
578806Sgblack@eecs.umich.edu        sc_port<sc_fifo_in_if<T>, 0>(name, interface)
588806Sgblack@eecs.umich.edu    {}
598806Sgblack@eecs.umich.edu    explicit sc_fifo_in(sc_port_b<sc_fifo_in_if<T> > &parent) :
6014020Sgabeblack@google.com        sc_port<sc_fifo_in_if<T>, 0>(parent)
618852Sandreas.hansson@arm.com    {}
628806Sgblack@eecs.umich.edu    sc_fifo_in(const char *name, sc_port_b<sc_fifo_in_if<T> > &parent) :
638806Sgblack@eecs.umich.edu        sc_port<sc_fifo_in_if<T>, 0>(name, parent)
648806Sgblack@eecs.umich.edu    {}
654826Ssaidi@eecs.umich.edu    explicit sc_fifo_in(sc_port<sc_fifo_in_if<T>, 0> &parent) :
666329Sgblack@eecs.umich.edu        sc_port<sc_fifo_in_if<T>, 0>(parent)
676329Sgblack@eecs.umich.edu    {}
686329Sgblack@eecs.umich.edu    sc_fifo_in(const char *name, sc_port<sc_fifo_in_if<T>, 0> &parent) :
696329Sgblack@eecs.umich.edu        sc_port<sc_fifo_in_if<T>, 0>(name, parent)
706329Sgblack@eecs.umich.edu    {}
716329Sgblack@eecs.umich.edu
726329Sgblack@eecs.umich.edu    void
736329Sgblack@eecs.umich.edu    read(T &)
747741Sgblack@eecs.umich.edu    {
756329Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
766329Sgblack@eecs.umich.edu    }
776329Sgblack@eecs.umich.edu    T
787741Sgblack@eecs.umich.edu    read()
797741Sgblack@eecs.umich.edu    {
807741Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
817741Sgblack@eecs.umich.edu        return *(T *)nullptr;
827741Sgblack@eecs.umich.edu    }
837741Sgblack@eecs.umich.edu    bool
847741Sgblack@eecs.umich.edu    nb_read(T &)
857741Sgblack@eecs.umich.edu    {
866329Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
876329Sgblack@eecs.umich.edu        return false;
886329Sgblack@eecs.umich.edu    }
896329Sgblack@eecs.umich.edu    const sc_event &
906329Sgblack@eecs.umich.edu    data_written_event() const
916329Sgblack@eecs.umich.edu    {
926329Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
936329Sgblack@eecs.umich.edu        return *(const sc_event *)nullptr;
947741Sgblack@eecs.umich.edu    }
957741Sgblack@eecs.umich.edu    sc_event_finder &
967741Sgblack@eecs.umich.edu    data_written() const
977741Sgblack@eecs.umich.edu    {
989375Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
997741Sgblack@eecs.umich.edu        return *(sc_event_finder *)nullptr;
1007741Sgblack@eecs.umich.edu    }
1017741Sgblack@eecs.umich.edu    int
1027741Sgblack@eecs.umich.edu    num_available() const
1037741Sgblack@eecs.umich.edu    {
1047741Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
1057741Sgblack@eecs.umich.edu        return 0;
1067741Sgblack@eecs.umich.edu    }
1077741Sgblack@eecs.umich.edu    virtual const char *kind() const { return "sc_fifo_in"; }
1087741Sgblack@eecs.umich.edu
1097741Sgblack@eecs.umich.edu  private:
1107741Sgblack@eecs.umich.edu    // Disabled
1117741Sgblack@eecs.umich.edu    sc_fifo_in(const sc_fifo_in<T> &) : sc_port<sc_fifo_in_if<T>, 0>() {}
1126329Sgblack@eecs.umich.edu    sc_fifo_in<T> &operator = (const sc_fifo_in<T> &) { return *this; }
1136329Sgblack@eecs.umich.edu};
1147741Sgblack@eecs.umich.edu
1157741Sgblack@eecs.umich.edu} // namespace sc_core
1167741Sgblack@eecs.umich.edu
1177741Sgblack@eecs.umich.edu#endif  //__SYSTEMC_EXT_CHANNEL_SC_FIFO_IN_HH__
1187741Sgblack@eecs.umich.edu