113521Sgabeblack@google.com/*****************************************************************************
213521Sgabeblack@google.com
313521Sgabeblack@google.com  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
413521Sgabeblack@google.com  more contributor license agreements.  See the NOTICE file distributed
513521Sgabeblack@google.com  with this work for additional information regarding copyright ownership.
613521Sgabeblack@google.com  Accellera licenses this file to you under the Apache License, Version 2.0
713521Sgabeblack@google.com  (the "License"); you may not use this file except in compliance with the
813521Sgabeblack@google.com  License.  You may obtain a copy of the License at
913521Sgabeblack@google.com
1013521Sgabeblack@google.com    http://www.apache.org/licenses/LICENSE-2.0
1113521Sgabeblack@google.com
1213521Sgabeblack@google.com  Unless required by applicable law or agreed to in writing, software
1313521Sgabeblack@google.com  distributed under the License is distributed on an "AS IS" BASIS,
1413521Sgabeblack@google.com  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
1513521Sgabeblack@google.com  implied.  See the License for the specific language governing
1613521Sgabeblack@google.com  permissions and limitations under the License.
1713521Sgabeblack@google.com
1813521Sgabeblack@google.com *****************************************************************************/
1913521Sgabeblack@google.com
2013521Sgabeblack@google.com#ifndef __SYSTEMC_EXT_TLM_CORE_1_ANALYSIS_ANALYSIS_FIFO_HH__
2113521Sgabeblack@google.com#define __SYSTEMC_EXT_TLM_CORE_1_ANALYSIS_ANALYSIS_FIFO_HH__
2213521Sgabeblack@google.com
2313586Sgabeblack@google.com#include "../req_rsp/channels/fifo/fifo.hh"
2413586Sgabeblack@google.com#include "analysis_if.hh"
2513586Sgabeblack@google.com#include "analysis_triple.hh"
2613521Sgabeblack@google.com
2713521Sgabeblack@google.comnamespace tlm
2813521Sgabeblack@google.com{
2913521Sgabeblack@google.com
3013521Sgabeblack@google.comtemplate <typename T>
3113521Sgabeblack@google.comclass tlm_analysis_fifo : public tlm_fifo<T>,
3213521Sgabeblack@google.com    public virtual tlm_analysis_if<T>,
3313521Sgabeblack@google.com    public virtual tlm_analysis_if<tlm_analysis_triple<T>>
3413521Sgabeblack@google.com{
3513521Sgabeblack@google.com  public:
3613521Sgabeblack@google.com    // analysis fifo is an unbounded tlm_fifo
3713521Sgabeblack@google.com    tlm_analysis_fifo(const char *nm) : tlm_fifo<T>(nm, -16) {}
3813521Sgabeblack@google.com    tlm_analysis_fifo() : tlm_fifo<T>(-16) {}
3913521Sgabeblack@google.com
4013521Sgabeblack@google.com    void write(const tlm_analysis_triple<T> &t) { nb_put(t); }
4113521Sgabeblack@google.com    void write(const T &t) { nb_put(t); }
4213521Sgabeblack@google.com};
4313521Sgabeblack@google.com
4413521Sgabeblack@google.com} // namespace tlm
4513521Sgabeblack@google.com
4613521Sgabeblack@google.com#endif /* __SYSTEMC_EXT_TLM_CORE_1_ANALYSIS_ANALYSIS_FIFO_HH__ */
47