1 #ifndef SV_VPI_USER_H
2 #define SV_VPI_USER_H
3 /*
4  * Copyright (c) 2010-2014 Stephen Williams (steve@icarus.com)
5  *
6  *    This source code is free software; you can redistribute it
7  *    and/or modify it in source code form under the terms of the GNU
8  *    General Public License as published by the Free Software
9  *    Foundation; either version 2 of the License, or (at your option)
10  *    any later version.
11  *
12  *    This program is distributed in the hope that it will be useful,
13  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *    GNU General Public License for more details.
16  *
17  *    You should have received a copy of the GNU General Public License
18  *    along with this program; if not, write to the Free Software
19  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20  */
21 
22 # include  "vpi_user.h"
23 
24 #if defined(__MINGW32__) || defined (__CYGWIN__)
25 #  define DLLEXPORT __declspec(dllexport)
26 #else
27 #  define DLLEXPORT
28 #endif
29 
30 #ifdef __cplusplus
31 # define EXTERN_C_START extern "C" {
32 # define EXTERN_C_END }
33 #else
34 # define EXTERN_C_START
35 # define EXTERN_C_END
36 #endif
37 
38 #ifndef __GNUC__
39 # undef  __attribute__
40 # define __attribute__(x)
41 #endif
42 
43 EXTERN_C_START
44 
45 /********* OBJECT TYPES ***********/
46 #define vpiPackage          600
47 #define vpiArrayType        606
48 #define   vpiStaticArray      1
49 #define   vpiDynamicArray     2
50 #define   vpiAssocArray       3
51 #define   vpiQueueArray       4
52 #define vpiLongIntVar       610
53 #define vpiShortIntVar      611
54 #define vpiIntVar           612
55 #define vpiByteVar          614
56 #define vpiLogicVar         vpiReg
57 #define vpiClassVar         615
58 #define vpiStringVar        616
59 #define vpiBitVar           620
60 #define vpiArrayVar         vpiRegArray
61 
62 /********* TYPESPECS *************/
63 #define vpiClassTypespec    630
64 #define vpiEnumTypespec     633
65 #define vpiEnumConst        634
66 
67 #define vpiClassDefn        652
68 
69 /********* One-to-One ***********/
70 #define vpiBaseTypespec     703
71 
72 /********* Many-to-One ***********/
73 #define vpiMember           742
74 
75 /********* task/function properties **********/
76 #define vpiOtherFunc          6
77 
78 /* Icarus-specific function type to use string as the return type */
79 #define vpiStringFunc       10
80 #define vpiSysFuncString    vpiSysFuncString
81 
82 EXTERN_C_END
83 
84 #endif /* SV_VPI_USER_H */
85