sc_event.h revision 12027
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_event.h -- 2312027Sjungma@eit.uni-kl.de 2412027Sjungma@eit.uni-kl.de Original Author: Martin Janssen, Synopsys, Inc., 2001-05-21 2512027Sjungma@eit.uni-kl.de 2612027Sjungma@eit.uni-kl.de CHANGE LOG AT THE END OF THE FILE 2712027Sjungma@eit.uni-kl.de *****************************************************************************/ 2812027Sjungma@eit.uni-kl.de 2912027Sjungma@eit.uni-kl.de 3012027Sjungma@eit.uni-kl.de#ifndef SC_EVENT_H 3112027Sjungma@eit.uni-kl.de#define SC_EVENT_H 3212027Sjungma@eit.uni-kl.de 3312027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_cmnhdr.h" 3412027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_kernel_ids.h" 3512027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_simcontext.h" 3612027Sjungma@eit.uni-kl.de#include "sysc/communication/sc_writer_policy.h" 3712027Sjungma@eit.uni-kl.de 3812027Sjungma@eit.uni-kl.denamespace sc_core { 3912027Sjungma@eit.uni-kl.de 4012027Sjungma@eit.uni-kl.de// forward declarations 4112027Sjungma@eit.uni-kl.declass sc_event; 4212027Sjungma@eit.uni-kl.declass sc_event_timed; 4312027Sjungma@eit.uni-kl.declass sc_event_list; 4412027Sjungma@eit.uni-kl.declass sc_event_or_list; 4512027Sjungma@eit.uni-kl.declass sc_event_and_list; 4612027Sjungma@eit.uni-kl.declass sc_object; 4712027Sjungma@eit.uni-kl.de 4812027Sjungma@eit.uni-kl.de// friend function declarations 4912027Sjungma@eit.uni-kl.de int sc_notify_time_compare( const void*, const void* ); 5012027Sjungma@eit.uni-kl.de 5112027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 5212027Sjungma@eit.uni-kl.de// CLASS : sc_event_expr 5312027Sjungma@eit.uni-kl.de// 5412027Sjungma@eit.uni-kl.de// The event expression class. 5512027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 5612027Sjungma@eit.uni-kl.de 5712027Sjungma@eit.uni-kl.detemplate< typename T > 5812027Sjungma@eit.uni-kl.declass sc_event_expr 5912027Sjungma@eit.uni-kl.de{ 6012027Sjungma@eit.uni-kl.de friend class sc_event; 6112027Sjungma@eit.uni-kl.de friend class sc_event_and_list; 6212027Sjungma@eit.uni-kl.de friend class sc_event_or_list; 6312027Sjungma@eit.uni-kl.de 6412027Sjungma@eit.uni-kl.de typedef T type; 6512027Sjungma@eit.uni-kl.de 6612027Sjungma@eit.uni-kl.de inline sc_event_expr() 6712027Sjungma@eit.uni-kl.de : m_expr( new T(true) ) 6812027Sjungma@eit.uni-kl.de {} 6912027Sjungma@eit.uni-kl.de 7012027Sjungma@eit.uni-kl.depublic: 7112027Sjungma@eit.uni-kl.de 7212027Sjungma@eit.uni-kl.de inline sc_event_expr( sc_event_expr const & e) // move semantics 7312027Sjungma@eit.uni-kl.de : m_expr(e.m_expr) 7412027Sjungma@eit.uni-kl.de { 7512027Sjungma@eit.uni-kl.de e.m_expr = 0; 7612027Sjungma@eit.uni-kl.de } 7712027Sjungma@eit.uni-kl.de 7812027Sjungma@eit.uni-kl.de T const & release() const 7912027Sjungma@eit.uni-kl.de { 8012027Sjungma@eit.uni-kl.de sc_assert( m_expr ); 8112027Sjungma@eit.uni-kl.de T* expr = m_expr; 8212027Sjungma@eit.uni-kl.de m_expr=0; 8312027Sjungma@eit.uni-kl.de return *expr; 8412027Sjungma@eit.uni-kl.de } 8512027Sjungma@eit.uni-kl.de 8612027Sjungma@eit.uni-kl.de void push_back( sc_event const & e) const 8712027Sjungma@eit.uni-kl.de { 8812027Sjungma@eit.uni-kl.de sc_assert( m_expr ); 8912027Sjungma@eit.uni-kl.de m_expr->push_back(e); 9012027Sjungma@eit.uni-kl.de } 9112027Sjungma@eit.uni-kl.de 9212027Sjungma@eit.uni-kl.de void push_back( type const & el) const 9312027Sjungma@eit.uni-kl.de { 9412027Sjungma@eit.uni-kl.de sc_assert( m_expr ); 9512027Sjungma@eit.uni-kl.de m_expr->push_back(el); 9612027Sjungma@eit.uni-kl.de } 9712027Sjungma@eit.uni-kl.de operator T const &() const 9812027Sjungma@eit.uni-kl.de { 9912027Sjungma@eit.uni-kl.de return release(); 10012027Sjungma@eit.uni-kl.de } 10112027Sjungma@eit.uni-kl.de 10212027Sjungma@eit.uni-kl.de ~sc_event_expr() 10312027Sjungma@eit.uni-kl.de { 10412027Sjungma@eit.uni-kl.de delete m_expr; 10512027Sjungma@eit.uni-kl.de } 10612027Sjungma@eit.uni-kl.de 10712027Sjungma@eit.uni-kl.deprivate: 10812027Sjungma@eit.uni-kl.de mutable type * m_expr; 10912027Sjungma@eit.uni-kl.de 11012027Sjungma@eit.uni-kl.de // disabled 11112027Sjungma@eit.uni-kl.de void operator=( sc_event_expr const & ); 11212027Sjungma@eit.uni-kl.de}; 11312027Sjungma@eit.uni-kl.de 11412027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 11512027Sjungma@eit.uni-kl.de// CLASS : sc_event_list 11612027Sjungma@eit.uni-kl.de// 11712027Sjungma@eit.uni-kl.de// Base class for lists of events. 11812027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 11912027Sjungma@eit.uni-kl.de 12012027Sjungma@eit.uni-kl.declass sc_event_list 12112027Sjungma@eit.uni-kl.de{ 12212027Sjungma@eit.uni-kl.de friend class sc_process_b; 12312027Sjungma@eit.uni-kl.de friend class sc_method_process; 12412027Sjungma@eit.uni-kl.de friend class sc_thread_process; 12512027Sjungma@eit.uni-kl.de friend void sc_thread_cor_fn( void* arg ); 12612027Sjungma@eit.uni-kl.de 12712027Sjungma@eit.uni-kl.depublic: 12812027Sjungma@eit.uni-kl.de sc_event_list( const sc_event_list& ); 12912027Sjungma@eit.uni-kl.de sc_event_list& operator = ( const sc_event_list& ); 13012027Sjungma@eit.uni-kl.de 13112027Sjungma@eit.uni-kl.de int size() const; 13212027Sjungma@eit.uni-kl.de 13312027Sjungma@eit.uni-kl.deprotected: 13412027Sjungma@eit.uni-kl.de 13512027Sjungma@eit.uni-kl.de void push_back( const sc_event& ); 13612027Sjungma@eit.uni-kl.de void push_back( const sc_event_list& ); 13712027Sjungma@eit.uni-kl.de 13812027Sjungma@eit.uni-kl.de explicit 13912027Sjungma@eit.uni-kl.de sc_event_list( bool and_list_, bool auto_delete_ = false ); 14012027Sjungma@eit.uni-kl.de 14112027Sjungma@eit.uni-kl.de sc_event_list( const sc_event&, 14212027Sjungma@eit.uni-kl.de bool and_list_, 14312027Sjungma@eit.uni-kl.de bool auto_delete_ = false ); 14412027Sjungma@eit.uni-kl.de 14512027Sjungma@eit.uni-kl.de ~sc_event_list(); 14612027Sjungma@eit.uni-kl.de 14712027Sjungma@eit.uni-kl.de void swap( sc_event_list& ); 14812027Sjungma@eit.uni-kl.de void move_from( const sc_event_list& ); 14912027Sjungma@eit.uni-kl.de 15012027Sjungma@eit.uni-kl.de bool and_list() const; 15112027Sjungma@eit.uni-kl.de 15212027Sjungma@eit.uni-kl.de void add_dynamic( sc_method_handle ) const; 15312027Sjungma@eit.uni-kl.de void add_dynamic( sc_thread_handle ) const; 15412027Sjungma@eit.uni-kl.de void remove_dynamic( sc_method_handle, const sc_event* ) const; 15512027Sjungma@eit.uni-kl.de void remove_dynamic( sc_thread_handle, const sc_event* ) const; 15612027Sjungma@eit.uni-kl.de 15712027Sjungma@eit.uni-kl.de bool busy() const; 15812027Sjungma@eit.uni-kl.de bool temporary() const; 15912027Sjungma@eit.uni-kl.de void auto_delete() const; 16012027Sjungma@eit.uni-kl.de 16112027Sjungma@eit.uni-kl.de void report_premature_destruction() const; 16212027Sjungma@eit.uni-kl.de void report_invalid_modification() const; 16312027Sjungma@eit.uni-kl.de 16412027Sjungma@eit.uni-kl.deprivate: 16512027Sjungma@eit.uni-kl.de 16612027Sjungma@eit.uni-kl.de std::vector<const sc_event*> m_events; 16712027Sjungma@eit.uni-kl.de bool m_and_list; 16812027Sjungma@eit.uni-kl.de bool m_auto_delete; 16912027Sjungma@eit.uni-kl.de mutable unsigned m_busy; 17012027Sjungma@eit.uni-kl.de}; 17112027Sjungma@eit.uni-kl.de 17212027Sjungma@eit.uni-kl.de 17312027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 17412027Sjungma@eit.uni-kl.de// CLASS : sc_event_and_list 17512027Sjungma@eit.uni-kl.de// 17612027Sjungma@eit.uni-kl.de// AND list of events. 17712027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 17812027Sjungma@eit.uni-kl.de 17912027Sjungma@eit.uni-kl.declass sc_event_and_list 18012027Sjungma@eit.uni-kl.de: public sc_event_list 18112027Sjungma@eit.uni-kl.de{ 18212027Sjungma@eit.uni-kl.de friend class sc_event; 18312027Sjungma@eit.uni-kl.de friend class sc_event_expr<sc_event_and_list>; 18412027Sjungma@eit.uni-kl.de friend class sc_process_b; 18512027Sjungma@eit.uni-kl.de friend class sc_method_process; 18612027Sjungma@eit.uni-kl.de friend class sc_thread_process; 18712027Sjungma@eit.uni-kl.de 18812027Sjungma@eit.uni-kl.deprotected: 18912027Sjungma@eit.uni-kl.de 19012027Sjungma@eit.uni-kl.de explicit 19112027Sjungma@eit.uni-kl.de sc_event_and_list( bool auto_delete_ ); 19212027Sjungma@eit.uni-kl.de 19312027Sjungma@eit.uni-kl.depublic: 19412027Sjungma@eit.uni-kl.de 19512027Sjungma@eit.uni-kl.de sc_event_and_list(); 19612027Sjungma@eit.uni-kl.de sc_event_and_list( const sc_event& ); 19712027Sjungma@eit.uni-kl.de 19812027Sjungma@eit.uni-kl.de void swap( sc_event_and_list& ); 19912027Sjungma@eit.uni-kl.de sc_event_and_list& operator &= ( const sc_event& ); 20012027Sjungma@eit.uni-kl.de sc_event_and_list& operator &= ( const sc_event_and_list & ); 20112027Sjungma@eit.uni-kl.de 20212027Sjungma@eit.uni-kl.de sc_event_expr<sc_event_and_list> operator & ( const sc_event& ); 20312027Sjungma@eit.uni-kl.de sc_event_expr<sc_event_and_list> operator & ( const sc_event_and_list& ); 20412027Sjungma@eit.uni-kl.de}; 20512027Sjungma@eit.uni-kl.de 20612027Sjungma@eit.uni-kl.detypedef sc_event_expr<sc_event_and_list> sc_event_and_expr; 20712027Sjungma@eit.uni-kl.de 20812027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 20912027Sjungma@eit.uni-kl.de// CLASS : sc_event_or_list 21012027Sjungma@eit.uni-kl.de// 21112027Sjungma@eit.uni-kl.de// OR list of events. 21212027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 21312027Sjungma@eit.uni-kl.de 21412027Sjungma@eit.uni-kl.declass sc_event_or_list 21512027Sjungma@eit.uni-kl.de: public sc_event_list 21612027Sjungma@eit.uni-kl.de{ 21712027Sjungma@eit.uni-kl.de friend class sc_event; 21812027Sjungma@eit.uni-kl.de friend class sc_event_expr<sc_event_or_list>; 21912027Sjungma@eit.uni-kl.de friend class sc_process_b; 22012027Sjungma@eit.uni-kl.de friend class sc_method_process; 22112027Sjungma@eit.uni-kl.de friend class sc_thread_process; 22212027Sjungma@eit.uni-kl.de 22312027Sjungma@eit.uni-kl.deprotected: 22412027Sjungma@eit.uni-kl.de 22512027Sjungma@eit.uni-kl.de explicit 22612027Sjungma@eit.uni-kl.de sc_event_or_list( bool auto_delete_ ); 22712027Sjungma@eit.uni-kl.de 22812027Sjungma@eit.uni-kl.depublic: 22912027Sjungma@eit.uni-kl.de sc_event_or_list(); 23012027Sjungma@eit.uni-kl.de sc_event_or_list( const sc_event& ); 23112027Sjungma@eit.uni-kl.de void swap( sc_event_or_list& ); 23212027Sjungma@eit.uni-kl.de sc_event_or_list& operator |= ( const sc_event& ); 23312027Sjungma@eit.uni-kl.de sc_event_or_list& operator |= ( const sc_event_or_list & ); 23412027Sjungma@eit.uni-kl.de sc_event_expr<sc_event_or_list> operator | ( const sc_event& ) const; 23512027Sjungma@eit.uni-kl.de sc_event_expr<sc_event_or_list> operator | ( const sc_event_or_list& ) const; 23612027Sjungma@eit.uni-kl.de}; 23712027Sjungma@eit.uni-kl.de 23812027Sjungma@eit.uni-kl.detypedef sc_event_expr<sc_event_or_list> sc_event_or_expr; 23912027Sjungma@eit.uni-kl.de 24012027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 24112027Sjungma@eit.uni-kl.de// CLASS : sc_event 24212027Sjungma@eit.uni-kl.de// 24312027Sjungma@eit.uni-kl.de// The event class. 24412027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 24512027Sjungma@eit.uni-kl.de 24612027Sjungma@eit.uni-kl.declass sc_event 24712027Sjungma@eit.uni-kl.de{ 24812027Sjungma@eit.uni-kl.de friend class sc_clock; 24912027Sjungma@eit.uni-kl.de friend class sc_event_list; 25012027Sjungma@eit.uni-kl.de friend class sc_event_timed; 25112027Sjungma@eit.uni-kl.de friend class sc_simcontext; 25212027Sjungma@eit.uni-kl.de friend class sc_object; 25312027Sjungma@eit.uni-kl.de friend class sc_process_b; 25412027Sjungma@eit.uni-kl.de friend class sc_method_process; 25512027Sjungma@eit.uni-kl.de friend class sc_thread_process; 25612027Sjungma@eit.uni-kl.de template<typename IF, sc_writer_policy POL> friend class sc_signal; 25712027Sjungma@eit.uni-kl.de friend void sc_thread_cor_fn( void* arg ); 25812027Sjungma@eit.uni-kl.de 25912027Sjungma@eit.uni-kl.depublic: 26012027Sjungma@eit.uni-kl.de 26112027Sjungma@eit.uni-kl.de sc_event(); 26212027Sjungma@eit.uni-kl.de sc_event( const char* name ); 26312027Sjungma@eit.uni-kl.de ~sc_event(); 26412027Sjungma@eit.uni-kl.de 26512027Sjungma@eit.uni-kl.de void cancel(); 26612027Sjungma@eit.uni-kl.de 26712027Sjungma@eit.uni-kl.de const char* name() const { return m_name.c_str(); } 26812027Sjungma@eit.uni-kl.de const char* basename() const; 26912027Sjungma@eit.uni-kl.de sc_object* get_parent_object() const { return m_parent_p; } 27012027Sjungma@eit.uni-kl.de bool in_hierarchy() const { return m_name.length() != 0; } 27112027Sjungma@eit.uni-kl.de 27212027Sjungma@eit.uni-kl.de void notify(); 27312027Sjungma@eit.uni-kl.de void notify( const sc_time& ); 27412027Sjungma@eit.uni-kl.de void notify( double, sc_time_unit ); 27512027Sjungma@eit.uni-kl.de 27612027Sjungma@eit.uni-kl.de void notify_delayed(); 27712027Sjungma@eit.uni-kl.de void notify_delayed( const sc_time& ); 27812027Sjungma@eit.uni-kl.de void notify_delayed( double, sc_time_unit ); 27912027Sjungma@eit.uni-kl.de 28012027Sjungma@eit.uni-kl.de sc_event_or_expr operator | ( const sc_event& ) const; 28112027Sjungma@eit.uni-kl.de sc_event_or_expr operator | ( const sc_event_or_list& ) const; 28212027Sjungma@eit.uni-kl.de sc_event_and_expr operator & ( const sc_event& ) const; 28312027Sjungma@eit.uni-kl.de sc_event_and_expr operator & ( const sc_event_and_list& ) const; 28412027Sjungma@eit.uni-kl.de 28512027Sjungma@eit.uni-kl.de 28612027Sjungma@eit.uni-kl.deprivate: 28712027Sjungma@eit.uni-kl.de 28812027Sjungma@eit.uni-kl.de void add_static( sc_method_handle ) const; 28912027Sjungma@eit.uni-kl.de void add_static( sc_thread_handle ) const; 29012027Sjungma@eit.uni-kl.de void add_dynamic( sc_method_handle ) const; 29112027Sjungma@eit.uni-kl.de void add_dynamic( sc_thread_handle ) const; 29212027Sjungma@eit.uni-kl.de 29312027Sjungma@eit.uni-kl.de void notify_internal( const sc_time& ); 29412027Sjungma@eit.uni-kl.de void notify_next_delta(); 29512027Sjungma@eit.uni-kl.de 29612027Sjungma@eit.uni-kl.de bool remove_static( sc_method_handle ) const; 29712027Sjungma@eit.uni-kl.de bool remove_static( sc_thread_handle ) const; 29812027Sjungma@eit.uni-kl.de bool remove_dynamic( sc_method_handle ) const; 29912027Sjungma@eit.uni-kl.de bool remove_dynamic( sc_thread_handle ) const; 30012027Sjungma@eit.uni-kl.de 30112027Sjungma@eit.uni-kl.de void register_event( const char* name ); 30212027Sjungma@eit.uni-kl.de void reset(); 30312027Sjungma@eit.uni-kl.de 30412027Sjungma@eit.uni-kl.de void trigger(); 30512027Sjungma@eit.uni-kl.de 30612027Sjungma@eit.uni-kl.deprivate: 30712027Sjungma@eit.uni-kl.de 30812027Sjungma@eit.uni-kl.de enum notify_t { NONE, DELTA, TIMED }; 30912027Sjungma@eit.uni-kl.de 31012027Sjungma@eit.uni-kl.de std::string m_name; // name of object. 31112027Sjungma@eit.uni-kl.de sc_object* m_parent_p; // parent sc_object for this event. 31212027Sjungma@eit.uni-kl.de sc_simcontext* m_simc; 31312027Sjungma@eit.uni-kl.de notify_t m_notify_type; 31412027Sjungma@eit.uni-kl.de int m_delta_event_index; 31512027Sjungma@eit.uni-kl.de sc_event_timed* m_timed; 31612027Sjungma@eit.uni-kl.de 31712027Sjungma@eit.uni-kl.de mutable std::vector<sc_method_handle> m_methods_static; 31812027Sjungma@eit.uni-kl.de mutable std::vector<sc_method_handle> m_methods_dynamic; 31912027Sjungma@eit.uni-kl.de mutable std::vector<sc_thread_handle> m_threads_static; 32012027Sjungma@eit.uni-kl.de mutable std::vector<sc_thread_handle> m_threads_dynamic; 32112027Sjungma@eit.uni-kl.de 32212027Sjungma@eit.uni-kl.deprivate: 32312027Sjungma@eit.uni-kl.de 32412027Sjungma@eit.uni-kl.de // disabled 32512027Sjungma@eit.uni-kl.de sc_event( const sc_event& ); 32612027Sjungma@eit.uni-kl.de sc_event& operator = ( const sc_event& ); 32712027Sjungma@eit.uni-kl.de}; 32812027Sjungma@eit.uni-kl.de 32912027Sjungma@eit.uni-kl.de#define SC_KERNEL_EVENT_PREFIX "$$$$kernel_event$$$$_" 33012027Sjungma@eit.uni-kl.de 33112027Sjungma@eit.uni-kl.deextern sc_event sc_non_event; // Event that never happens. 33212027Sjungma@eit.uni-kl.de 33312027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 33412027Sjungma@eit.uni-kl.de// CLASS : sc_event_timed 33512027Sjungma@eit.uni-kl.de// 33612027Sjungma@eit.uni-kl.de// Class for storing the time to notify a timed event. 33712027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 33812027Sjungma@eit.uni-kl.de 33912027Sjungma@eit.uni-kl.declass sc_event_timed 34012027Sjungma@eit.uni-kl.de{ 34112027Sjungma@eit.uni-kl.de friend class sc_event; 34212027Sjungma@eit.uni-kl.de friend class sc_simcontext; 34312027Sjungma@eit.uni-kl.de 34412027Sjungma@eit.uni-kl.de friend int sc_notify_time_compare( const void*, const void* ); 34512027Sjungma@eit.uni-kl.de 34612027Sjungma@eit.uni-kl.deprivate: 34712027Sjungma@eit.uni-kl.de 34812027Sjungma@eit.uni-kl.de sc_event_timed( sc_event* e, const sc_time& t ) 34912027Sjungma@eit.uni-kl.de : m_event( e ), m_notify_time( t ) 35012027Sjungma@eit.uni-kl.de {} 35112027Sjungma@eit.uni-kl.de 35212027Sjungma@eit.uni-kl.de ~sc_event_timed() 35312027Sjungma@eit.uni-kl.de { if( m_event != 0 ) { m_event->m_timed = 0; } } 35412027Sjungma@eit.uni-kl.de 35512027Sjungma@eit.uni-kl.de sc_event* event() const 35612027Sjungma@eit.uni-kl.de { return m_event; } 35712027Sjungma@eit.uni-kl.de 35812027Sjungma@eit.uni-kl.de const sc_time& notify_time() const 35912027Sjungma@eit.uni-kl.de { return m_notify_time; } 36012027Sjungma@eit.uni-kl.de 36112027Sjungma@eit.uni-kl.de static void* operator new( std::size_t ) 36212027Sjungma@eit.uni-kl.de { return allocate(); } 36312027Sjungma@eit.uni-kl.de 36412027Sjungma@eit.uni-kl.de static void operator delete( void* p, std::size_t ) 36512027Sjungma@eit.uni-kl.de { deallocate( p ); } 36612027Sjungma@eit.uni-kl.de 36712027Sjungma@eit.uni-kl.deprivate: 36812027Sjungma@eit.uni-kl.de 36912027Sjungma@eit.uni-kl.de // dedicated memory management 37012027Sjungma@eit.uni-kl.de static void* allocate(); 37112027Sjungma@eit.uni-kl.de static void deallocate( void* ); 37212027Sjungma@eit.uni-kl.de 37312027Sjungma@eit.uni-kl.deprivate: 37412027Sjungma@eit.uni-kl.de 37512027Sjungma@eit.uni-kl.de sc_event* m_event; 37612027Sjungma@eit.uni-kl.de sc_time m_notify_time; 37712027Sjungma@eit.uni-kl.de 37812027Sjungma@eit.uni-kl.deprivate: 37912027Sjungma@eit.uni-kl.de 38012027Sjungma@eit.uni-kl.de // disabled 38112027Sjungma@eit.uni-kl.de sc_event_timed(); 38212027Sjungma@eit.uni-kl.de sc_event_timed( const sc_event_timed& ); 38312027Sjungma@eit.uni-kl.de sc_event_timed& operator = ( const sc_event_timed& ); 38412027Sjungma@eit.uni-kl.de}; 38512027Sjungma@eit.uni-kl.de 38612027Sjungma@eit.uni-kl.de 38712027Sjungma@eit.uni-kl.de// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 38812027Sjungma@eit.uni-kl.de 38912027Sjungma@eit.uni-kl.deinline 39012027Sjungma@eit.uni-kl.devoid 39112027Sjungma@eit.uni-kl.desc_event::notify( double v, sc_time_unit tu ) 39212027Sjungma@eit.uni-kl.de{ 39312027Sjungma@eit.uni-kl.de notify( sc_time( v, tu, m_simc ) ); 39412027Sjungma@eit.uni-kl.de} 39512027Sjungma@eit.uni-kl.de 39612027Sjungma@eit.uni-kl.de 39712027Sjungma@eit.uni-kl.deinline 39812027Sjungma@eit.uni-kl.devoid 39912027Sjungma@eit.uni-kl.desc_event::notify_internal( const sc_time& t ) 40012027Sjungma@eit.uni-kl.de{ 40112027Sjungma@eit.uni-kl.de if( t == SC_ZERO_TIME ) { 40212027Sjungma@eit.uni-kl.de // add this event to the delta events set 40312027Sjungma@eit.uni-kl.de m_delta_event_index = m_simc->add_delta_event( this ); 40412027Sjungma@eit.uni-kl.de m_notify_type = DELTA; 40512027Sjungma@eit.uni-kl.de } else { 40612027Sjungma@eit.uni-kl.de sc_event_timed* et = 40712027Sjungma@eit.uni-kl.de new sc_event_timed( this, m_simc->time_stamp() + t ); 40812027Sjungma@eit.uni-kl.de m_simc->add_timed_event( et ); 40912027Sjungma@eit.uni-kl.de m_timed = et; 41012027Sjungma@eit.uni-kl.de m_notify_type = TIMED; 41112027Sjungma@eit.uni-kl.de } 41212027Sjungma@eit.uni-kl.de} 41312027Sjungma@eit.uni-kl.de 41412027Sjungma@eit.uni-kl.deinline 41512027Sjungma@eit.uni-kl.devoid 41612027Sjungma@eit.uni-kl.desc_event::notify_next_delta() 41712027Sjungma@eit.uni-kl.de{ 41812027Sjungma@eit.uni-kl.de if( m_notify_type != NONE ) { 41912027Sjungma@eit.uni-kl.de SC_REPORT_ERROR( SC_ID_NOTIFY_DELAYED_, 0 ); 42012027Sjungma@eit.uni-kl.de } 42112027Sjungma@eit.uni-kl.de // add this event to the delta events set 42212027Sjungma@eit.uni-kl.de m_delta_event_index = m_simc->add_delta_event( this ); 42312027Sjungma@eit.uni-kl.de m_notify_type = DELTA; 42412027Sjungma@eit.uni-kl.de} 42512027Sjungma@eit.uni-kl.de 42612027Sjungma@eit.uni-kl.deinline 42712027Sjungma@eit.uni-kl.devoid 42812027Sjungma@eit.uni-kl.desc_event::notify_delayed( double v, sc_time_unit tu ) 42912027Sjungma@eit.uni-kl.de{ 43012027Sjungma@eit.uni-kl.de notify_delayed( sc_time( v, tu, m_simc ) ); 43112027Sjungma@eit.uni-kl.de} 43212027Sjungma@eit.uni-kl.de 43312027Sjungma@eit.uni-kl.de 43412027Sjungma@eit.uni-kl.deinline 43512027Sjungma@eit.uni-kl.devoid 43612027Sjungma@eit.uni-kl.desc_event::add_static( sc_method_handle method_h ) const 43712027Sjungma@eit.uni-kl.de{ 43812027Sjungma@eit.uni-kl.de m_methods_static.push_back( method_h ); 43912027Sjungma@eit.uni-kl.de} 44012027Sjungma@eit.uni-kl.de 44112027Sjungma@eit.uni-kl.deinline 44212027Sjungma@eit.uni-kl.devoid 44312027Sjungma@eit.uni-kl.desc_event::add_static( sc_thread_handle thread_h ) const 44412027Sjungma@eit.uni-kl.de{ 44512027Sjungma@eit.uni-kl.de m_threads_static.push_back( thread_h ); 44612027Sjungma@eit.uni-kl.de} 44712027Sjungma@eit.uni-kl.de 44812027Sjungma@eit.uni-kl.deinline 44912027Sjungma@eit.uni-kl.devoid 45012027Sjungma@eit.uni-kl.desc_event::add_dynamic( sc_method_handle method_h ) const 45112027Sjungma@eit.uni-kl.de{ 45212027Sjungma@eit.uni-kl.de m_methods_dynamic.push_back( method_h ); 45312027Sjungma@eit.uni-kl.de} 45412027Sjungma@eit.uni-kl.de 45512027Sjungma@eit.uni-kl.deinline 45612027Sjungma@eit.uni-kl.devoid 45712027Sjungma@eit.uni-kl.desc_event::add_dynamic( sc_thread_handle thread_h ) const 45812027Sjungma@eit.uni-kl.de{ 45912027Sjungma@eit.uni-kl.de m_threads_dynamic.push_back( thread_h ); 46012027Sjungma@eit.uni-kl.de} 46112027Sjungma@eit.uni-kl.de 46212027Sjungma@eit.uni-kl.de 46312027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 46412027Sjungma@eit.uni-kl.de// Deprecated functional notation for notifying events. 46512027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 46612027Sjungma@eit.uni-kl.de 46712027Sjungma@eit.uni-kl.deextern void notify( sc_event& e ); 46812027Sjungma@eit.uni-kl.deextern void notify( const sc_time& t, sc_event& e ); 46912027Sjungma@eit.uni-kl.deextern void notify( double v, sc_time_unit tu, sc_event& e ); 47012027Sjungma@eit.uni-kl.de 47112027Sjungma@eit.uni-kl.de 47212027Sjungma@eit.uni-kl.de// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 47312027Sjungma@eit.uni-kl.de 47412027Sjungma@eit.uni-kl.deinline 47512027Sjungma@eit.uni-kl.desc_event_list::sc_event_list( bool and_list_, bool auto_delete_ ) 47612027Sjungma@eit.uni-kl.de : m_events() 47712027Sjungma@eit.uni-kl.de , m_and_list( and_list_ ) 47812027Sjungma@eit.uni-kl.de , m_auto_delete( auto_delete_ ) 47912027Sjungma@eit.uni-kl.de , m_busy( 0 ) 48012027Sjungma@eit.uni-kl.de{ 48112027Sjungma@eit.uni-kl.de} 48212027Sjungma@eit.uni-kl.de 48312027Sjungma@eit.uni-kl.deinline 48412027Sjungma@eit.uni-kl.desc_event_list::sc_event_list( const sc_event& e, 48512027Sjungma@eit.uni-kl.de bool and_list_, 48612027Sjungma@eit.uni-kl.de bool auto_delete_ ) 48712027Sjungma@eit.uni-kl.de : m_events() 48812027Sjungma@eit.uni-kl.de , m_and_list( and_list_ ) 48912027Sjungma@eit.uni-kl.de , m_auto_delete( auto_delete_ ) 49012027Sjungma@eit.uni-kl.de , m_busy(0) 49112027Sjungma@eit.uni-kl.de{ 49212027Sjungma@eit.uni-kl.de m_events.push_back( &e ); 49312027Sjungma@eit.uni-kl.de} 49412027Sjungma@eit.uni-kl.de 49512027Sjungma@eit.uni-kl.deinline 49612027Sjungma@eit.uni-kl.desc_event_list::sc_event_list( sc_event_list const & that ) 49712027Sjungma@eit.uni-kl.de : m_events() 49812027Sjungma@eit.uni-kl.de , m_and_list( that.m_and_list ) 49912027Sjungma@eit.uni-kl.de , m_auto_delete( false ) 50012027Sjungma@eit.uni-kl.de , m_busy( 0 ) 50112027Sjungma@eit.uni-kl.de{ 50212027Sjungma@eit.uni-kl.de move_from( that ); 50312027Sjungma@eit.uni-kl.de that.auto_delete(); // free automatic lists 50412027Sjungma@eit.uni-kl.de} 50512027Sjungma@eit.uni-kl.de 50612027Sjungma@eit.uni-kl.deinline 50712027Sjungma@eit.uni-kl.desc_event_list& 50812027Sjungma@eit.uni-kl.desc_event_list::operator=( sc_event_list const & that ) 50912027Sjungma@eit.uni-kl.de{ 51012027Sjungma@eit.uni-kl.de if( m_busy ) 51112027Sjungma@eit.uni-kl.de report_invalid_modification(); 51212027Sjungma@eit.uni-kl.de 51312027Sjungma@eit.uni-kl.de move_from( that ); 51412027Sjungma@eit.uni-kl.de that.auto_delete(); // free automatic lists 51512027Sjungma@eit.uni-kl.de 51612027Sjungma@eit.uni-kl.de return *this; 51712027Sjungma@eit.uni-kl.de} 51812027Sjungma@eit.uni-kl.de 51912027Sjungma@eit.uni-kl.deinline 52012027Sjungma@eit.uni-kl.desc_event_list::~sc_event_list() 52112027Sjungma@eit.uni-kl.de{ 52212027Sjungma@eit.uni-kl.de if( m_busy ) 52312027Sjungma@eit.uni-kl.de report_premature_destruction(); 52412027Sjungma@eit.uni-kl.de} 52512027Sjungma@eit.uni-kl.de 52612027Sjungma@eit.uni-kl.deinline 52712027Sjungma@eit.uni-kl.devoid 52812027Sjungma@eit.uni-kl.desc_event_list::swap( sc_event_list& that ) 52912027Sjungma@eit.uni-kl.de{ 53012027Sjungma@eit.uni-kl.de if( busy() || that.busy() ) 53112027Sjungma@eit.uni-kl.de report_invalid_modification(); 53212027Sjungma@eit.uni-kl.de m_events.swap( that.m_events ); 53312027Sjungma@eit.uni-kl.de} 53412027Sjungma@eit.uni-kl.de 53512027Sjungma@eit.uni-kl.deinline 53612027Sjungma@eit.uni-kl.devoid 53712027Sjungma@eit.uni-kl.desc_event_list::move_from( sc_event_list const& that ) 53812027Sjungma@eit.uni-kl.de{ 53912027Sjungma@eit.uni-kl.de if( that.temporary() ) { 54012027Sjungma@eit.uni-kl.de swap( const_cast<sc_event_list&>(that) ); // move from source 54112027Sjungma@eit.uni-kl.de } else { 54212027Sjungma@eit.uni-kl.de m_events = that.m_events; // copy from source 54312027Sjungma@eit.uni-kl.de } 54412027Sjungma@eit.uni-kl.de} 54512027Sjungma@eit.uni-kl.de 54612027Sjungma@eit.uni-kl.deinline 54712027Sjungma@eit.uni-kl.deint 54812027Sjungma@eit.uni-kl.desc_event_list::size() const 54912027Sjungma@eit.uni-kl.de{ 55012027Sjungma@eit.uni-kl.de return m_events.size(); 55112027Sjungma@eit.uni-kl.de} 55212027Sjungma@eit.uni-kl.de 55312027Sjungma@eit.uni-kl.deinline 55412027Sjungma@eit.uni-kl.debool 55512027Sjungma@eit.uni-kl.desc_event_list::and_list() const 55612027Sjungma@eit.uni-kl.de{ 55712027Sjungma@eit.uni-kl.de return m_and_list; 55812027Sjungma@eit.uni-kl.de} 55912027Sjungma@eit.uni-kl.de 56012027Sjungma@eit.uni-kl.de 56112027Sjungma@eit.uni-kl.deinline 56212027Sjungma@eit.uni-kl.debool 56312027Sjungma@eit.uni-kl.desc_event_list::busy() const 56412027Sjungma@eit.uni-kl.de{ 56512027Sjungma@eit.uni-kl.de return m_busy != 0; 56612027Sjungma@eit.uni-kl.de} 56712027Sjungma@eit.uni-kl.de 56812027Sjungma@eit.uni-kl.de 56912027Sjungma@eit.uni-kl.deinline 57012027Sjungma@eit.uni-kl.debool 57112027Sjungma@eit.uni-kl.desc_event_list::temporary() const 57212027Sjungma@eit.uni-kl.de{ 57312027Sjungma@eit.uni-kl.de return m_auto_delete && ! m_busy; 57412027Sjungma@eit.uni-kl.de} 57512027Sjungma@eit.uni-kl.de 57612027Sjungma@eit.uni-kl.deinline 57712027Sjungma@eit.uni-kl.devoid 57812027Sjungma@eit.uni-kl.desc_event_list::auto_delete() const 57912027Sjungma@eit.uni-kl.de{ 58012027Sjungma@eit.uni-kl.de if( m_busy ) { 58112027Sjungma@eit.uni-kl.de --m_busy; 58212027Sjungma@eit.uni-kl.de } 58312027Sjungma@eit.uni-kl.de if( ! m_busy && m_auto_delete ) { 58412027Sjungma@eit.uni-kl.de delete this; 58512027Sjungma@eit.uni-kl.de } 58612027Sjungma@eit.uni-kl.de} 58712027Sjungma@eit.uni-kl.de 58812027Sjungma@eit.uni-kl.de 58912027Sjungma@eit.uni-kl.de 59012027Sjungma@eit.uni-kl.de// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 59112027Sjungma@eit.uni-kl.de 59212027Sjungma@eit.uni-kl.deinline 59312027Sjungma@eit.uni-kl.desc_event_or_list::sc_event_or_list() 59412027Sjungma@eit.uni-kl.de : sc_event_list( false ) 59512027Sjungma@eit.uni-kl.de{} 59612027Sjungma@eit.uni-kl.de 59712027Sjungma@eit.uni-kl.deinline 59812027Sjungma@eit.uni-kl.desc_event_or_list::sc_event_or_list( const sc_event& e ) 59912027Sjungma@eit.uni-kl.de: sc_event_list( false ) 60012027Sjungma@eit.uni-kl.de{ 60112027Sjungma@eit.uni-kl.de push_back( e ); 60212027Sjungma@eit.uni-kl.de} 60312027Sjungma@eit.uni-kl.de 60412027Sjungma@eit.uni-kl.deinline 60512027Sjungma@eit.uni-kl.desc_event_or_list::sc_event_or_list( bool auto_delete_ ) 60612027Sjungma@eit.uni-kl.de: sc_event_list( false, auto_delete_ ) 60712027Sjungma@eit.uni-kl.de{} 60812027Sjungma@eit.uni-kl.de 60912027Sjungma@eit.uni-kl.deinline 61012027Sjungma@eit.uni-kl.desc_event_or_list& 61112027Sjungma@eit.uni-kl.desc_event_or_list::operator |= ( const sc_event& e ) 61212027Sjungma@eit.uni-kl.de{ 61312027Sjungma@eit.uni-kl.de if( busy() ) 61412027Sjungma@eit.uni-kl.de report_invalid_modification(); 61512027Sjungma@eit.uni-kl.de 61612027Sjungma@eit.uni-kl.de push_back( e ); 61712027Sjungma@eit.uni-kl.de return *this; 61812027Sjungma@eit.uni-kl.de} 61912027Sjungma@eit.uni-kl.de 62012027Sjungma@eit.uni-kl.deinline 62112027Sjungma@eit.uni-kl.desc_event_or_list& 62212027Sjungma@eit.uni-kl.desc_event_or_list::operator |= ( const sc_event_or_list& el ) 62312027Sjungma@eit.uni-kl.de{ 62412027Sjungma@eit.uni-kl.de if( busy() ) 62512027Sjungma@eit.uni-kl.de report_invalid_modification(); 62612027Sjungma@eit.uni-kl.de 62712027Sjungma@eit.uni-kl.de push_back( el ); 62812027Sjungma@eit.uni-kl.de return *this; 62912027Sjungma@eit.uni-kl.de} 63012027Sjungma@eit.uni-kl.de 63112027Sjungma@eit.uni-kl.deinline 63212027Sjungma@eit.uni-kl.desc_event_or_expr 63312027Sjungma@eit.uni-kl.desc_event_or_list::operator | ( const sc_event& e2 ) const 63412027Sjungma@eit.uni-kl.de{ 63512027Sjungma@eit.uni-kl.de sc_event_or_expr expr; 63612027Sjungma@eit.uni-kl.de expr.push_back( *this ); 63712027Sjungma@eit.uni-kl.de expr.push_back( e2 ); 63812027Sjungma@eit.uni-kl.de return expr; 63912027Sjungma@eit.uni-kl.de} 64012027Sjungma@eit.uni-kl.de 64112027Sjungma@eit.uni-kl.deinline 64212027Sjungma@eit.uni-kl.desc_event_or_expr 64312027Sjungma@eit.uni-kl.desc_event_or_list::operator | ( const sc_event_or_list& e2 ) const 64412027Sjungma@eit.uni-kl.de{ 64512027Sjungma@eit.uni-kl.de sc_event_or_expr expr; 64612027Sjungma@eit.uni-kl.de expr.push_back( *this ); 64712027Sjungma@eit.uni-kl.de expr.push_back( e2 ); 64812027Sjungma@eit.uni-kl.de return expr; 64912027Sjungma@eit.uni-kl.de} 65012027Sjungma@eit.uni-kl.de 65112027Sjungma@eit.uni-kl.de 65212027Sjungma@eit.uni-kl.de// sc_event 65312027Sjungma@eit.uni-kl.de 65412027Sjungma@eit.uni-kl.deinline 65512027Sjungma@eit.uni-kl.desc_event_or_expr 65612027Sjungma@eit.uni-kl.desc_event::operator | ( const sc_event& e2 ) const 65712027Sjungma@eit.uni-kl.de{ 65812027Sjungma@eit.uni-kl.de sc_event_or_expr expr; 65912027Sjungma@eit.uni-kl.de expr.push_back( *this ); 66012027Sjungma@eit.uni-kl.de expr.push_back( e2 ); 66112027Sjungma@eit.uni-kl.de return expr; 66212027Sjungma@eit.uni-kl.de} 66312027Sjungma@eit.uni-kl.de 66412027Sjungma@eit.uni-kl.deinline 66512027Sjungma@eit.uni-kl.desc_event_or_expr 66612027Sjungma@eit.uni-kl.desc_event::operator | ( const sc_event_or_list& e2 ) const 66712027Sjungma@eit.uni-kl.de{ 66812027Sjungma@eit.uni-kl.de sc_event_or_expr expr; 66912027Sjungma@eit.uni-kl.de expr.push_back( *this ); 67012027Sjungma@eit.uni-kl.de expr.push_back( e2 ); 67112027Sjungma@eit.uni-kl.de return expr; 67212027Sjungma@eit.uni-kl.de} 67312027Sjungma@eit.uni-kl.de 67412027Sjungma@eit.uni-kl.de// sc_event_expr 67512027Sjungma@eit.uni-kl.de 67612027Sjungma@eit.uni-kl.deinline 67712027Sjungma@eit.uni-kl.desc_event_or_expr 67812027Sjungma@eit.uni-kl.deoperator | ( sc_event_or_expr expr, sc_event const & e ) 67912027Sjungma@eit.uni-kl.de{ 68012027Sjungma@eit.uni-kl.de expr.push_back( e ); 68112027Sjungma@eit.uni-kl.de return expr; 68212027Sjungma@eit.uni-kl.de} 68312027Sjungma@eit.uni-kl.de 68412027Sjungma@eit.uni-kl.deinline 68512027Sjungma@eit.uni-kl.desc_event_or_expr 68612027Sjungma@eit.uni-kl.deoperator | ( sc_event_or_expr expr, sc_event_or_list const & el ) 68712027Sjungma@eit.uni-kl.de{ 68812027Sjungma@eit.uni-kl.de expr.push_back( el ); 68912027Sjungma@eit.uni-kl.de return expr; 69012027Sjungma@eit.uni-kl.de} 69112027Sjungma@eit.uni-kl.de 69212027Sjungma@eit.uni-kl.deinline 69312027Sjungma@eit.uni-kl.devoid 69412027Sjungma@eit.uni-kl.desc_event_or_list::swap( sc_event_or_list & that ) 69512027Sjungma@eit.uni-kl.de{ 69612027Sjungma@eit.uni-kl.de sc_event_list::swap( that ); 69712027Sjungma@eit.uni-kl.de} 69812027Sjungma@eit.uni-kl.de 69912027Sjungma@eit.uni-kl.de 70012027Sjungma@eit.uni-kl.de 70112027Sjungma@eit.uni-kl.de// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 70212027Sjungma@eit.uni-kl.de 70312027Sjungma@eit.uni-kl.deinline 70412027Sjungma@eit.uni-kl.desc_event_and_list::sc_event_and_list() 70512027Sjungma@eit.uni-kl.de : sc_event_list( true ) 70612027Sjungma@eit.uni-kl.de{} 70712027Sjungma@eit.uni-kl.de 70812027Sjungma@eit.uni-kl.deinline 70912027Sjungma@eit.uni-kl.desc_event_and_list::sc_event_and_list( const sc_event& e ) 71012027Sjungma@eit.uni-kl.de: sc_event_list( true ) 71112027Sjungma@eit.uni-kl.de{ 71212027Sjungma@eit.uni-kl.de push_back( e ); 71312027Sjungma@eit.uni-kl.de} 71412027Sjungma@eit.uni-kl.de 71512027Sjungma@eit.uni-kl.deinline 71612027Sjungma@eit.uni-kl.desc_event_and_list::sc_event_and_list( bool auto_delete_ ) 71712027Sjungma@eit.uni-kl.de: sc_event_list( true, auto_delete_ ) 71812027Sjungma@eit.uni-kl.de{} 71912027Sjungma@eit.uni-kl.de 72012027Sjungma@eit.uni-kl.deinline 72112027Sjungma@eit.uni-kl.devoid 72212027Sjungma@eit.uni-kl.desc_event_and_list::swap( sc_event_and_list & that ) 72312027Sjungma@eit.uni-kl.de{ 72412027Sjungma@eit.uni-kl.de sc_event_list::swap( that ); 72512027Sjungma@eit.uni-kl.de} 72612027Sjungma@eit.uni-kl.de 72712027Sjungma@eit.uni-kl.de 72812027Sjungma@eit.uni-kl.deinline 72912027Sjungma@eit.uni-kl.desc_event_and_list& 73012027Sjungma@eit.uni-kl.desc_event_and_list::operator &= ( const sc_event& e ) 73112027Sjungma@eit.uni-kl.de{ 73212027Sjungma@eit.uni-kl.de if( busy() ) 73312027Sjungma@eit.uni-kl.de report_invalid_modification(); 73412027Sjungma@eit.uni-kl.de 73512027Sjungma@eit.uni-kl.de push_back( e ); 73612027Sjungma@eit.uni-kl.de return *this; 73712027Sjungma@eit.uni-kl.de} 73812027Sjungma@eit.uni-kl.de 73912027Sjungma@eit.uni-kl.deinline 74012027Sjungma@eit.uni-kl.desc_event_and_list& 74112027Sjungma@eit.uni-kl.desc_event_and_list::operator &= ( const sc_event_and_list& el ) 74212027Sjungma@eit.uni-kl.de{ 74312027Sjungma@eit.uni-kl.de if( busy() ) 74412027Sjungma@eit.uni-kl.de report_invalid_modification(); 74512027Sjungma@eit.uni-kl.de 74612027Sjungma@eit.uni-kl.de push_back( el ); 74712027Sjungma@eit.uni-kl.de return *this; 74812027Sjungma@eit.uni-kl.de} 74912027Sjungma@eit.uni-kl.de 75012027Sjungma@eit.uni-kl.deinline 75112027Sjungma@eit.uni-kl.desc_event_and_expr 75212027Sjungma@eit.uni-kl.desc_event_and_list::operator & ( const sc_event& e ) 75312027Sjungma@eit.uni-kl.de{ 75412027Sjungma@eit.uni-kl.de sc_event_and_expr expr; 75512027Sjungma@eit.uni-kl.de expr.push_back( *this ); 75612027Sjungma@eit.uni-kl.de expr.push_back( e ); 75712027Sjungma@eit.uni-kl.de return expr; 75812027Sjungma@eit.uni-kl.de} 75912027Sjungma@eit.uni-kl.de 76012027Sjungma@eit.uni-kl.deinline 76112027Sjungma@eit.uni-kl.desc_event_and_expr 76212027Sjungma@eit.uni-kl.desc_event_and_list::operator & ( const sc_event_and_list& el ) 76312027Sjungma@eit.uni-kl.de{ 76412027Sjungma@eit.uni-kl.de sc_event_and_expr expr; 76512027Sjungma@eit.uni-kl.de expr.push_back( *this ); 76612027Sjungma@eit.uni-kl.de expr.push_back( el ); 76712027Sjungma@eit.uni-kl.de return expr; 76812027Sjungma@eit.uni-kl.de} 76912027Sjungma@eit.uni-kl.de 77012027Sjungma@eit.uni-kl.de// sc_event 77112027Sjungma@eit.uni-kl.de 77212027Sjungma@eit.uni-kl.deinline 77312027Sjungma@eit.uni-kl.desc_event_and_expr 77412027Sjungma@eit.uni-kl.desc_event::operator & ( const sc_event& e2 ) const 77512027Sjungma@eit.uni-kl.de{ 77612027Sjungma@eit.uni-kl.de sc_event_and_expr expr; 77712027Sjungma@eit.uni-kl.de expr.push_back( *this ); 77812027Sjungma@eit.uni-kl.de expr.push_back( e2 ); 77912027Sjungma@eit.uni-kl.de return expr; 78012027Sjungma@eit.uni-kl.de} 78112027Sjungma@eit.uni-kl.de 78212027Sjungma@eit.uni-kl.deinline 78312027Sjungma@eit.uni-kl.desc_event_and_expr 78412027Sjungma@eit.uni-kl.desc_event::operator & ( const sc_event_and_list& e2 ) const 78512027Sjungma@eit.uni-kl.de{ 78612027Sjungma@eit.uni-kl.de sc_event_and_expr expr; 78712027Sjungma@eit.uni-kl.de expr.push_back( *this ); 78812027Sjungma@eit.uni-kl.de expr.push_back( e2 ); 78912027Sjungma@eit.uni-kl.de return expr; 79012027Sjungma@eit.uni-kl.de} 79112027Sjungma@eit.uni-kl.de 79212027Sjungma@eit.uni-kl.de// sc_event_expr 79312027Sjungma@eit.uni-kl.de 79412027Sjungma@eit.uni-kl.deinline 79512027Sjungma@eit.uni-kl.desc_event_and_expr 79612027Sjungma@eit.uni-kl.deoperator & ( sc_event_and_expr expr, sc_event const & e ) 79712027Sjungma@eit.uni-kl.de{ 79812027Sjungma@eit.uni-kl.de expr.push_back( e ); 79912027Sjungma@eit.uni-kl.de return expr; 80012027Sjungma@eit.uni-kl.de} 80112027Sjungma@eit.uni-kl.de 80212027Sjungma@eit.uni-kl.deinline 80312027Sjungma@eit.uni-kl.desc_event_and_expr 80412027Sjungma@eit.uni-kl.deoperator & ( sc_event_and_expr expr, sc_event_and_list const & el ) 80512027Sjungma@eit.uni-kl.de{ 80612027Sjungma@eit.uni-kl.de expr.push_back( el ); 80712027Sjungma@eit.uni-kl.de return expr; 80812027Sjungma@eit.uni-kl.de} 80912027Sjungma@eit.uni-kl.de 81012027Sjungma@eit.uni-kl.de} // namespace sc_core 81112027Sjungma@eit.uni-kl.de 81212027Sjungma@eit.uni-kl.de// $Log: sc_event.h,v $ 81312027Sjungma@eit.uni-kl.de// Revision 1.14 2011/08/29 18:04:32 acg 81412027Sjungma@eit.uni-kl.de// Philipp A. Hartmann: miscellaneous clean ups. 81512027Sjungma@eit.uni-kl.de// 81612027Sjungma@eit.uni-kl.de// Revision 1.13 2011/08/26 20:46:09 acg 81712027Sjungma@eit.uni-kl.de// Andy Goodrich: moved the modification log to the end of the file to 81812027Sjungma@eit.uni-kl.de// eliminate source line number skew when check-ins are done. 81912027Sjungma@eit.uni-kl.de// 82012027Sjungma@eit.uni-kl.de// Revision 1.12 2011/08/24 22:05:50 acg 82112027Sjungma@eit.uni-kl.de// Torsten Maehne: initialization changes to remove warnings. 82212027Sjungma@eit.uni-kl.de// 82312027Sjungma@eit.uni-kl.de// Revision 1.11 2011/03/12 21:07:51 acg 82412027Sjungma@eit.uni-kl.de// Andy Goodrich: changes to kernel generated event support. 82512027Sjungma@eit.uni-kl.de// 82612027Sjungma@eit.uni-kl.de// Revision 1.10 2011/03/06 15:55:11 acg 82712027Sjungma@eit.uni-kl.de// Andy Goodrich: Changes for named events. 82812027Sjungma@eit.uni-kl.de// 82912027Sjungma@eit.uni-kl.de// Revision 1.9 2011/03/05 01:39:21 acg 83012027Sjungma@eit.uni-kl.de// Andy Goodrich: changes for named events. 83112027Sjungma@eit.uni-kl.de// 83212027Sjungma@eit.uni-kl.de// Revision 1.8 2011/02/18 20:27:14 acg 83312027Sjungma@eit.uni-kl.de// Andy Goodrich: Updated Copyrights. 83412027Sjungma@eit.uni-kl.de// 83512027Sjungma@eit.uni-kl.de// Revision 1.7 2011/02/13 21:47:37 acg 83612027Sjungma@eit.uni-kl.de// Andy Goodrich: update copyright notice. 83712027Sjungma@eit.uni-kl.de// 83812027Sjungma@eit.uni-kl.de// Revision 1.6 2011/02/01 21:03:23 acg 83912027Sjungma@eit.uni-kl.de// Andy Goodrich: new return codes for trigger_dynamic calls. 84012027Sjungma@eit.uni-kl.de// 84112027Sjungma@eit.uni-kl.de// Revision 1.5 2011/01/18 20:10:44 acg 84212027Sjungma@eit.uni-kl.de// Andy Goodrich: changes for IEEE1666_2011 semantics. 84312027Sjungma@eit.uni-kl.de// 84412027Sjungma@eit.uni-kl.de// Revision 1.4 2010/12/07 20:09:11 acg 84512027Sjungma@eit.uni-kl.de// Andy Goodrich: writer policy fix. 84612027Sjungma@eit.uni-kl.de// 84712027Sjungma@eit.uni-kl.de// Revision 1.3 2009/05/22 16:06:29 acg 84812027Sjungma@eit.uni-kl.de// Andy Goodrich: process control updates. 84912027Sjungma@eit.uni-kl.de// 85012027Sjungma@eit.uni-kl.de// Revision 1.2 2008/05/22 17:06:25 acg 85112027Sjungma@eit.uni-kl.de// Andy Goodrich: updated copyright notice to include 2008. 85212027Sjungma@eit.uni-kl.de// 85312027Sjungma@eit.uni-kl.de// Revision 1.1.1.1 2006/12/15 20:20:05 acg 85412027Sjungma@eit.uni-kl.de// SystemC 2.3 85512027Sjungma@eit.uni-kl.de// 85612027Sjungma@eit.uni-kl.de// Revision 1.8 2006/05/26 20:33:16 acg 85712027Sjungma@eit.uni-kl.de// Andy Goodrich: changes required by additional platform compilers (i.e., 85812027Sjungma@eit.uni-kl.de// Microsoft VC++, Sun Forte, HP aCC). 85912027Sjungma@eit.uni-kl.de// 86012027Sjungma@eit.uni-kl.de// Revision 1.7 2006/05/08 17:57:51 acg 86112027Sjungma@eit.uni-kl.de// Andy Goodrich: added David Long's forward declarations for friend 86212027Sjungma@eit.uni-kl.de// functions, methods, and operators to keep the Microsoft compiler happy. 86312027Sjungma@eit.uni-kl.de// 86412027Sjungma@eit.uni-kl.de// Revision 1.6 2006/04/11 23:13:20 acg 86512027Sjungma@eit.uni-kl.de// Andy Goodrich: Changes for reduced reset support that only includes 86612027Sjungma@eit.uni-kl.de// sc_cthread, but has preliminary hooks for expanding to method and thread 86712027Sjungma@eit.uni-kl.de// processes also. 86812027Sjungma@eit.uni-kl.de// 86912027Sjungma@eit.uni-kl.de// Revision 1.5 2006/01/24 20:56:00 acg 87012027Sjungma@eit.uni-kl.de// Andy Goodrich: fixed up CVS comment. 87112027Sjungma@eit.uni-kl.de// 87212027Sjungma@eit.uni-kl.de// Revision 1.4 2006/01/24 20:48:14 acg 87312027Sjungma@eit.uni-kl.de// Andy Goodrich: added deprecation warnings for notify_delayed(). Added two 87412027Sjungma@eit.uni-kl.de// new implementation-dependent methods, notify_next_delta() & notify_internal() 87512027Sjungma@eit.uni-kl.de// to replace calls to notify_delayed() from within the simulator. These two 87612027Sjungma@eit.uni-kl.de// new methods are simpler than notify_delayed() and should speed up simulations 87712027Sjungma@eit.uni-kl.de// 87812027Sjungma@eit.uni-kl.de// Revision 1.3 2006/01/13 18:44:29 acg 87912027Sjungma@eit.uni-kl.de// Added $Log to record CVS changes into the source. 88012027Sjungma@eit.uni-kl.de// 88112027Sjungma@eit.uni-kl.de 88212027Sjungma@eit.uni-kl.de#endif 88312027Sjungma@eit.uni-kl.de 88412027Sjungma@eit.uni-kl.de// Taf! 885