sc_in.hh revision 12868
112841Sgabeblack@google.com/*
212841Sgabeblack@google.com * Copyright 2018 Google, Inc.
312841Sgabeblack@google.com *
412841Sgabeblack@google.com * Redistribution and use in source and binary forms, with or without
512841Sgabeblack@google.com * modification, are permitted provided that the following conditions are
612841Sgabeblack@google.com * met: redistributions of source code must retain the above copyright
712841Sgabeblack@google.com * notice, this list of conditions and the following disclaimer;
812841Sgabeblack@google.com * redistributions in binary form must reproduce the above copyright
912841Sgabeblack@google.com * notice, this list of conditions and the following disclaimer in the
1012841Sgabeblack@google.com * documentation and/or other materials provided with the distribution;
1112841Sgabeblack@google.com * neither the name of the copyright holders nor the names of its
1212841Sgabeblack@google.com * contributors may be used to endorse or promote products derived from
1312841Sgabeblack@google.com * this software without specific prior written permission.
1412841Sgabeblack@google.com *
1512841Sgabeblack@google.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1612841Sgabeblack@google.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1712841Sgabeblack@google.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1812841Sgabeblack@google.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1912841Sgabeblack@google.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2012841Sgabeblack@google.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2112841Sgabeblack@google.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2212841Sgabeblack@google.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2312841Sgabeblack@google.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2412841Sgabeblack@google.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2512841Sgabeblack@google.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2612841Sgabeblack@google.com *
2712841Sgabeblack@google.com * Authors: Gabe Black
2812841Sgabeblack@google.com */
2912841Sgabeblack@google.com
3012841Sgabeblack@google.com#ifndef __SYSTEMC_EXT_CHANNEL_SC_IN_HH__
3112841Sgabeblack@google.com#define __SYSTEMC_EXT_CHANNEL_SC_IN_HH__
3212841Sgabeblack@google.com
3312841Sgabeblack@google.com#include <string>
3412841Sgabeblack@google.com
3512841Sgabeblack@google.com#include "../core/sc_port.hh"
3612841Sgabeblack@google.com#include "sc_signal_in_if.hh"
3712841Sgabeblack@google.com#include "sc_signal_inout_if.hh"
3812841Sgabeblack@google.com#include "warn_unimpl.hh"
3912841Sgabeblack@google.com
4012841Sgabeblack@google.comnamespace sc_core
4112841Sgabeblack@google.com{
4212841Sgabeblack@google.com
4312841Sgabeblack@google.comclass sc_event;
4412841Sgabeblack@google.comclass sc_event_finder;
4512841Sgabeblack@google.comclass sc_trace_file;
4612841Sgabeblack@google.com
4712841Sgabeblack@google.comtemplate <class T>
4812841Sgabeblack@google.comclass sc_in : public sc_port<sc_signal_in_if<T>, 1>
4912841Sgabeblack@google.com{
5012841Sgabeblack@google.com  public:
5112841Sgabeblack@google.com    sc_in() : sc_port<sc_signal_in_if<T>, 1>() {}
5212841Sgabeblack@google.com    explicit sc_in(const char *name) : sc_port<sc_signal_in_if<T>, 1>(name) {}
5312841Sgabeblack@google.com    virtual ~sc_in() {}
5412841Sgabeblack@google.com
5512868Sgabeblack@google.com    // Deprecated binding constructors.
5612868Sgabeblack@google.com    explicit sc_in(const sc_signal_in_if<T> &interface) :
5712868Sgabeblack@google.com        sc_port<sc_signal_in_if<T>, 1>(interface)
5812868Sgabeblack@google.com    {}
5912868Sgabeblack@google.com    sc_in(const char *name, const sc_signal_in_if<T> &interface) :
6012868Sgabeblack@google.com        sc_port<sc_signal_in_if<T>, 1>(name, interface)
6112868Sgabeblack@google.com    {}
6212868Sgabeblack@google.com    explicit sc_in(sc_port_b<sc_signal_in_if<T> > &parent) :
6312868Sgabeblack@google.com        sc_port<sc_signal_in_if<T>, 1>(parent)
6412868Sgabeblack@google.com    {}
6512868Sgabeblack@google.com    sc_in(const char *name, sc_port_b<sc_signal_in_if<T> > &parent) :
6612868Sgabeblack@google.com        sc_port<sc_signal_in_if<T>, 1>(name, parent)
6712868Sgabeblack@google.com    {}
6812868Sgabeblack@google.com    explicit sc_in(sc_port<sc_signal_in_if<T>, 1> &parent) :
6912868Sgabeblack@google.com        sc_port<sc_signal_in_if<T>, 1>(parent)
7012868Sgabeblack@google.com    {}
7112868Sgabeblack@google.com    sc_in(const char *name, sc_port<sc_signal_in_if<T>, 1> &parent) :
7212868Sgabeblack@google.com        sc_port<sc_signal_in_if<T>, 1>(name, parent)
7312868Sgabeblack@google.com    {}
7412868Sgabeblack@google.com
7512841Sgabeblack@google.com    virtual void
7612841Sgabeblack@google.com    bind(const sc_signal_in_if<T> &)
7712841Sgabeblack@google.com    {
7812841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
7912841Sgabeblack@google.com    }
8012841Sgabeblack@google.com    void
8112841Sgabeblack@google.com    operator () (const sc_signal_in_if<T> &)
8212841Sgabeblack@google.com    {
8312841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
8412841Sgabeblack@google.com    }
8512841Sgabeblack@google.com
8612841Sgabeblack@google.com    virtual void
8712841Sgabeblack@google.com    bind(sc_port<sc_signal_in_if<T>, 1> &)
8812841Sgabeblack@google.com    {
8912841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
9012841Sgabeblack@google.com    }
9112841Sgabeblack@google.com    void
9212841Sgabeblack@google.com    operator () (sc_port<sc_signal_in_if<T>, 1> &)
9312841Sgabeblack@google.com    {
9412841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
9512841Sgabeblack@google.com    }
9612841Sgabeblack@google.com
9712841Sgabeblack@google.com    virtual void
9812841Sgabeblack@google.com    bind(sc_port<sc_signal_inout_if<T>, 1> &)
9912841Sgabeblack@google.com    {
10012841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
10112841Sgabeblack@google.com    }
10212841Sgabeblack@google.com    void
10312841Sgabeblack@google.com    operator () (sc_port<sc_signal_inout_if<T>, 1> &)
10412841Sgabeblack@google.com    {
10512841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
10612841Sgabeblack@google.com    }
10712841Sgabeblack@google.com
10812841Sgabeblack@google.com    virtual void
10912841Sgabeblack@google.com    end_of_elaboration()
11012841Sgabeblack@google.com    {
11112841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
11212841Sgabeblack@google.com    }
11312841Sgabeblack@google.com
11412841Sgabeblack@google.com    const T &
11512841Sgabeblack@google.com    read() const
11612841Sgabeblack@google.com    {
11712841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
11812841Sgabeblack@google.com        return *(const T *)nullptr;
11912841Sgabeblack@google.com    }
12012841Sgabeblack@google.com    operator const T& () const
12112841Sgabeblack@google.com    {
12212841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
12312841Sgabeblack@google.com        return *(const T *)nullptr;
12412841Sgabeblack@google.com    }
12512841Sgabeblack@google.com
12612841Sgabeblack@google.com    const sc_event &
12712841Sgabeblack@google.com    default_event() const
12812841Sgabeblack@google.com    {
12912841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
13012841Sgabeblack@google.com        return *(const sc_event *)nullptr;
13112841Sgabeblack@google.com    }
13212841Sgabeblack@google.com    const sc_event &
13312841Sgabeblack@google.com    value_changed_event() const
13412841Sgabeblack@google.com    {
13512841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
13612841Sgabeblack@google.com        return *(const sc_event *)nullptr;
13712841Sgabeblack@google.com    }
13812841Sgabeblack@google.com    bool
13912841Sgabeblack@google.com    event() const
14012841Sgabeblack@google.com    {
14112841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
14212841Sgabeblack@google.com        return false;
14312841Sgabeblack@google.com    }
14412841Sgabeblack@google.com    sc_event_finder &
14512841Sgabeblack@google.com    value_changed() const
14612841Sgabeblack@google.com    {
14712841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
14812841Sgabeblack@google.com        return *(sc_event_finder *)nullptr;
14912841Sgabeblack@google.com    }
15012841Sgabeblack@google.com
15112841Sgabeblack@google.com    virtual const char *kind() const { return "sc_in"; }
15212841Sgabeblack@google.com
15312841Sgabeblack@google.com  private:
15412841Sgabeblack@google.com    // Disabled
15512841Sgabeblack@google.com    sc_in(const sc_in<T> &) : sc_port<sc_signal_in_if<T>, 1>() {}
15612841Sgabeblack@google.com    sc_in<T> &operator = (const sc_in<T> &) { return *this; }
15712841Sgabeblack@google.com};
15812841Sgabeblack@google.com
15912841Sgabeblack@google.comtemplate <class T>
16012841Sgabeblack@google.cominline void
16112841Sgabeblack@google.comsc_trace(sc_trace_file *, const sc_in<T> &, const std::string &)
16212841Sgabeblack@google.com{
16312841Sgabeblack@google.com    sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
16412841Sgabeblack@google.com}
16512841Sgabeblack@google.com
16612841Sgabeblack@google.comtemplate <>
16712841Sgabeblack@google.comclass sc_in<bool> : public sc_port<sc_signal_in_if<bool>, 1>
16812841Sgabeblack@google.com{
16912841Sgabeblack@google.com  public:
17012841Sgabeblack@google.com    sc_in() : sc_port<sc_signal_in_if<bool>, 1>() {}
17112841Sgabeblack@google.com    explicit sc_in(const char *name) :
17212841Sgabeblack@google.com        sc_port<sc_signal_in_if<bool>, 1>(name) {}
17312841Sgabeblack@google.com    virtual ~sc_in() {}
17412841Sgabeblack@google.com
17512868Sgabeblack@google.com    // Deprecated binding constructors.
17612868Sgabeblack@google.com    explicit sc_in(const sc_signal_in_if<bool> &interface) :
17712868Sgabeblack@google.com        sc_port<sc_signal_in_if<bool>, 1>(interface)
17812868Sgabeblack@google.com    {}
17912868Sgabeblack@google.com    sc_in(const char *name, const sc_signal_in_if<bool> &interface) :
18012868Sgabeblack@google.com        sc_port<sc_signal_in_if<bool>, 1>(name, interface)
18112868Sgabeblack@google.com    {}
18212868Sgabeblack@google.com    explicit sc_in(sc_port_b<sc_signal_in_if<bool> > &parent) :
18312868Sgabeblack@google.com        sc_port<sc_signal_in_if<bool>, 1>(parent)
18412868Sgabeblack@google.com    {}
18512868Sgabeblack@google.com    sc_in(const char *name, sc_port_b<sc_signal_in_if<bool> > &parent) :
18612868Sgabeblack@google.com        sc_port<sc_signal_in_if<bool>, 1>(name, parent)
18712868Sgabeblack@google.com    {}
18812868Sgabeblack@google.com    explicit sc_in(sc_port<sc_signal_in_if<bool>, 1> &parent) :
18912868Sgabeblack@google.com        sc_port<sc_signal_in_if<bool>, 1>(parent)
19012868Sgabeblack@google.com    {}
19112868Sgabeblack@google.com    sc_in(const char *name, sc_port<sc_signal_in_if<bool>, 1> &parent) :
19212868Sgabeblack@google.com        sc_port<sc_signal_in_if<bool>, 1>(name, parent)
19312868Sgabeblack@google.com    {}
19412868Sgabeblack@google.com
19512841Sgabeblack@google.com    virtual void
19612841Sgabeblack@google.com    bind(const sc_signal_in_if<bool> &)
19712841Sgabeblack@google.com    {
19812841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
19912841Sgabeblack@google.com    }
20012841Sgabeblack@google.com    void
20112841Sgabeblack@google.com    operator () (const sc_signal_in_if<bool> &)
20212841Sgabeblack@google.com    {
20312841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
20412841Sgabeblack@google.com    }
20512841Sgabeblack@google.com
20612841Sgabeblack@google.com    virtual void
20712841Sgabeblack@google.com    bind(sc_port<sc_signal_in_if<bool>, 1> &)
20812841Sgabeblack@google.com    {
20912841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
21012841Sgabeblack@google.com    }
21112841Sgabeblack@google.com    void
21212841Sgabeblack@google.com    operator () (sc_port<sc_signal_in_if<bool>, 1> &)
21312841Sgabeblack@google.com    {
21412841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
21512841Sgabeblack@google.com    }
21612841Sgabeblack@google.com
21712841Sgabeblack@google.com    virtual void
21812841Sgabeblack@google.com    bind(sc_port<sc_signal_inout_if<bool>, 1> &)
21912841Sgabeblack@google.com    {
22012841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
22112841Sgabeblack@google.com    }
22212841Sgabeblack@google.com    void
22312841Sgabeblack@google.com    operator () (sc_port<sc_signal_inout_if<bool>, 1> &)
22412841Sgabeblack@google.com    {
22512841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
22612841Sgabeblack@google.com    }
22712841Sgabeblack@google.com
22812841Sgabeblack@google.com    virtual void
22912841Sgabeblack@google.com    end_of_elaboration()
23012841Sgabeblack@google.com    {
23112841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
23212841Sgabeblack@google.com    }
23312841Sgabeblack@google.com
23412841Sgabeblack@google.com    const bool &
23512841Sgabeblack@google.com    read() const
23612841Sgabeblack@google.com    {
23712841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
23812841Sgabeblack@google.com        return *(const bool *)nullptr;
23912841Sgabeblack@google.com    }
24012841Sgabeblack@google.com    operator const bool& () const
24112841Sgabeblack@google.com    {
24212841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
24312841Sgabeblack@google.com        return *(const bool *)nullptr;
24412841Sgabeblack@google.com    }
24512841Sgabeblack@google.com
24612841Sgabeblack@google.com    const sc_event &
24712841Sgabeblack@google.com    default_event() const
24812841Sgabeblack@google.com    {
24912841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
25012841Sgabeblack@google.com        return *(const sc_event *)nullptr;
25112841Sgabeblack@google.com    }
25212841Sgabeblack@google.com    const sc_event &
25312841Sgabeblack@google.com    value_changed_event() const
25412841Sgabeblack@google.com    {
25512841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
25612841Sgabeblack@google.com        return *(const sc_event *)nullptr;
25712841Sgabeblack@google.com    }
25812841Sgabeblack@google.com    const sc_event &
25912841Sgabeblack@google.com    posedge_event() const
26012841Sgabeblack@google.com    {
26112841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
26212841Sgabeblack@google.com        return *(const sc_event *)nullptr;
26312841Sgabeblack@google.com    }
26412841Sgabeblack@google.com    const sc_event &
26512841Sgabeblack@google.com    negedge_event() const
26612841Sgabeblack@google.com    {
26712841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
26812841Sgabeblack@google.com        return *(const sc_event *)nullptr;
26912841Sgabeblack@google.com    }
27012841Sgabeblack@google.com
27112841Sgabeblack@google.com    bool
27212841Sgabeblack@google.com    event() const
27312841Sgabeblack@google.com    {
27412841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
27512841Sgabeblack@google.com        return false;
27612841Sgabeblack@google.com    }
27712841Sgabeblack@google.com    bool
27812841Sgabeblack@google.com    posedge() const
27912841Sgabeblack@google.com    {
28012841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
28112841Sgabeblack@google.com        return false;
28212841Sgabeblack@google.com    }
28312841Sgabeblack@google.com    bool
28412841Sgabeblack@google.com    negedge() const
28512841Sgabeblack@google.com    {
28612841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
28712841Sgabeblack@google.com        return false;
28812841Sgabeblack@google.com    }
28912841Sgabeblack@google.com
29012841Sgabeblack@google.com    sc_event_finder &
29112841Sgabeblack@google.com    value_changed() const
29212841Sgabeblack@google.com    {
29312841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
29412841Sgabeblack@google.com        return *(sc_event_finder *)nullptr;
29512841Sgabeblack@google.com    }
29612841Sgabeblack@google.com    sc_event_finder &
29712841Sgabeblack@google.com    pos() const
29812841Sgabeblack@google.com    {
29912841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
30012841Sgabeblack@google.com        return *(sc_event_finder *)nullptr;
30112841Sgabeblack@google.com    }
30212841Sgabeblack@google.com    sc_event_finder &
30312841Sgabeblack@google.com    neg() const
30412841Sgabeblack@google.com    {
30512841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
30612841Sgabeblack@google.com        return *(sc_event_finder *)nullptr;
30712841Sgabeblack@google.com    }
30812841Sgabeblack@google.com
30912841Sgabeblack@google.com    virtual const char *kind() const { return "sc_in"; }
31012841Sgabeblack@google.com
31112841Sgabeblack@google.com  private:
31212841Sgabeblack@google.com    // Disabled
31312841Sgabeblack@google.com    sc_in(const sc_in<bool> &) : sc_port<sc_signal_in_if<bool>, 1>() {}
31412841Sgabeblack@google.com    sc_in<bool> &operator = (const sc_in<bool> &) { return *this; }
31512841Sgabeblack@google.com};
31612841Sgabeblack@google.com
31712841Sgabeblack@google.comtemplate <>
31812841Sgabeblack@google.cominline void
31912841Sgabeblack@google.comsc_trace<bool>(sc_trace_file *, const sc_in<bool> &, const std::string &)
32012841Sgabeblack@google.com{
32112841Sgabeblack@google.com    sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
32212841Sgabeblack@google.com}
32312841Sgabeblack@google.com
32412841Sgabeblack@google.comtemplate <>
32512841Sgabeblack@google.comclass sc_in<sc_dt::sc_logic> :
32612841Sgabeblack@google.com    public sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>
32712841Sgabeblack@google.com{
32812841Sgabeblack@google.com  public:
32912841Sgabeblack@google.com    sc_in() : sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>() {}
33012841Sgabeblack@google.com    explicit sc_in(const char *name) :
33112841Sgabeblack@google.com        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name)
33212841Sgabeblack@google.com    {}
33312841Sgabeblack@google.com    virtual ~sc_in() {}
33412841Sgabeblack@google.com
33512868Sgabeblack@google.com    // Deprecated binding constructors.
33612868Sgabeblack@google.com    explicit sc_in(const sc_signal_in_if<sc_dt::sc_logic> &interface) :
33712868Sgabeblack@google.com        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(interface)
33812868Sgabeblack@google.com    {}
33912868Sgabeblack@google.com    sc_in(const char *name,
34012868Sgabeblack@google.com            const sc_signal_in_if<sc_dt::sc_logic> &interface) :
34112868Sgabeblack@google.com        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name, interface)
34212868Sgabeblack@google.com    {}
34312868Sgabeblack@google.com    explicit sc_in(sc_port_b<sc_signal_in_if<sc_dt::sc_logic> > &parent) :
34412868Sgabeblack@google.com        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(parent)
34512868Sgabeblack@google.com    {}
34612868Sgabeblack@google.com    sc_in(const char *name,
34712868Sgabeblack@google.com            sc_port_b<sc_signal_in_if<sc_dt::sc_logic> > &parent) :
34812868Sgabeblack@google.com        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name, parent)
34912868Sgabeblack@google.com    {}
35012868Sgabeblack@google.com    explicit sc_in(sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &parent) :
35112868Sgabeblack@google.com        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(parent)
35212868Sgabeblack@google.com    {}
35312868Sgabeblack@google.com    sc_in(const char *name,
35412868Sgabeblack@google.com            sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &parent) :
35512868Sgabeblack@google.com        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name, parent)
35612868Sgabeblack@google.com    {}
35712868Sgabeblack@google.com
35812841Sgabeblack@google.com    virtual void
35912841Sgabeblack@google.com    bind(const sc_signal_in_if<sc_dt::sc_logic> &)
36012841Sgabeblack@google.com    {
36112841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
36212841Sgabeblack@google.com    }
36312841Sgabeblack@google.com    void
36412841Sgabeblack@google.com    operator () (const sc_signal_in_if<sc_dt::sc_logic> &)
36512841Sgabeblack@google.com    {
36612841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
36712841Sgabeblack@google.com    }
36812841Sgabeblack@google.com
36912841Sgabeblack@google.com    virtual void
37012841Sgabeblack@google.com    bind(sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &)
37112841Sgabeblack@google.com    {
37212841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
37312841Sgabeblack@google.com    }
37412841Sgabeblack@google.com    void
37512841Sgabeblack@google.com    operator () (sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &)
37612841Sgabeblack@google.com    {
37712841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
37812841Sgabeblack@google.com    }
37912841Sgabeblack@google.com
38012841Sgabeblack@google.com    virtual void
38112841Sgabeblack@google.com    bind(sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1> &)
38212841Sgabeblack@google.com    {
38312841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
38412841Sgabeblack@google.com    }
38512841Sgabeblack@google.com    void
38612841Sgabeblack@google.com    operator () (sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1> &)
38712841Sgabeblack@google.com    {
38812841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
38912841Sgabeblack@google.com    }
39012841Sgabeblack@google.com
39112841Sgabeblack@google.com    virtual void
39212841Sgabeblack@google.com    end_of_elaboration()
39312841Sgabeblack@google.com    {
39412841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
39512841Sgabeblack@google.com    }
39612841Sgabeblack@google.com
39712841Sgabeblack@google.com    const sc_dt::sc_logic &
39812841Sgabeblack@google.com    read() const
39912841Sgabeblack@google.com    {
40012841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
40112841Sgabeblack@google.com        return *(const sc_dt::sc_logic *)nullptr;
40212841Sgabeblack@google.com    }
40312841Sgabeblack@google.com    operator const sc_dt::sc_logic& () const
40412841Sgabeblack@google.com    {
40512841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
40612841Sgabeblack@google.com        return *(const sc_dt::sc_logic *)nullptr;
40712841Sgabeblack@google.com    }
40812841Sgabeblack@google.com
40912841Sgabeblack@google.com    const sc_event &
41012841Sgabeblack@google.com    default_event() const
41112841Sgabeblack@google.com    {
41212841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
41312841Sgabeblack@google.com        return *(const sc_event *)nullptr;
41412841Sgabeblack@google.com    }
41512841Sgabeblack@google.com    const sc_event &
41612841Sgabeblack@google.com    value_changed_event() const
41712841Sgabeblack@google.com    {
41812841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
41912841Sgabeblack@google.com        return *(const sc_event *)nullptr;
42012841Sgabeblack@google.com    }
42112841Sgabeblack@google.com    const sc_event &
42212841Sgabeblack@google.com    posedge_event() const
42312841Sgabeblack@google.com    {
42412841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
42512841Sgabeblack@google.com        return *(const sc_event *)nullptr;
42612841Sgabeblack@google.com    }
42712841Sgabeblack@google.com    const sc_event &
42812841Sgabeblack@google.com    negedge_event() const
42912841Sgabeblack@google.com    {
43012841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
43112841Sgabeblack@google.com        return *(const sc_event *)nullptr;
43212841Sgabeblack@google.com    }
43312841Sgabeblack@google.com
43412841Sgabeblack@google.com    bool
43512841Sgabeblack@google.com    event() const
43612841Sgabeblack@google.com    {
43712841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
43812841Sgabeblack@google.com        return false;
43912841Sgabeblack@google.com    }
44012841Sgabeblack@google.com    bool
44112841Sgabeblack@google.com    posedge() const
44212841Sgabeblack@google.com    {
44312841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
44412841Sgabeblack@google.com        return false;
44512841Sgabeblack@google.com    }
44612841Sgabeblack@google.com    bool
44712841Sgabeblack@google.com    negedge() const
44812841Sgabeblack@google.com    {
44912841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
45012841Sgabeblack@google.com        return false;
45112841Sgabeblack@google.com    }
45212841Sgabeblack@google.com
45312841Sgabeblack@google.com    sc_event_finder &
45412841Sgabeblack@google.com    value_changed() const
45512841Sgabeblack@google.com    {
45612841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
45712841Sgabeblack@google.com        return *(sc_event_finder *)nullptr;
45812841Sgabeblack@google.com    }
45912841Sgabeblack@google.com    sc_event_finder &
46012841Sgabeblack@google.com    pos() const
46112841Sgabeblack@google.com    {
46212841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
46312841Sgabeblack@google.com        return *(sc_event_finder *)nullptr;
46412841Sgabeblack@google.com    }
46512841Sgabeblack@google.com    sc_event_finder &
46612841Sgabeblack@google.com    neg() const
46712841Sgabeblack@google.com    {
46812841Sgabeblack@google.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
46912841Sgabeblack@google.com        return *(sc_event_finder *)nullptr;
47012841Sgabeblack@google.com    }
47112841Sgabeblack@google.com
47212841Sgabeblack@google.com    virtual const char *kind() const { return "sc_in"; }
47312841Sgabeblack@google.com
47412841Sgabeblack@google.com  private:
47512841Sgabeblack@google.com    // Disabled
47612841Sgabeblack@google.com    sc_in(const sc_in<sc_dt::sc_logic> &) :
47712841Sgabeblack@google.com        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>()
47812841Sgabeblack@google.com    {}
47912841Sgabeblack@google.com    sc_in<sc_dt::sc_logic> &
48012841Sgabeblack@google.com    operator = (const sc_in<sc_dt::sc_logic> &)
48112841Sgabeblack@google.com    {
48212841Sgabeblack@google.com        return *this;
48312841Sgabeblack@google.com    }
48412841Sgabeblack@google.com};
48512841Sgabeblack@google.com
48612841Sgabeblack@google.comtemplate <>
48712841Sgabeblack@google.cominline void
48812841Sgabeblack@google.comsc_trace<sc_dt::sc_logic>(
48912841Sgabeblack@google.com        sc_trace_file *, const sc_in<sc_dt::sc_logic> &, const std::string &)
49012841Sgabeblack@google.com{
49112841Sgabeblack@google.com    sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
49212841Sgabeblack@google.com}
49312841Sgabeblack@google.com
49412841Sgabeblack@google.com} // namespace sc_core
49512841Sgabeblack@google.com
49612841Sgabeblack@google.com#endif  //__SYSTEMC_EXT_CHANNEL_SC_IN_HH__
497