/*
 Do not modify, auto-generated by script

 Copyright 2019 Alain Dargelas

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 */

/*
 * File:   containers.h
 * Author:
 *
 * Created on December 14, 2019, 10:03 PM
 */

#ifndef UHDM_CONTAINERS_H
#define UHDM_CONTAINERS_H

#include <vector>
#include <uhdm/uhdm_forward_decl.h>

namespace UHDM {
  typedef std::vector<alias_stmt*> VectorOfalias_stmt;
  typedef std::vector<alias_stmt*>::iterator VectorOfalias_stmtItr;

  typedef std::vector<any*> VectorOfany;
  typedef std::vector<any*>::iterator VectorOfanyItr;

  typedef std::vector<array_net*> VectorOfarray_net;
  typedef std::vector<array_net*>::iterator VectorOfarray_netItr;

  typedef std::vector<array_var*> VectorOfarray_var;
  typedef std::vector<array_var*>::iterator VectorOfarray_varItr;

  typedef std::vector<attribute*> VectorOfattribute;
  typedef std::vector<attribute*>::iterator VectorOfattributeItr;

  typedef std::vector<case_item*> VectorOfcase_item;
  typedef std::vector<case_item*>::iterator VectorOfcase_itemItr;

  typedef std::vector<case_property_item*> VectorOfcase_property_item;
  typedef std::vector<case_property_item*>::iterator VectorOfcase_property_itemItr;

  typedef std::vector<checker_inst_port*> VectorOfchecker_inst_port;
  typedef std::vector<checker_inst_port*>::iterator VectorOfchecker_inst_portItr;

  typedef std::vector<checker_port*> VectorOfchecker_port;
  typedef std::vector<checker_port*>::iterator VectorOfchecker_portItr;

  typedef std::vector<class_defn*> VectorOfclass_defn;
  typedef std::vector<class_defn*>::iterator VectorOfclass_defnItr;

  typedef std::vector<class_typespec*> VectorOfclass_typespec;
  typedef std::vector<class_typespec*>::iterator VectorOfclass_typespecItr;

  typedef std::vector<clocked_seq*> VectorOfclocked_seq;
  typedef std::vector<clocked_seq*>::iterator VectorOfclocked_seqItr;

  typedef std::vector<clocking_block*> VectorOfclocking_block;
  typedef std::vector<clocking_block*>::iterator VectorOfclocking_blockItr;

  typedef std::vector<clocking_io_decl*> VectorOfclocking_io_decl;
  typedef std::vector<clocking_io_decl*>::iterator VectorOfclocking_io_declItr;

  typedef std::vector<concurrent_assertions*> VectorOfconcurrent_assertions;
  typedef std::vector<concurrent_assertions*>::iterator VectorOfconcurrent_assertionsItr;

  typedef std::vector<constraint*> VectorOfconstraint;
  typedef std::vector<constraint*>::iterator VectorOfconstraintItr;

  typedef std::vector<constraint_expr*> VectorOfconstraint_expr;
  typedef std::vector<constraint_expr*>::iterator VectorOfconstraint_exprItr;

  typedef std::vector<cont_assign*> VectorOfcont_assign;
  typedef std::vector<cont_assign*>::iterator VectorOfcont_assignItr;

  typedef std::vector<cont_assign_bit*> VectorOfcont_assign_bit;
  typedef std::vector<cont_assign_bit*>::iterator VectorOfcont_assign_bitItr;

  typedef std::vector<def_param*> VectorOfdef_param;
  typedef std::vector<def_param*>::iterator VectorOfdef_paramItr;

  typedef std::vector<dist_item*> VectorOfdist_item;
  typedef std::vector<dist_item*>::iterator VectorOfdist_itemItr;

  typedef std::vector<enum_const*> VectorOfenum_const;
  typedef std::vector<enum_const*>::iterator VectorOfenum_constItr;

  typedef std::vector<expr*> VectorOfexpr;
  typedef std::vector<expr*>::iterator VectorOfexprItr;

  typedef std::vector<function*> VectorOffunction;
  typedef std::vector<function*>::iterator VectorOffunctionItr;

