Graphviz
2.41.20171026.1811
Main Page
Data Structures
Files
File List
Globals
lib
gvc
gvcext.h
Go to the documentation of this file.
1
2
/* vim:set shiftwidth=4 ts=8: */
3
4
/*************************************************************************
5
* Copyright (c) 2011 AT&T Intellectual Property
6
* All rights reserved. This program and the accompanying materials
7
* are made available under the terms of the Eclipse Public License v1.0
8
* which accompanies this distribution, and is available at
9
* http://www.eclipse.org/legal/epl-v10.html
10
*
11
* Contributors: See CVS logs. Details at http://www.graphviz.org/
12
*************************************************************************/
13
14
/* Common header used by both clients and plugins */
15
16
#ifndef GVCEXT_H
17
#define GVCEXT_H
18
19
#ifdef __cplusplus
20
extern
"C"
{
21
#endif
22
23
/*
24
* Define an apis array of name strings using an enumerated api_t as index.
25
* The enumerated type is defined here. The apis array is
26
* inititialized in gvplugin.c by redefining ELEM and reinvoking APIS.
27
*/
28
#define APIS ELEM(render) ELEM(layout) ELEM(textlayout) ELEM(device) ELEM(loadimage)
29
30
/*
31
* Define api_t using names based on the plugin names with API_ prefixed.
32
*/
33
#define ELEM(x) API_##x,
34
typedef
enum
{
APIS
_DUMMY_ELEM_
=0 }
api_t
;
/* API_render, API_layout, ... */
35
/* Stupid but true: The sole purpose of "_DUMMY_ELEM_=0"
36
* is to avoid a "," after the last element of the enum
37
* because some compilers when using "-pedantic"
38
* generate an error for about the dangling ","
39
* but only if this header is used from a .cpp file!
40
* Setting it to 0 makes sure that the enumeration
41
* does not define an extra value. (It does however
42
* define _DUMMY_ELEM_ as an enumeration symbol,
43
* but its value duplicates that of the first
44
* symbol in the enumeration - in this case "render".)
45
*/
46
47
/* One could wonder why trailing "," in:
48
* int nums[]={1,2,3,};
49
* is OK, but in:
50
* typedef enum {a,b,c,} abc_t;
51
* is not!!!
52
*/
53
#undef ELEM
54
55
typedef
struct
GVJ_s
GVJ_t
;
56
typedef
struct
GVG_s
GVG_t
;
57
typedef
struct
GVC_s
GVC_t
;
58
59
typedef
struct
{
60
const
char
*
name
;
61
void
*
address
;
62
}
lt_symlist_t
;
63
64
typedef
struct
gvplugin_available_s
gvplugin_available_t
;
65
66
/*visual studio*/
67
#ifdef _WIN32
68
#ifndef GVC_EXPORTS
69
__declspec(dllimport)
lt_symlist_t
lt_preloaded_symbols
[];
70
#else
71
//__declspec(dllexport) lt_symlist_t lt_preloaded_symbols[];
72
#if !defined(LTDL_H)
73
lt_symlist_t
lt_preloaded_symbols[];
74
#endif
75
#endif
76
#endif
77
/*end visual studio*/
78
79
80
#ifndef _WIN32
81
#if defined(GVDLL)
82
__declspec(dllexport)
lt_symlist_t
lt_preloaded_symbols[];
83
#else
84
#if !defined(LTDL_H)
85
extern
lt_symlist_t
lt_preloaded_symbols[];
86
#endif
87
#endif
88
#endif
89
90
91
#ifdef __cplusplus
92
}
93
#endif
94
95
96
97
#endif
APIS
#define APIS
Definition:
gvcext.h:28
lt_symlist_t::name
const char * name
Definition:
gvcext.h:60
api_t
api_t
Definition:
gvcext.h:34
GVJ_s
Definition:
gvcjob.h:271
gvplugin_available_s
Definition:
gvcint.h:49
lt_preloaded_symbols
lt_symlist_t lt_preloaded_symbols[]
Definition:
dot_builtins.c:36
GVC_s
Definition:
gvcint.h:70
GVG_s
Definition:
gvcint.h:59
_DUMMY_ELEM_
Definition:
gvcext.h:34
lt_symlist_t
Definition:
gvcext.h:59
lt_symlist_t::address
void * address
Definition:
gvcext.h:61
Generated by
1.8.5