comparison include/animone/player.h @ 32:93224b26a0ee default tip

player: efforts towards C-ization
author Paper <paper@tflc.us>
date Mon, 10 Feb 2025 19:17:29 -0500
parents 60ded877339b
children
comparison
equal deleted inserted replaced
31:668f4f31ddda 32:93224b26a0ee
7 #include <vector> 7 #include <vector>
8 #include <map> 8 #include <map>
9 9
10 namespace animone { 10 namespace animone {
11 11
12 /* TODO convert to plain C enums */
12 enum class ExecutablePlatform { 13 enum class ExecutablePlatform {
14 Unknown, // ...
13 Posix, // Posix platforms that aren't OS X 15 Posix, // Posix platforms that aren't OS X
14 Win32, // Windows 16 Win32, // Windows
15 Xnu, // OS X 17 Xnu, // OS X
16 Unknown, // ...
17 }; 18 };
18 19
19 enum class WindowPlatform { 20 enum class WindowPlatform {
21 Unknown, // ...
20 Quartz, // OS X 22 Quartz, // OS X
21 Win32, // Windows 23 Win32, // Windows
22 X11, // X11 24 X11, // X11
23 Unknown, // ...
24 }; 25 };
25 26
26 enum class Strategy { 27 enum class Strategy {
27 WindowTitle, 28 WindowTitle,
28 OpenFiles, 29 OpenFiles,
29 UiAutomation // unused 30 UiAutomation,
30 }; 31 };
31 32
32 enum class PlayerType { 33 enum class PlayerType {
33 Default, 34 Default,
34 WebBrowser // unused 35 WebBrowser,
35 }; 36 };
36 37
37 struct ANIMONE_API Player { 38 struct ANIMONE_API Player {
38 PlayerType type = PlayerType::Default; 39 PlayerType type = PlayerType::Default;
39 std::string name; 40 std::string name;
41 std::map<WindowPlatform, std::vector<std::string>> windows; 42 std::map<WindowPlatform, std::vector<std::string>> windows;
42 std::map<ExecutablePlatform, std::vector<std::string>> executables; 43 std::map<ExecutablePlatform, std::vector<std::string>> executables;
43 std::vector<Strategy> strategies; 44 std::vector<Strategy> strategies;
44 }; 45 };
45 46
46 ANIMONE_API bool ParsePlayersData(const std::string& data, std::vector<Player>& players); 47 }
47 ANIMONE_API bool ParsePlayersFile(const std::string& path, std::vector<Player>& players);
48 48
49 } // namespace animone 49 #ifdef __cplusplus
50 extern "C" {
51 #endif
52
53 int animone_ParsePlayersData(const char *data, std::vector<animone::Player>& players);
54 int animone_ParsePlayersData(const char *path, std::vector<animone::Player>& players);
55
56 #ifdef __cplusplus
57 }
58
59 namespace animone {
60
61 inline bool ParsePlayersData(const std::string& data, std::vector<Player>& players)
62 {
63 return !!ParsePlayersData(data.c_str(), players);
64 }
65 inline bool ParsePlayersFile(const std::string& path, std::vector<Player>& players)
66 {
67 return !!ParsePlayersFile(path.c_str(), players);
68 }
69
70 }
71
72 #endif
50 73
51 #endif // ANIMONE_ANIMONE_PLAYER_H_ 74 #endif // ANIMONE_ANIMONE_PLAYER_H_