  typedef std::vector<gen_scope*> VectorOfgen_scope;
  typedef std::vector<gen_scope*>::iterator VectorOfgen_scopeItr;

  typedef std::vector<gen_scope_array*> VectorOfgen_scope_array;
  typedef std::vector<gen_scope_array*>::iterator VectorOfgen_scope_arrayItr;

  typedef std::vector<gen_stmt*> VectorOfgen_stmt;
  typedef std::vector<gen_stmt*>::iterator VectorOfgen_stmtItr;

  typedef std::vector<include_file_info*> VectorOfinclude_file_info;
  typedef std::vector<include_file_info*>::iterator VectorOfinclude_file_infoItr;

  typedef std::vector<instance*> VectorOfinstance;
  typedef std::vector<instance*>::iterator VectorOfinstanceItr;

  typedef std::vector<interface_array*> VectorOfinterface_array;
  typedef std::vector<interface_array*>::iterator VectorOfinterface_arrayItr;

  typedef std::vector<interface_inst*> VectorOfinterface_inst;
  typedef std::vector<interface_inst*>::iterator VectorOfinterface_instItr;

  typedef std::vector<interface_tf_decl*> VectorOfinterface_tf_decl;
  typedef std::vector<interface_tf_decl*>::iterator VectorOfinterface_tf_declItr;

  typedef std::vector<io_decl*> VectorOfio_decl;
  typedef std::vector<io_decl*>::iterator VectorOfio_declItr;

  typedef std::vector<let_decl*> VectorOflet_decl;
  typedef std::vector<let_decl*>::iterator VectorOflet_declItr;

  typedef std::vector<logic_var*> VectorOflogic_var;
  typedef std::vector<logic_var*>::iterator VectorOflogic_varItr;

  typedef std::vector<mod_path*> VectorOfmod_path;
  typedef std::vector<mod_path*>::iterator VectorOfmod_pathItr;

  typedef std::vector<modport*> VectorOfmodport;
  typedef std::vector<modport*>::iterator VectorOfmodportItr;

  typedef std::vector<module_array*> VectorOfmodule_array;
  typedef std::vector<module_array*>::iterator VectorOfmodule_arrayItr;

  typedef std::vector<module_inst*> VectorOfmodule_inst;
  typedef std::vector<module_inst*>::iterator VectorOfmodule_instItr;

  typedef std::vector<named_event*> VectorOfnamed_event;
  typedef std::vector<named_event*>::iterator VectorOfnamed_eventItr;

  typedef std::vector<named_event_array*> VectorOfnamed_event_array;
  typedef std::vector<named_event_array*>::iterator VectorOfnamed_event_arrayItr;

  typedef std::vector<net*> VectorOfnet;
  typedef std::vector<net*>::iterator VectorOfnetItr;

  typedef std::vector<net_bit*> VectorOfnet_bit;
  typedef std::vector<net_bit*>::iterator VectorOfnet_bitItr;

  typedef std::vector<net_drivers*> VectorOfnet_drivers;
  typedef std::vector<net_drivers*>::iterator VectorOfnet_driversItr;

  typedef std::vector<net_loads*> VectorOfnet_loads;
  typedef std::vector<net_loads*>::iterator VectorOfnet_loadsItr;

  typedef std::vector<nets*> VectorOfnets;
  typedef std::vector<nets*>::iterator VectorOfnetsItr;

  typedef std::vector<package*> VectorOfpackage;
  typedef std::vector<package*>::iterator VectorOfpackageItr;

  typedef std::vector<param_assign*> VectorOfparam_assign;
  typedef std::vector<param_assign*>::iterator VectorOfparam_assignItr;

  typedef std::vector<path_term*> VectorOfpath_term;
  typedef std::vector<path_term*>::iterator VectorOfpath_termItr;

  typedef std::vector<port*> VectorOfport;
  typedef std::vector<port*>::iterator VectorOfportItr;

  typedef std::vector<port_bit*> VectorOfport_bit;
  typedef std::vector<port_bit*>::iterator VectorOfport_bitItr;

  typedef std::vector<ports*> VectorOfports;
  typedef std::vector<ports*>::iterator VectorOfportsItr;

