aboutsummaryrefslogtreecommitdiffstats
path: root/libgamma_value_of_connector_type.c
blob: f42e1e598690c3fe9b1a1bd379221e730ef54092 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/* See LICENSE file for copyright and license details. */
#include "common.h"


/**
 * Get the value of a connector type
 * 
 * @param   connector  The name of the connector type, for example
 *                     "VGA" or "LIBGAMMA_CONNECTOR_TYPE_VGA"
 * @param   out        Output parameter for the connector type, only set on success;
 *                     for example `LIBGAMMA_CONNECTOR_TYPE_VGA` for "VGA" and
 *                     "LIBGAMMA_CONNECTOR_TYPE_VGA";
 * @return             Zero on success, `LIBGAMMA_CONNECTOR_TYPE_NOT_RECOGNISED` of not defined
 */
int
libgamma_value_of_connector_type(const char *connector, enum libgamma_connector_type *out)
{
#define X(CONST, NAME, ...)\
	if (!strcmp(connector, NAME))\
		goto case_##CONST;
	LIST_CONNECTOR_TYPES(X)
#undef X

#define X(CONST, ...)\
	if (!strcmp(connector, #CONST)) {\
	case_##CONST:\
		*out = CONST;\
		return 0;\
	}
	LIST_CONNECTOR_TYPES(X)
#undef X

	return LIBGAMMA_CONNECTOR_TYPE_NOT_RECOGNISED;
}