ae2f_docs
Inet.h
Go to the documentation of this file.
1/**
2 * @file Inet.h
3 * @author ae2f
4 * @brief
5 * @date 2025-02-01
6 *
7 * @copyright Copyright (c) 2025
8 *
9 */
10
11#ifndef ae2f_Inet_h
12#define ae2f_Inet_h
13
14#include <ae2f/Call.h>
15#include <ae2f/Cast.h>
16#include "../Sys.h"
17#include "./WSock.h"
18
19#if ae2f_Sys_WIN(!)0
20#include <winsock2.h>
21
22/// @brief
23/// Inetet API Data
24#define ae2f_SysInetMkData WSADATA
25
26/// @brief
27/// Library startup code. \n
28/// Notice it is for Windows, not Linux.
29///
30/// For releasing, see @ref ae2f_InetDel.
31///
32/// # see WSAStartup on Microsoft documentation
33/// @param[in] wVersionRequired {WORD}
34/// @param[out] lpWSAData {LPWSADATA}
35#define ae2f_SysInetMk(wVersionRequired, lpWSAData) WSAStartup(wVersionRequired, lpWSAData)
36
37/// @brief
38/// Library release function.
39#define ae2f_SysInetDel WSACleanup
40
41/**
42 * @brief
43 * [G]et Last [Err]or
44 * */
45#define ae2f_SysInetGErr() WSAGetLastError()
46
47#else
48
49#include <arpa/inet.h>
50#include <unistd.h>
51
52/// @brief
53/// Dummy Inetet API Data
54#define ae2f_SysInetMkData int8_t
55
56/// @brief
57/// Library startup code. \n
58/// Notice it is for Windows, not Linux.
59///
60/// For releasing, see @ref ae2f_InetDel.
61///
62/// Linux needs no startup for Inetet api. It will always success.
63#define ae2f_SysInetMk(a, b) ((void)0)
64
65/// @brief
66/// Library release function.
67#define ae2f_SysInetDel() 0
68
69/**
70 * @brief
71 * [G]et Last [Err]or
72 * */
73#define ae2f_SysInetGErr() WSAGetLastError()
74
75/** @brief since for windowsm for closing socket, closesocket is recommended. */
76#define closesocket close
77
78#endif
79
80#endif
#define ae2f_Sys_WIN
Definition Sys.h:17
#define ae2f_SysWSock
Definition WSock.h:15
#define ae2f_MAC(...)
Definition mac.h:28