  typedef std::vector<prim_term*> VectorOfprim_term;
  typedef std::vector<prim_term*>::iterator VectorOfprim_termItr;

  typedef std::vector<primitive*> VectorOfprimitive;
  typedef std::vector<primitive*>::iterator VectorOfprimitiveItr;

  typedef std::vector<primitive_array*> VectorOfprimitive_array;
  typedef std::vector<primitive_array*>::iterator VectorOfprimitive_arrayItr;

  typedef std::vector<process_stmt*> VectorOfprocess_stmt;
  typedef std::vector<process_stmt*>::iterator VectorOfprocess_stmtItr;

  typedef std::vector<program*> VectorOfprogram;
  typedef std::vector<program*>::iterator VectorOfprogramItr;

  typedef std::vector<prop_formal_decl*> VectorOfprop_formal_decl;
  typedef std::vector<prop_formal_decl*>::iterator VectorOfprop_formal_declItr;

  typedef std::vector<property_decl*> VectorOfproperty_decl;
  typedef std::vector<property_decl*>::iterator VectorOfproperty_declItr;

  typedef std::vector<range*> VectorOfrange;
  typedef std::vector<range*>::iterator VectorOfrangeItr;

  typedef std::vector<ref_module*> VectorOfref_module;
  typedef std::vector<ref_module*>::iterator VectorOfref_moduleItr;

  typedef std::vector<reg*> VectorOfreg;
  typedef std::vector<reg*>::iterator VectorOfregItr;

  typedef std::vector<scope*> VectorOfscope;
  typedef std::vector<scope*>::iterator VectorOfscopeItr;

  typedef std::vector<seq_formal_decl*> VectorOfseq_formal_decl;
  typedef std::vector<seq_formal_decl*>::iterator VectorOfseq_formal_declItr;

  typedef std::vector<sequence_decl*> VectorOfsequence_decl;
  typedef std::vector<sequence_decl*>::iterator VectorOfsequence_declItr;

  typedef std::vector<spec_param*> VectorOfspec_param;
  typedef std::vector<spec_param*>::iterator VectorOfspec_paramItr;

  typedef std::vector<table_entry*> VectorOftable_entry;
  typedef std::vector<table_entry*>::iterator VectorOftable_entryItr;

  typedef std::vector<task*> VectorOftask;
  typedef std::vector<task*>::iterator VectorOftaskItr;

  typedef std::vector<task_func*> VectorOftask_func;
  typedef std::vector<task_func*>::iterator VectorOftask_funcItr;

  typedef std::vector<tchk*> VectorOftchk;
  typedef std::vector<tchk*>::iterator VectorOftchkItr;

  typedef std::vector<tchk_term*> VectorOftchk_term;
  typedef std::vector<tchk_term*>::iterator VectorOftchk_termItr;

  typedef std::vector<tf_call*> VectorOftf_call;
  typedef std::vector<tf_call*>::iterator VectorOftf_callItr;

  typedef std::vector<thread_obj*> VectorOfthread_obj;
  typedef std::vector<thread_obj*>::iterator VectorOfthread_objItr;

  typedef std::vector<typespec*> VectorOftypespec;
  typedef std::vector<typespec*>::iterator VectorOftypespecItr;

  typedef std::vector<typespec_member*> VectorOftypespec_member;
  typedef std::vector<typespec_member*>::iterator VectorOftypespec_memberItr;

  typedef std::vector<udp_defn*> VectorOfudp_defn;
  typedef std::vector<udp_defn*>::iterator VectorOfudp_defnItr;

  typedef std::vector<var_bit*> VectorOfvar_bit;
  typedef std::vector<var_bit*>::iterator VectorOfvar_bitItr;

  typedef std::vector<var_select*> VectorOfvar_select;
  typedef std::vector<var_select*>::iterator VectorOfvar_selectItr;

  typedef std::vector<variables*> VectorOfvariables;
  typedef std::vector<variables*>::iterator VectorOfvariablesItr;

  typedef std::vector<virtual_interface_var*> VectorOfvirtual_interface_var;
  typedef std::vector<virtual_interface_var*>::iterator VectorOfvirtual_interface_varItr;

};

#endif
