/*
 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:   uhdm_types.h
 * Author:
 *
 * Created on December 14, 2019, 10:03 PM
 */

#ifndef UHDM_TYPES_H
#define UHDM_TYPES_H

#include <string>
#include <uhdm/vpi_user.h>
#include <uhdm/uhdm_vpi_user.h>

namespace UHDM {
class BaseClass;
typedef BaseClass any;

// TODO: make enum class at some point.
enum UHDM_OBJECT_TYPE {
  uhdmactual = 2001,
  uhdmactual_group = 2002,
  uhdmactual_typespec = 2003,
  uhdmalias_stmt = 2004,
  uhdmalias_stmts = 2005,
  uhdmallClasses = 2006,
  uhdmallInterfaces = 2007,
  uhdmallModules = 2008,
  uhdmallPackages = 2009,
  uhdmallPrograms = 2010,
  uhdmallUdps = 2011,
  uhdmalways = 2012,
  uhdmany_pattern = 2013,
  uhdmarguments = 2014,
  uhdmarray_expr = 2015,
  uhdmarray_net = 2016,
  uhdmarray_nets = 2017,
  uhdmarray_typespec = 2018,
  uhdmarray_var = 2019,
  uhdmarray_var_mems = 2020,
  uhdmarray_vars = 2021,
  uhdmassert_stmt = 2022,
  uhdmassertion = 2023,
  uhdmassertions = 2024,
  uhdmassign_stmt = 2025,
  uhdmassignment = 2026,
  uhdmassume = 2027,
  uhdmatomic_stmt = 2028,
  uhdmattribute = 2029,
  uhdmattributes = 2030,
  uhdmbase_expr = 2031,
  uhdmbase_typespec = 2032,
  uhdmbegin = 2033,
  uhdmbit_select = 2034,
  uhdmbit_typespec = 2035,
  uhdmbit_var = 2036,
  uhdmbits = 2037,
  uhdmbreak_stmt = 2038,
  uhdmbyte_typespec = 2039,
  uhdmbyte_var = 2040,
  uhdmcase_item = 2041,
  uhdmcase_items = 2042,
  uhdmcase_property = 2043,
  uhdmcase_property_item = 2044,
  uhdmcase_property_items = 2045,
  uhdmcase_stmt = 2046,
  uhdmcast_to_expr = 2047,
  uhdmchandle_typespec = 2048,
  uhdmchandle_var = 2049,
  uhdmchecker_decl = 2050,
  uhdmchecker_inst = 2051,
  uhdmchecker_inst_port = 2052,
  uhdmchecker_port = 2053,
  uhdmclass_defn = 2054,
  uhdmclass_defns = 2055,
  uhdmclass_obj = 2056,
  uhdmclass_typespec = 2057,
  uhdmclass_typespecs = 2058,
  uhdmclass_var = 2059,
  uhdmclocked_property = 2060,
  uhdmclocked_seq = 2061,
  uhdmclocked_seqs = 2062,
  uhdmclocking_block = 2063,
  uhdmclocking_blocks = 2064,
  uhdmclocking_event = 2065,
  uhdmclocking_io_decl = 2066,
  uhdmclocking_io_decls = 2067,
  uhdmconcurrent_assertions = 2068,
  uhdmcondition = 2069,
  uhdmconstant = 2070,
  uhdmconstr_foreach = 2071,
  uhdmconstr_if = 2072,
  uhdmconstr_if_else = 2073,
  uhdmconstraint = 2074,
  uhdmconstraint_expr = 2075,
  uhdmconstraint_exprs = 2076,
  uhdmconstraint_item_group = 2077,
  uhdmconstraint_items = 2078,
  uhdmconstraint_ordering = 2079,
  uhdmconstraints = 2080,
  uhdmcont_assign = 2081,
  uhdmcont_assign_bit = 2082,
  uhdmcont_assign_bits = 2083,
  uhdmcont_assigns = 2084,
  uhdmcontinue_stmt = 2085,
  uhdmcover = 2086,
  uhdmdeassign = 2087,
  uhdmdef_param = 2088,
  uhdmdef_params = 2089,
  uhdmdefault_clocking = 2090,
  uhdmdefault_value = 2091,
  uhdmdelay = 2092,
  uhdmdelay_control = 2093,
  uhdmdelay_term = 2094,
  uhdmderiveds = 2095,
  uhdmdesign = 2096,
  uhdmdisable = 2097,
  uhdmdisable_fork = 2098,
  uhdmdisables = 2099,
  uhdmdist_item = 2100,
  uhdmdist_items = 2101,
  uhdmdistribution = 2102,
  uhdmdo_while = 2103,
  uhdmdrivers = 2104,
  uhdmelab_tasks = 2105,
  uhdmelem_typespec = 2106,
  uhdmelements = 2107,
  uhdmelse_constraint_exprs = 2108,
  uhdmelse_stmt = 2109,
  uhdmenum_const = 2110,
  uhdmenum_consts = 2111,
  uhdmenum_net = 2112,
  uhdmenum_struct_packed_net_group = 2113,
  uhdmenum_struct_union_packed_array_typespec_group = 2114,
  uhdmenum_struct_union_packed_var_group = 2115,
  uhdmenum_typespec = 2116,
  uhdmenum_var = 2117,
  uhdmevent_control = 2118,
  uhdmevent_stmt = 2119,
  uhdmevent_typespec = 2120,
  uhdmexpect_stmt = 2121,
  uhdmexpr = 2122,
  uhdmexpr_constr_group = 2123,
  uhdmexpr_dist = 2124,
  uhdmexpr_index = 2125,
  uhdmexpr_indexes = 2126,
  uhdmexpr_interf_expr_group = 2127,
  uhdmexpr_range_group = 2128,
  uhdmexpr_ref_obj_group = 2129,
  uhdmexpr_sequence_inst_group = 2130,
  uhdmexpr_sequence_inst_named_event_group = 2131,
  uhdmexpr_tchk_term_group = 2132,
  uhdmexpr_tchk_terms = 2133,
  uhdmexpr_typespec_group = 2134,
  uhdmexpressions = 2135,
  uhdmexprs = 2136,
  uhdmextends = 2137,
  uhdmfinal_stmt = 2138,
  uhdmfor_stmt = 2139,
  uhdmforce = 2140,
  uhdmforeach_stmt = 2141,
  uhdmforever_stmt = 2142,
  uhdmfork_stmt = 2143,
  uhdmfunc_call = 2144,
  uhdmfunction = 2145,
  uhdmfunctions = 2146,
  uhdmgate = 2147,
  uhdmgate_array = 2148,
  uhdmgen_case = 2149,
  uhdmgen_for = 2150,
  uhdmgen_if = 2151,
  uhdmgen_if_else = 2152,
  uhdmgen_region = 2153,
  uhdmgen_scope = 2154,
  uhdmgen_scope_array = 2155,
  uhdmgen_scope_arrays = 2156,
  uhdmgen_scopes = 2157,
  uhdmgen_stmt = 2158,
  uhdmgen_stmts = 2159,
  uhdmgen_var = 2160,
  uhdmglobal_clocking = 2161,
  uhdmhier_path = 2162,
  uhdmhigh_conn = 2163,
  uhdmif_else = 2164,
  uhdmif_stmt = 2165,
  uhdmimmediate_assert = 2166,
  uhdmimmediate_assume = 2167,
  uhdmimmediate_cover = 2168,
  uhdmimplication = 2169,
  uhdmimport_typespec = 2170,
  uhdminclude_file_info = 2171,
  uhdminclude_file_infos = 2172,
  uhdmindex = 2173,
  uhdmindex_typespec = 2174,
  uhdmindexed_part_select = 2175,
  uhdmindexes = 2176,
  uhdminitial = 2177,
  uhdminput_skew = 2178,
  uhdminstance = 2179,
  uhdminstance_array = 2180,
  uhdminstance_item = 2181,
  uhdminstance_items = 2182,
  uhdminstances = 2183,
  uhdmint_typespec = 2184,
  uhdmint_var = 2185,
  uhdminteger_net = 2186,
  uhdminteger_typespec = 2187,
  uhdminteger_var = 2188,
  uhdminterf_prog_mod_group = 2189,
  uhdminterface_array = 2190,
  uhdminterface_arrays = 2191,
  uhdminterface_expr = 2192,
  uhdminterface_inst = 2193,
  uhdminterface_tf_decl = 2194,
  uhdminterface_tf_decls = 2195,
  uhdminterface_typespec = 2196,
  uhdminterfaces = 2197,
  uhdmio_decl = 2198,
  uhdmio_decls = 2199,
  uhdmitem = 2200,
  uhdmleft_expr = 2201,
  uhdmleft_range = 2202,
  uhdmlet_decl = 2203,
  uhdmlet_decls = 2204,
  uhdmlet_expr = 2205,
  uhdmlhs = 2206,
  uhdmloads = 2207,
  uhdmlocal_drivers = 2208,
  uhdmlocal_loads = 2209,
  uhdmlogic_net = 2210,
  uhdmlogic_typespec = 2211,
  uhdmlogic_var = 2212,
  uhdmlogic_vars = 2213,
  uhdmlong_int_typespec = 2214,
  uhdmlong_int_var = 2215,
  uhdmlow_conn = 2216,
  uhdmmembers = 2217,
  uhdmmessages = 2218,
  uhdmmethod_func_call = 2219,
  uhdmmethod_func_task_call_group = 2220,
  uhdmmethod_task_call = 2221,
  uhdmmod_path = 2222,
  uhdmmod_paths = 2223,
  uhdmmodport = 2224,
  uhdmmodports = 2225,
  uhdmmodule_array = 2226,
  uhdmmodule_arrays = 2227,
  uhdmmodule_inst = 2228,
  uhdmmodule_typespec = 2229,
  uhdmmodules = 2230,
  uhdmmulticlock_sequence_expr = 2231,
  uhdmnamed_begin = 2232,
  uhdmnamed_event = 2233,
  uhdmnamed_event_array = 2234,
  uhdmnamed_event_arrays = 2235,
  uhdmnamed_event_sequence_expr_group = 2236,
  uhdmnamed_event_sequence_expr_groups = 2237,
  uhdmnamed_events = 2238,
  uhdmnamed_fork = 2239,
  uhdmnet = 2240,
  uhdmnet_bit = 2241,
  uhdmnet_bits = 2242,
  uhdmnet_drivers = 2243,
  uhdmnet_loads = 2244,
  uhdmnets = 2245,
  uhdmnets_vars_ref_obj_group = 2246,
  uhdmnull_stmt = 2247,
  uhdmoperand_group = 2248,
  uhdmoperands = 2249,
  uhdmoperation = 2250,
  uhdmordered_wait = 2251,
  uhdmoutput_skew = 2252,
  uhdmpackage = 2253,
  uhdmpacked_array_net = 2254,
  uhdmpacked_array_typespec = 2255,
  uhdmpacked_array_var = 2256,
  uhdmparam_assign = 2257,
  uhdmparam_assigns = 2258,
  uhdmparameter = 2259,
  uhdmparameters = 2260,
  uhdmpart_select = 2261,
  uhdmpath_elems = 2262,
  uhdmpath_term = 2263,
  uhdmpath_terms = 2264,
  uhdmpattern = 2265,
  uhdmpattern_expr_group = 2266,
  uhdmport = 2267,
  uhdmport_bit = 2268,
  uhdmports = 2269,
  uhdmprefix = 2270,
  uhdmprim_term = 2271,
  uhdmprim_terms = 2272,
  uhdmprimitive = 2273,
  uhdmprimitive_array = 2274,
  uhdmprimitive_arrays = 2275,
  uhdmprimitives = 2276,
  uhdmprocess = 2277,
  uhdmprocess_stmt = 2278,
  uhdmprogram = 2279,
  uhdmprogram_array = 2280,
  uhdmprogram_arrays = 2281,
  uhdmprograms = 2282,
  uhdmprop_formal_decl = 2283,
  uhdmprop_formal_decls = 2284,
  uhdmproperty = 2285,
  uhdmproperty_decl = 2286,
  uhdmproperty_decls = 2287,
  uhdmproperty_expr = 2288,
  uhdmproperty_expr_group = 2289,
  uhdmproperty_expr_named_event_group = 2290,
  uhdmproperty_inst = 2291,
  uhdmproperty_inst_spec_group = 2292,
  uhdmproperty_spec = 2293,
  uhdmproperty_typespec = 2294,
  uhdmrange = 2295,
  uhdmranges = 2296,
  uhdmreal_typespec = 2297,
  uhdmreal_var = 2298,
  uhdmref_module = 2299,
  uhdmref_modules = 2300,
  uhdmref_obj = 2301,
  uhdmref_obj_interf_net_var_group = 2302,
  uhdmref_typespec = 2303,
  uhdmref_var = 2304,
  uhdmreg = 2305,
  uhdmreg_array = 2306,
  uhdmregs = 2307,
  uhdmrelease = 2308,
  uhdmrepeat = 2309,
  uhdmrepeat_control = 2310,
  uhdmresolution_func = 2311,
  uhdmrestrict = 2312,
  uhdmreturn = 2313,
  uhdmreturn_stmt = 2314,
  uhdmrhs = 2315,
  uhdmright_expr = 2316,
  uhdmright_range = 2317,
  uhdmroot_value = 2318,
  uhdmscope = 2319,
  uhdmscopes = 2320,
  uhdmseq_formal_decl = 2321,
  uhdmseq_formal_decls = 2322,
  uhdmsequence = 2323,
  uhdmsequence_decl = 2324,
  uhdmsequence_decls = 2325,
  uhdmsequence_expr_group = 2326,
  uhdmsequence_expr_multiclock_group = 2327,
  uhdmsequence_inst = 2328,
  uhdmsequence_typespec = 2329,
  uhdmshort_int_typespec = 2330,
  uhdmshort_int_var = 2331,
  uhdmshort_real_typespec = 2332,
  uhdmshort_real_var = 2333,
  uhdmsim_net = 2334,
  uhdmsimple_expr = 2335,
  uhdmsimple_expr_use_group = 2336,
  uhdmsoft_disable = 2337,
  uhdmsolve_afters = 2338,
  uhdmsolve_befores = 2339,
  uhdmspec_param = 2340,
  uhdmspec_params = 2341,
  uhdmstmt = 2342,
  uhdmstmts = 2343,
  uhdmstring_typespec = 2344,
  uhdmstring_var = 2345,
  uhdmstruct_net = 2346,
  uhdmstruct_pattern = 2347,
  uhdmstruct_typespec = 2348,
  uhdmstruct_var = 2349,
  uhdmswitch_array = 2350,
  uhdmswitch_tran = 2351,
  uhdmsys_func_call = 2352,
  uhdmsys_func_task_call_group = 2353,
  uhdmsys_task_call = 2354,
  uhdmtable_entry = 2355,
  uhdmtable_entrys = 2356,
  uhdmtagged_pattern = 2357,
  uhdmtask = 2358,
  uhdmtask_call = 2359,
  uhdmtask_func = 2360,
  uhdmtask_func_named_begin_fork_group = 2361,
  uhdmtask_funcs = 2362,
  uhdmtasks = 2363,
  uhdmtchk = 2364,
  uhdmtchk_data_term = 2365,
  uhdmtchk_ref_term = 2366,
  uhdmtchk_term = 2367,
  uhdmtchk_terms = 2368,
  uhdmtchks = 2369,
  uhdmtf_call = 2370,
  uhdmtf_call_args = 2371,
  uhdmthread_obj = 2372,
  uhdmthreads = 2373,
  uhdmtime_net = 2374,
  uhdmtime_typespec = 2375,
  uhdmtime_var = 2376,
  uhdmtopModules = 2377,
  uhdmtopPackages = 2378,
  uhdmtype_parameter = 2379,
  uhdmtypedef_alias = 2380,
  uhdmtypespec = 2381,
  uhdmtypespec_member = 2382,
  uhdmtypespecs = 2383,
  uhdmudp = 2384,
  uhdmudp_array = 2385,
  uhdmudp_defn = 2386,
  uhdmunion_typespec = 2387,
  uhdmunion_var = 2388,
  uhdmunsupported_expr = 2389,
  uhdmunsupported_stmt = 2390,
  uhdmunsupported_typespec = 2391,
  uhdmuser_systf = 2392,
  uhdmvalue_range = 2393,
  uhdmvar_bit = 2394,
  uhdmvar_bits = 2395,
  uhdmvar_select = 2396,
  uhdmvar_selects = 2397,
  uhdmvariable = 2398,
  uhdmvariable_drivers = 2399,
  uhdmvariable_drivers_group = 2400,
  uhdmvariable_loads = 2401,
  uhdmvariable_loads_group = 2402,
  uhdmvariables = 2403,
  uhdmvariables_operation_group = 2404,
  uhdmvirtual_interface_var = 2405,
  uhdmvirtual_interface_vars = 2406,
  uhdmvoid_typespec = 2407,
  uhdmvpiArguments = 2408,
  uhdmvpiClockingEvent = 2409,
  uhdmvpiCondition = 2410,
  uhdmvpiConditions = 2411,
  uhdmvpiDisableCondition = 2412,
  uhdmvpiElseStmt = 2413,
  uhdmvpiExpr = 2414,
  uhdmvpiExprs = 2415,
  uhdmvpiForIncStmt = 2416,
  uhdmvpiForIncStmts = 2417,
  uhdmvpiForInitStmt = 2418,
  uhdmvpiForInitStmts = 2419,
  uhdmvpiIndex = 2420,
  uhdmvpiInstance = 2421,
  uhdmvpiLoopVars = 2422,
  uhdmvpiProperty = 2423,
  uhdmvpiPropertyExpr = 2424,
  uhdmvpiSequenceExpr = 2425,
  uhdmvpiStmt = 2426,
  uhdmvpiUses = 2427,
  uhdmwait_fork = 2428,
  uhdmwait_stmt = 2429,
  uhdmwaits = 2430,
  uhdmweight = 2431,
  uhdmwhile_stmt = 2432,
  uhdmwidth_expr = 2433,
  uhdmwith = 2434,
};

std::string UhdmName(UHDM_OBJECT_TYPE type);

std::string VpiTypeName(vpiHandle h);

};

#endif
