Objectively
1.0.0
Ultra-lightweight object oriented framework for GNU C.
Sources
Objectively
Enum.h
Go to the documentation of this file.
1
/*
2
* Objectively: Ultra-lightweight object oriented framework for GNU C.
3
* Copyright (C) 2014 Jay Dolan <jay@jaydolan.com>
4
*
5
* This software is provided 'as-is', without any express or implied
6
* warranty. In no event will the authors be held liable for any damages
7
* arising from the use of this software.
8
*
9
* Permission is granted to anyone to use this software for any purpose,
10
* including commercial applications, and to alter it and redistribute it
11
* freely, subject to the following restrictions:
12
*
13
* 1. The origin of this software must not be misrepresented; you must not
14
* claim that you wrote the original software. If you use this software
15
* in a product, an acknowledgment in the product documentation would be
16
* appreciated but is not required.
17
*
18
* 2. Altered source versions must be plainly marked as such, and must not be
19
* misrepresented as being the original software.
20
*
21
* 3. This notice may not be removed or altered from any source distribution.
22
*/
23
24
#pragma once
25
26
#include <
Objectively/Types.h
>
27
#include <
Objectively/String.h
>
28
37
typedef
struct
{
38
const
char
*
name
;
39
const
char
*
alias
;
40
int
value
;
41
}
EnumName
;
42
47
#define MakeEnumName(en) \
48
{ \
49
.name = #en, \
50
.alias = NULL, \
51
.value = en, \
52
}
53
58
#define MakeEnumAlias(en, al) \
59
{ \
60
.name = #en, \
61
.alias = #al, \
62
.value = en, \
63
}
64
68
#define MakeEnumNames(...) \
69
{ \
70
__VA_ARGS__, \
71
{ \
72
.name = NULL, \
73
.value = 0 \
74
} \
75
}
76
83
OBJECTIVELY_EXPORT
String
*
nameof
(
const
EnumName
*names,
int
value);
84
91
OBJECTIVELY_EXPORT
int
valueof
(
const
EnumName
*names,
const
char
*chars);
nameof
OBJECTIVELY_EXPORT String * nameof(const EnumName *names, int value)
Marshal value, returning a String of OR'ed EnumNames for the given enum value.
Definition:
Enum.c:31
String.h
Immutable UTF-8 strings.
Types.h
Objectively base types.
OBJECTIVELY_EXPORT
#define OBJECTIVELY_EXPORT
Definition:
Types.h:36
Boole::valueof
Boole * valueof(_Bool value)
Definition:
Boole.c:93
EnumName
The EnumName type.
Definition:
Enum.h:37
EnumName::name
const char * name
Definition:
Enum.h:38
EnumName::value
int value
Definition:
Enum.h:40
EnumName::alias
const char * alias
Definition:
Enum.h:39
String
Immutable UTF-8 strings.
Definition:
String.h:69
Generated on Mon Aug 29 2022 09:48:29 for Objectively by
1.9.3