/*
 * Copyright 2018 Google, Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met: redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer;
 * redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution;
 * neither the name of the copyright holders nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * Authors: Gabe Black
 */

#ifndef __SYSTEMC_EXT_CORE__USING_HH__
#define __SYSTEMC_EXT_CORE__USING_HH__

#include "_core.hh"

using sc_core::sc_attr_base;
using sc_core::sc_attribute;
using sc_core::sc_attr_cltn;

using sc_core::sc_event_finder;
using sc_core::sc_event_finder_t;
using sc_core::sc_event_and_list;
using sc_core::sc_event_or_list;
using sc_core::sc_event_and_expr;
using sc_core::sc_event_or_expr;
using sc_core::sc_event;
using sc_core::sc_get_top_level_events;
using sc_core::sc_find_event;

using sc_core::sc_export_base;
using sc_core::sc_export;

using sc_core::sc_interface;

using sc_core::sc_thread_handle;
using sc_core::sc_join;

using sc_core::sc_argc;
using sc_core::sc_argv;
using sc_core::sc_starvation_policy;
using sc_core::SC_RUN_TO_TIME;
using sc_core::SC_EXIT_ON_STARVATION;
using sc_core::sc_start;
using sc_core::sc_pause;
using sc_core::sc_set_stop_mode;
using sc_core::sc_get_stop_mode;
using sc_core::sc_stop_mode;
using sc_core::SC_STOP_FINISH_DELTA;
using sc_core::SC_STOP_IMMEDIATE;
using sc_core::sc_stop;
using sc_core::sc_time_stamp;
using sc_core::sc_delta_count;
using sc_core::sc_is_running;
using sc_core::sc_pending_activity_at_current_time;
using sc_core::sc_pending_activity_at_future_time;
using sc_core::sc_pending_activity;
using sc_core::sc_time_to_pending_activity;
using sc_core::sc_get_status;
using sc_core::SC_ELABORATION;
using sc_core::SC_BEFORE_END_OF_ELABORATION;
using sc_core::SC_END_OF_ELABORATION;
using sc_core::SC_START_OF_SIMULATION;
using sc_core::SC_RUNNING;
using sc_core::SC_PAUSED;
using sc_core::SC_STOPPED;
using sc_core::SC_END_OF_SIMULATION;
using sc_core::SC_END_OF_INITIALIZATION;
using sc_core::SC_END_OF_UPDATE;
using sc_core::SC_BEFORE_TIMESTEP;
using sc_core::SC_STATUS_ANY;
using sc_core::sc_status;

using sc_core::sc_bind_proxy;
using sc_core::SC_BIND_PROXY_NIL;
using sc_core::sc_module;
using sc_core::next_trigger;
using sc_core::wait;
using sc_core::halt;
using sc_core::sc_gen_unique_name;
using sc_core::sc_hierarchical_name_exists;
using sc_core::sc_behavior;
using sc_core::sc_channel;
using sc_core::sc_start_of_simulation_invoked;
using sc_core::sc_end_of_simulation_invoked;

using sc_core::sc_module_name;

using sc_core::sc_object;
using sc_core::sc_get_top_level_objects;
using sc_core::sc_find_object;

using sc_core::sc_port_policy;
using sc_core::SC_ONE_OR_MORE_BOUND;
using sc_core::SC_ZERO_OR_MORE_BOUND;
using sc_core::SC_ALL_BOUND;
using sc_core::sc_port_base;
using sc_core::sc_port_b;
using sc_core::sc_port;

using sc_core::sc_prim_channel;

using sc_core::sc_curr_proc_kind;
using sc_core::SC_NO_PROC_;
using sc_core::SC_METHOD_PROC_;
using sc_core::SC_THREAD_PROC_;
using sc_core::SC_CTHREAD_PROC_;
using sc_core::sc_descendent_inclusion_info;
using sc_core::SC_NO_DESCENDANTS;
using sc_core::SC_INCLUDE_DESCENDANTS;
using sc_core::sc_unwind_exception;
using sc_core::sc_process_b;
using sc_core::sc_get_curr_process_handle;
using sc_core::sc_get_current_process_b;
using sc_core::sc_curr_proc_info;
using sc_core::sc_curr_proc_handle;
using sc_core::sc_process_handle;
using sc_core::sc_get_current_process_handle;
using sc_core::sc_is_unwinding;

using sc_core::sc_sensitive;

using sc_core::sc_simcontext;
using sc_core::sc_get_curr_simcontext;

using sc_core::sc_spawn_options;
using sc_core::sc_spawn;

using sc_core::sc_time_unit;
using sc_core::SC_FS;
using sc_core::SC_PS;
using sc_core::SC_NS;
using sc_core::SC_US;
using sc_core::SC_MS;
using sc_core::SC_SEC;
using sc_core::sc_time;
using sc_core::sc_time_tuple;
using sc_core::SC_ZERO_TIME;
using sc_core::sc_set_time_resolution;
using sc_core::sc_get_time_resolution;
using sc_core::sc_max_time;
using sc_core::sc_get_default_time_unit;
using sc_core::sc_set_default_time_unit;

#endif  //__SYSTEMC_EXT_CORE__USING_HH__
