112027Sjungma@eit.uni-kl.de/*****************************************************************************
212027Sjungma@eit.uni-kl.de
312027Sjungma@eit.uni-kl.de  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
412027Sjungma@eit.uni-kl.de  more contributor license agreements.  See the NOTICE file distributed
512027Sjungma@eit.uni-kl.de  with this work for additional information regarding copyright ownership.
612027Sjungma@eit.uni-kl.de  Accellera licenses this file to you under the Apache License, Version 2.0
712027Sjungma@eit.uni-kl.de  (the "License"); you may not use this file except in compliance with the
812027Sjungma@eit.uni-kl.de  License.  You may obtain a copy of the License at
912027Sjungma@eit.uni-kl.de
1012027Sjungma@eit.uni-kl.de    http://www.apache.org/licenses/LICENSE-2.0
1112027Sjungma@eit.uni-kl.de
1212027Sjungma@eit.uni-kl.de  Unless required by applicable law or agreed to in writing, software
1312027Sjungma@eit.uni-kl.de  distributed under the License is distributed on an "AS IS" BASIS,
1412027Sjungma@eit.uni-kl.de  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
1512027Sjungma@eit.uni-kl.de  implied.  See the License for the specific language governing
1612027Sjungma@eit.uni-kl.de  permissions and limitations under the License.
1712027Sjungma@eit.uni-kl.de
1812027Sjungma@eit.uni-kl.de *****************************************************************************/
1912027Sjungma@eit.uni-kl.de
2012027Sjungma@eit.uni-kl.de/*****************************************************************************
2112027Sjungma@eit.uni-kl.de
2212027Sjungma@eit.uni-kl.de  sc_object_int.h -- For inline definitions of some utility functions.
2312027Sjungma@eit.uni-kl.de                     DO NOT EXPORT THIS INCLUDE FILE.
2412027Sjungma@eit.uni-kl.de
2512027Sjungma@eit.uni-kl.de  Original Author: Philipp A. Hartmann, OFFIS, 2013-02-10
2612027Sjungma@eit.uni-kl.de
2712027Sjungma@eit.uni-kl.de *****************************************************************************/
2812027Sjungma@eit.uni-kl.de
2912027Sjungma@eit.uni-kl.de#ifndef SC_OBJECT_INT_H_INCLUDED_
3012027Sjungma@eit.uni-kl.de#define SC_OBJECT_INT_H_INCLUDED_
3112027Sjungma@eit.uni-kl.de
3212027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_object.h"
3312027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_module.h"
3412027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_simcontext_int.h"
3512027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_phase_callback_registry.h"
3612027Sjungma@eit.uni-kl.de
3712027Sjungma@eit.uni-kl.denamespace sc_core {
3812027Sjungma@eit.uni-kl.de
3912027Sjungma@eit.uni-kl.declass sc_object::hierarchy_scope
4012027Sjungma@eit.uni-kl.de{
4112027Sjungma@eit.uni-kl.depublic:
4212027Sjungma@eit.uni-kl.de    explicit hierarchy_scope(sc_object* obj);
4312027Sjungma@eit.uni-kl.de    explicit hierarchy_scope(sc_module* mod);
4412027Sjungma@eit.uni-kl.de    ~hierarchy_scope();
4512027Sjungma@eit.uni-kl.de
4612027Sjungma@eit.uni-kl.deprivate:
4712027Sjungma@eit.uni-kl.de    sc_module * scope_;
4812027Sjungma@eit.uni-kl.de
4912027Sjungma@eit.uni-kl.deprivate:
5012027Sjungma@eit.uni-kl.de    hierarchy_scope( hierarchy_scope const & other ) /* = delete */;
5112027Sjungma@eit.uni-kl.de    hierarchy_scope& operator=(hierarchy_scope const&) /* = delete */;
5212027Sjungma@eit.uni-kl.de};
5312027Sjungma@eit.uni-kl.de
5412027Sjungma@eit.uni-kl.de
5512027Sjungma@eit.uni-kl.deinline
5612027Sjungma@eit.uni-kl.desc_object::hierarchy_scope::hierarchy_scope( sc_object* obj )
5712027Sjungma@eit.uni-kl.de  : scope_(0)
5812027Sjungma@eit.uni-kl.de{
5912027Sjungma@eit.uni-kl.de    if( !obj ) return;
6012027Sjungma@eit.uni-kl.de
6112027Sjungma@eit.uni-kl.de    scope_ = dynamic_cast<sc_module*>(obj);
6212027Sjungma@eit.uni-kl.de    if( !scope_ )
6312027Sjungma@eit.uni-kl.de        scope_ = dynamic_cast<sc_module*>(obj->get_parent_object());
6412027Sjungma@eit.uni-kl.de    if( scope_ )
6512027Sjungma@eit.uni-kl.de        scope_->simcontext()->hierarchy_push(scope_);
6612027Sjungma@eit.uni-kl.de}
6712027Sjungma@eit.uni-kl.de
6812027Sjungma@eit.uni-kl.de
6912027Sjungma@eit.uni-kl.deinline
7012027Sjungma@eit.uni-kl.desc_object::hierarchy_scope::hierarchy_scope( sc_module* mod )
7112027Sjungma@eit.uni-kl.de  : scope_(mod)
7212027Sjungma@eit.uni-kl.de{
7312027Sjungma@eit.uni-kl.de    if( scope_ )
7412027Sjungma@eit.uni-kl.de        scope_->simcontext()->hierarchy_push(scope_);
7512027Sjungma@eit.uni-kl.de}
7612027Sjungma@eit.uni-kl.de
7712027Sjungma@eit.uni-kl.de
7812027Sjungma@eit.uni-kl.deinline
7912027Sjungma@eit.uni-kl.desc_object::hierarchy_scope::~hierarchy_scope()
8012027Sjungma@eit.uni-kl.de{
8112027Sjungma@eit.uni-kl.de    if( scope_ )
8212027Sjungma@eit.uni-kl.de        scope_->simcontext()->hierarchy_pop();
8312027Sjungma@eit.uni-kl.de}
8412027Sjungma@eit.uni-kl.de
8512027Sjungma@eit.uni-kl.de
8612027Sjungma@eit.uni-kl.de// -----------------------------------------------------------------------
8712027Sjungma@eit.uni-kl.de
8812027Sjungma@eit.uni-kl.deinline void
8912027Sjungma@eit.uni-kl.desc_object::do_simulation_phase_callback()
9012027Sjungma@eit.uni-kl.de{
9112027Sjungma@eit.uni-kl.de    simulation_phase_callback();
9212027Sjungma@eit.uni-kl.de}
9312027Sjungma@eit.uni-kl.de
9412027Sjungma@eit.uni-kl.de// -----------------------------------------------------------------------
9512027Sjungma@eit.uni-kl.de
9612027Sjungma@eit.uni-kl.de} // namespace sc_core
9712027Sjungma@eit.uni-kl.de
9812027Sjungma@eit.uni-kl.de#endif // SC_OBJECT_INT_H_INCLUDED_
9912027Sjungma@eit.uni-kl.de// Taf!
100