VirtualC64 v5.0 beta
Commodore 64 Emulator
Loading...
Searching...
No Matches
Types.h
1// -----------------------------------------------------------------------------
2// This file is part of VirtualC64
3//
4// Copyright (C) Dirk W. Hoffmann. www.dirkwhoffmann.de
5// This FILE is dual-licensed. You are free to choose between:
6//
7// - The GNU General Public License v3 (or any later version)
8// - The Mozilla Public License v2
9//
10// SPDX-License-Identifier: GPL-3.0-or-later OR MPL-2.0
11// -----------------------------------------------------------------------------
12
13#pragma once
14
15#include <sys/types.h>
16#include <stdint.h>
17
18//
19// Integers
20//
21
22// Signed integers
23typedef signed char i8;
24typedef signed short i16;
25typedef signed int i32;
26typedef signed long long i64;
27typedef signed long isize;
28
29// Unsigned integers
30typedef unsigned char u8;
31typedef unsigned short u16;
32typedef unsigned int u32;
33typedef unsigned long long u64;
34typedef unsigned long usize;
35
36
37//
38// Strings
39//
40
41#include <string>
42#include <cstring>
43using std::string;
44
45
46//
47// Optionals
48//
49
50#include <optional>
51using std::optional;
52
53
54//
55// Enums
56//
57
58#if defined(__SWIFT__)
59
60#define new_enum_generic(_name, _type) \
61enum __attribute__((enum_extensibility(open))) _name : _type
62#define enum_long(_name) new_enum_generic(_name, long)
63#define enum_i8(_name) new_enum_generic(_name, i8)
64
65#else
66
67#define new_enum_generic(_name, _type) \
68enum _name : _type
69#define enum_long(_name) new_enum_generic(_name, long)
70#define enum_i8(_name) new_enum_generic(_name, i8)
71
72#endif