ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
groups.h
Go to the documentation of this file.
1
38#pragma once
39
40#include <stdint.h>
41
50typedef enum {
52 OPT_GROUP_BINARY = (1 << 0),
53 OPT_GROUP_TERMINAL = (1 << 1),
54 OPT_GROUP_NETWORK = (1 << 2),
55 OPT_GROUP_WEBCAM = (1 << 3),
56 OPT_GROUP_DISPLAY = (1 << 4),
57 OPT_GROUP_AUDIO = (1 << 5),
58 OPT_GROUP_SNAPSHOT = (1 << 6),
59 OPT_GROUP_CRYPTO = (1 << 7),
61 OPT_GROUP_ACDS = (1 << 9),
62 OPT_GROUP_MEDIA = (1 << 10),
63 OPT_GROUP_SERVER = (1 << 11),
64 OPT_GROUP_CLIENT = (1 << 12),
65 OPT_GROUP_WEBRTC = (1 << 13),
67
78#define MODE_SERVER_GROUPS \
79 (OPT_GROUP_BINARY | OPT_GROUP_NETWORK | OPT_GROUP_CRYPTO | OPT_GROUP_COMPRESSION | OPT_GROUP_ACDS | \
80 OPT_GROUP_SERVER | OPT_GROUP_WEBRTC)
81
83#define MODE_CLIENT_GROUPS \
84 (OPT_GROUP_BINARY | OPT_GROUP_TERMINAL | OPT_GROUP_NETWORK | OPT_GROUP_WEBCAM | OPT_GROUP_DISPLAY | \
85 OPT_GROUP_AUDIO | OPT_GROUP_SNAPSHOT | OPT_GROUP_CRYPTO | OPT_GROUP_COMPRESSION | OPT_GROUP_ACDS | \
86 OPT_GROUP_MEDIA | OPT_GROUP_CLIENT | OPT_GROUP_WEBRTC)
87
89#define MODE_MIRROR_GROUPS \
90 (OPT_GROUP_BINARY | OPT_GROUP_TERMINAL | OPT_GROUP_WEBCAM | OPT_GROUP_DISPLAY | OPT_GROUP_SNAPSHOT | OPT_GROUP_MEDIA)
91
93#define MODE_DISCOVERY_GROUPS \
94 (OPT_GROUP_BINARY | OPT_GROUP_TERMINAL | OPT_GROUP_NETWORK | OPT_GROUP_WEBCAM | OPT_GROUP_DISPLAY | \
95 OPT_GROUP_AUDIO | OPT_GROUP_SNAPSHOT | OPT_GROUP_CRYPTO | OPT_GROUP_COMPRESSION | OPT_GROUP_ACDS | \
96 OPT_GROUP_MEDIA | OPT_GROUP_WEBRTC)
97
99#define MODE_ACDS_GROUPS (OPT_GROUP_BINARY | OPT_GROUP_NETWORK | OPT_GROUP_CRYPTO | OPT_GROUP_WEBRTC)
100
109static inline const char *option_group_name(option_group_t group) {
110 switch (group) {
111 case OPT_GROUP_NONE:
112 return "NONE";
113 case OPT_GROUP_BINARY:
114 return "BINARY";
116 return "TERMINAL";
118 return "NETWORK";
119 case OPT_GROUP_WEBCAM:
120 return "WEBCAM";
122 return "DISPLAY";
123 case OPT_GROUP_AUDIO:
124 return "AUDIO";
126 return "SNAPSHOT";
127 case OPT_GROUP_CRYPTO:
128 return "CRYPTO";
130 return "COMPRESSION";
131 case OPT_GROUP_ACDS:
132 return "ACDS";
133 case OPT_GROUP_MEDIA:
134 return "MEDIA";
135 case OPT_GROUP_SERVER:
136 return "SERVER";
137 case OPT_GROUP_CLIENT:
138 return "CLIENT";
139 case OPT_GROUP_WEBRTC:
140 return "WEBRTC";
141 default:
142 return "UNKNOWN";
143 }
144}
145
155static inline bool option_group_has(uint32_t mode_groups, option_group_t group) {
156 return (mode_groups & (uint32_t)group) != 0;
157}
unsigned int uint32_t
Definition common.h:58
option_group_t
Option group identifiers.
Definition groups.h:50
@ OPT_GROUP_CRYPTO
Encryption and authentication options.
Definition groups.h:59
@ OPT_GROUP_DISPLAY
Display options (color mode, palette, render mode)
Definition groups.h:56
@ OPT_GROUP_CLIENT
Client-specific options (reconnect, server-key)
Definition groups.h:64
@ OPT_GROUP_ACDS
ACDS discovery service options.
Definition groups.h:61
@ OPT_GROUP_BINARY
Binary-level options (help, version, logging)
Definition groups.h:52
@ OPT_GROUP_AUDIO
Audio options (enable, devices, volume)
Definition groups.h:57
@ OPT_GROUP_COMPRESSION
Compression options.
Definition groups.h:60
@ OPT_GROUP_NETWORK
Network options (address, port, reconnect)
Definition groups.h:54
@ OPT_GROUP_SNAPSHOT
Snapshot mode options.
Definition groups.h:58
@ OPT_GROUP_TERMINAL
Terminal dimension options (width, height)
Definition groups.h:53
@ OPT_GROUP_NONE
No groups.
Definition groups.h:51
@ OPT_GROUP_WEBCAM
Webcam options (device, flip, test pattern)
Definition groups.h:55
@ OPT_GROUP_SERVER
Server-specific options (max_clients, client-keys)
Definition groups.h:63
@ OPT_GROUP_MEDIA
Media file streaming options.
Definition groups.h:62
@ OPT_GROUP_WEBRTC
WebRTC connectivity options (STUN/TURN)
Definition groups.h:65