112853Sgabeblack@google.com/*****************************************************************************
212853Sgabeblack@google.com
312853Sgabeblack@google.com  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
412853Sgabeblack@google.com  more contributor license agreements.  See the NOTICE file distributed
512853Sgabeblack@google.com  with this work for additional information regarding copyright ownership.
612853Sgabeblack@google.com  Accellera licenses this file to you under the Apache License, Version 2.0
712853Sgabeblack@google.com  (the "License"); you may not use this file except in compliance with the
812853Sgabeblack@google.com  License.  You may obtain a copy of the License at
912853Sgabeblack@google.com
1012853Sgabeblack@google.com    http://www.apache.org/licenses/LICENSE-2.0
1112853Sgabeblack@google.com
1212853Sgabeblack@google.com  Unless required by applicable law or agreed to in writing, software
1312853Sgabeblack@google.com  distributed under the License is distributed on an "AS IS" BASIS,
1412853Sgabeblack@google.com  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
1512853Sgabeblack@google.com  implied.  See the License for the specific language governing
1612853Sgabeblack@google.com  permissions and limitations under the License.
1712853Sgabeblack@google.com
1812853Sgabeblack@google.com *****************************************************************************/
1912853Sgabeblack@google.com
2012853Sgabeblack@google.com/*****************************************************************************
2112853Sgabeblack@google.com
2212853Sgabeblack@google.com  sc_fxnum_observer.h -
2312853Sgabeblack@google.com
2412853Sgabeblack@google.com  Original Author: Martin Janssen, Synopsys, Inc.
2512853Sgabeblack@google.com
2612853Sgabeblack@google.com *****************************************************************************/
2712853Sgabeblack@google.com
2812853Sgabeblack@google.com/*****************************************************************************
2912853Sgabeblack@google.com
3012853Sgabeblack@google.com  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
3112853Sgabeblack@google.com  changes you are making here.
3212853Sgabeblack@google.com
3312853Sgabeblack@google.com      Name, Affiliation, Date:
3412853Sgabeblack@google.com  Description of Modification:
3512853Sgabeblack@google.com
3612853Sgabeblack@google.com *****************************************************************************/
3712853Sgabeblack@google.com
3812853Sgabeblack@google.com// $Log: sc_fxnum_observer.h,v $
3912853Sgabeblack@google.com// Revision 1.1.1.1  2006/12/15 20:20:04  acg
4012853Sgabeblack@google.com// SystemC 2.3
4112853Sgabeblack@google.com//
4212853Sgabeblack@google.com// Revision 1.3  2006/01/13 18:53:58  acg
4312853Sgabeblack@google.com// Andy Goodrich: added $Log command so that CVS comments are reproduced in
4412853Sgabeblack@google.com// the source.
4512853Sgabeblack@google.com//
4612853Sgabeblack@google.com
4712853Sgabeblack@google.com#ifndef __SYSTEMC_EXT_DT_FX_SC_FXNUM_OBSERVER_HH__
4812853Sgabeblack@google.com#define __SYSTEMC_EXT_DT_FX_SC_FXNUM_OBSERVER_HH__
4912853Sgabeblack@google.com
5012853Sgabeblack@google.com#include "sc_fxdefs.hh"
5112853Sgabeblack@google.com
5212853Sgabeblack@google.comnamespace sc_dt
5312853Sgabeblack@google.com{
5412853Sgabeblack@google.com
5512853Sgabeblack@google.com// classes defined in this module
5612853Sgabeblack@google.comclass sc_fxnum_observer;
5712853Sgabeblack@google.comclass sc_fxnum_fast_observer;
5812853Sgabeblack@google.com
5912853Sgabeblack@google.com// forward class declarations
6012853Sgabeblack@google.comclass sc_fxnum;
6112853Sgabeblack@google.comclass sc_fxnum_fast;
6212853Sgabeblack@google.com
6312853Sgabeblack@google.com#ifdef SC_ENABLE_OBSERVERS
6412853Sgabeblack@google.com
6512853Sgabeblack@google.com#define SC_FXNUM_OBSERVER_CONSTRUCT_(object) \
6612853Sgabeblack@google.com    SC_OBSERVER_(object, sc_fxnum_observer *, construct)
6712853Sgabeblack@google.com#define SC_FXNUM_OBSERVER_DESTRUCT_(object) \
6812853Sgabeblack@google.com    SC_OBSERVER_(object, sc_fxnum_observer *, destruct)
6912853Sgabeblack@google.com#define SC_FXNUM_OBSERVER_READ_(object) \
7012853Sgabeblack@google.com    SC_OBSERVER_(object, sc_fxnum_observer *, read)
7112853Sgabeblack@google.com#define SC_FXNUM_OBSERVER_WRITE_(object) \
7212853Sgabeblack@google.com    SC_OBSERVER_(object, sc_fxnum_observer *, write)
7312853Sgabeblack@google.com#define SC_FXNUM_OBSERVER_DEFAULT_ \
7412853Sgabeblack@google.com    SC_OBSERVER_DEFAULT_(sc_fxnum_observer)
7512853Sgabeblack@google.com
7612853Sgabeblack@google.com#define SC_FXNUM_FAST_OBSERVER_CONSTRUCT_(object) \
7712853Sgabeblack@google.com    SC_OBSERVER_(object, sc_fxnum_fast_observer *, construct)
7812853Sgabeblack@google.com#define SC_FXNUM_FAST_OBSERVER_DESTRUCT_(object) \
7912853Sgabeblack@google.com    SC_OBSERVER_(object, sc_fxnum_fast_observer *, destruct)
8012853Sgabeblack@google.com#define SC_FXNUM_FAST_OBSERVER_READ_(object) \
8112853Sgabeblack@google.com    SC_OBSERVER_(object, sc_fxnum_fast_observer *, read)
8212853Sgabeblack@google.com#define SC_FXNUM_FAST_OBSERVER_WRITE_(object) \
8312853Sgabeblack@google.com    SC_OBSERVER_(object, sc_fxnum_fast_observer *, write)
8412853Sgabeblack@google.com#define SC_FXNUM_FAST_OBSERVER_DEFAULT_ \
8512853Sgabeblack@google.com    SC_OBSERVER_DEFAULT_(sc_fxnum_fast_observer)
8612853Sgabeblack@google.com
8712853Sgabeblack@google.com#else
8812853Sgabeblack@google.com
8912853Sgabeblack@google.com#define SC_FXNUM_OBSERVER_CONSTRUCT_(object)
9012853Sgabeblack@google.com#define SC_FXNUM_OBSERVER_DESTRUCT_(object)
9112853Sgabeblack@google.com#define SC_FXNUM_OBSERVER_READ_(object)
9212853Sgabeblack@google.com#define SC_FXNUM_OBSERVER_WRITE_(object)
9312853Sgabeblack@google.com#define SC_FXNUM_OBSERVER_DEFAULT_
9412853Sgabeblack@google.com
9512853Sgabeblack@google.com#define SC_FXNUM_FAST_OBSERVER_CONSTRUCT_(object)
9612853Sgabeblack@google.com#define SC_FXNUM_FAST_OBSERVER_DESTRUCT_(object)
9712853Sgabeblack@google.com#define SC_FXNUM_FAST_OBSERVER_READ_(object)
9812853Sgabeblack@google.com#define SC_FXNUM_FAST_OBSERVER_WRITE_(object)
9912853Sgabeblack@google.com#define SC_FXNUM_FAST_OBSERVER_DEFAULT_
10012853Sgabeblack@google.com
10112853Sgabeblack@google.com#endif
10212853Sgabeblack@google.com
10312853Sgabeblack@google.com
10412853Sgabeblack@google.com// ----------------------------------------------------------------------------
10512853Sgabeblack@google.com//  CLASS : sc_fxnum_observer
10612853Sgabeblack@google.com//
10712853Sgabeblack@google.com//  Abstract base class for fixed-point types observers; arbitrary precision.
10812853Sgabeblack@google.com// ----------------------------------------------------------------------------
10912853Sgabeblack@google.com
11012853Sgabeblack@google.comclass sc_fxnum_observer
11112853Sgabeblack@google.com{
11212853Sgabeblack@google.com  protected:
11312853Sgabeblack@google.com    sc_fxnum_observer() {}
11412853Sgabeblack@google.com    virtual ~sc_fxnum_observer() {}
11512853Sgabeblack@google.com
11612853Sgabeblack@google.com  public:
11712853Sgabeblack@google.com    virtual void construct(const sc_fxnum &);
11812853Sgabeblack@google.com    virtual void destruct(const sc_fxnum &);
11912853Sgabeblack@google.com    virtual void read(const sc_fxnum &);
12012853Sgabeblack@google.com    virtual void write(const sc_fxnum &);
12112853Sgabeblack@google.com
12212853Sgabeblack@google.com    static sc_fxnum_observer *(* default_observer)();
12312853Sgabeblack@google.com};
12412853Sgabeblack@google.com
12512853Sgabeblack@google.com
12612853Sgabeblack@google.com// ----------------------------------------------------------------------------
12712853Sgabeblack@google.com//  CLASS : sc_fxnum_fast_observer
12812853Sgabeblack@google.com//
12912853Sgabeblack@google.com//  Abstract base class for fixed-point types observers; limited precision.
13012853Sgabeblack@google.com// ----------------------------------------------------------------------------
13112853Sgabeblack@google.com
13212853Sgabeblack@google.comclass sc_fxnum_fast_observer
13312853Sgabeblack@google.com{
13412853Sgabeblack@google.com  protected:
13512853Sgabeblack@google.com    sc_fxnum_fast_observer() {}
13612853Sgabeblack@google.com    virtual ~sc_fxnum_fast_observer() {}
13712853Sgabeblack@google.com
13812853Sgabeblack@google.com  public:
13912853Sgabeblack@google.com    virtual void construct(const sc_fxnum_fast &);
14012853Sgabeblack@google.com    virtual void destruct(const sc_fxnum_fast &);
14112853Sgabeblack@google.com    virtual void read(const sc_fxnum_fast &);
14212853Sgabeblack@google.com    virtual void write(const sc_fxnum_fast &);
14312853Sgabeblack@google.com
14412853Sgabeblack@google.com    static sc_fxnum_fast_observer *(* default_observer) ();
14512853Sgabeblack@google.com};
14612853Sgabeblack@google.com
14712853Sgabeblack@google.com
14812853Sgabeblack@google.com// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
14912853Sgabeblack@google.com
15012853Sgabeblack@google.com// ----------------------------------------------------------------------------
15112853Sgabeblack@google.com//  CLASS : sc_fxnum_observer
15212853Sgabeblack@google.com//
15312853Sgabeblack@google.com//  Abstract base class for fixed-point types observers; arbitrary precision.
15412853Sgabeblack@google.com// ----------------------------------------------------------------------------
15512853Sgabeblack@google.com
15612853Sgabeblack@google.cominline void sc_fxnum_observer::construct(const sc_fxnum &) {}
15712853Sgabeblack@google.cominline void sc_fxnum_observer::destruct(const sc_fxnum &) {}
15812853Sgabeblack@google.cominline void sc_fxnum_observer::read(const sc_fxnum &) {}
15912853Sgabeblack@google.cominline void sc_fxnum_observer::write(const sc_fxnum &) {}
16012853Sgabeblack@google.com
16112853Sgabeblack@google.com
16212853Sgabeblack@google.com// ----------------------------------------------------------------------------
16312853Sgabeblack@google.com//  CLASS : sc_fxnum_fast_observer
16412853Sgabeblack@google.com//
16512853Sgabeblack@google.com//  Abstract base class for fixed-point types observers; limited precision.
16612853Sgabeblack@google.com// ----------------------------------------------------------------------------
16712853Sgabeblack@google.com
16812853Sgabeblack@google.cominline void sc_fxnum_fast_observer::construct(const sc_fxnum_fast &) {}
16912853Sgabeblack@google.cominline void sc_fxnum_fast_observer::destruct(const sc_fxnum_fast &) {}
17012853Sgabeblack@google.cominline void sc_fxnum_fast_observer::read(const sc_fxnum_fast &) {}
17112853Sgabeblack@google.cominline void sc_fxnum_fast_observer::write(const sc_fxnum_fast &) {}
17212853Sgabeblack@google.com
17312853Sgabeblack@google.com} // namespace sc_dt
17412853Sgabeblack@google.com
17512853Sgabeblack@google.com#endif // __SYSTEMC_EXT_DT_FX_SC_FXNUM_OBSERVER_HH__
176