Files
2022-01-25 23:59:11 +08:00

69 lines
2.2 KiB
C

/*************************************************************************
* Copyright (c) 2011 AT&T Intellectual Property
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors: Details at https://graphviz.org
*************************************************************************/
/* Common header used by both clients and plugins */
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
/*
* Define an apis array of name strings using an enumerated api_t as index.
* The enumerated type is defined here. The apis array is
* inititialized in gvplugin.c by redefining ELEM and reinvoking APIS.
*/
#define APIS ELEM(render) ELEM(layout) ELEM(textlayout) ELEM(device) ELEM(loadimage)
/*
* Define api_t using names based on the plugin names with API_ prefixed.
*/
#define ELEM(x) API_##x,
typedef enum { APIS _DUMMY_ELEM_=0 } api_t; /* API_render, API_layout, ... */
/* Stupid but true: The sole purpose of "_DUMMY_ELEM_=0"
* is to avoid a "," after the last element of the enum
* because some compilers when using "-pedantic"
* generate an error for about the dangling ","
* but only if this header is used from a .cpp file!
* Setting it to 0 makes sure that the enumeration
* does not define an extra value. (It does however
* define _DUMMY_ELEM_ as an enumeration symbol,
* but its value duplicates that of the first
* symbol in the enumeration - in this case "render".)
*/
/* One could wonder why trailing "," in:
* int nums[]={1,2,3,};
* is OK, but in:
* typedef enum {a,b,c,} abc_t;
* is not!!!
*/
#undef ELEM
typedef struct GVJ_s GVJ_t;
typedef struct GVG_s GVG_t;
typedef struct GVC_s GVC_t;
typedef struct {
const char *name;
void* address;
} lt_symlist_t;
typedef struct gvplugin_available_s gvplugin_available_t;
#if !defined(LTDL_H)
extern lt_symlist_t lt_preloaded_symbols[];
#endif
#ifdef __cplusplus
}
#endif