mirror of
https://github.com/thunderbrewhq/squall.git
synced 2025-12-12 02:22:30 +00:00
feat(options): implement StormSetOption
This commit is contained in:
parent
09e7076a9b
commit
2ffa8217c0
4 changed files with 149 additions and 0 deletions
108
storm/option/Option.cpp
Normal file
108
storm/option/Option.cpp
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
#include "storm/option/Option.hpp"
|
||||||
|
#include "storm/option/Options.hpp"
|
||||||
|
#include "storm/Error.hpp"
|
||||||
|
|
||||||
|
int32_t StormSetOption(int32_t optname, const void* optval, uint32_t optlen) {
|
||||||
|
SErrSetLastError(ERROR_INVALID_PARAMETER);
|
||||||
|
if (!optval) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t val;
|
||||||
|
|
||||||
|
switch (optname) {
|
||||||
|
case 1:
|
||||||
|
if (optlen != 4) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
g_opt.serrleaksilentwarning = *static_cast<const int32_t*>(optval);
|
||||||
|
SErrSetLastError(0);
|
||||||
|
return 1;
|
||||||
|
case 2:
|
||||||
|
val = *static_cast<const int32_t*>(optval);
|
||||||
|
if (optlen != 4 || !val || (val ^ (val - 1)) != 2 * val - 1) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
g_opt.wavechunksize = val;
|
||||||
|
SErrSetLastError(0);
|
||||||
|
return 1;
|
||||||
|
case 3:
|
||||||
|
if (optlen != 4) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
g_opt.smemleaksilentwarning = *static_cast<const int32_t*>(optval);
|
||||||
|
SErrSetLastError(0);
|
||||||
|
return 1;
|
||||||
|
case 4:
|
||||||
|
if (optlen != 4) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
g_opt.opt0C = *static_cast<const int32_t*>(optval);
|
||||||
|
SErrSetLastError(0);
|
||||||
|
return 1;
|
||||||
|
case 5:
|
||||||
|
if (optlen != 4) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
g_opt.opt10 = *static_cast<const int32_t*>(optval);
|
||||||
|
SErrSetLastError(0);
|
||||||
|
return 1;
|
||||||
|
case 6:
|
||||||
|
if (optlen != 8) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
s_alloccount = static_cast<const uint32_t*>(optval)[0];
|
||||||
|
s_freecount = static_cast<const uint32_t*>(optval)[1];
|
||||||
|
SErrSetLastError(0);
|
||||||
|
return 1;
|
||||||
|
case 7:
|
||||||
|
if (optlen != 4) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
g_opt.opt14 = *static_cast<const int32_t*>(optval);
|
||||||
|
SErrSetLastError(0);
|
||||||
|
return 1;
|
||||||
|
case 9:
|
||||||
|
if (optlen != 4) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
g_opt.opt18 = *static_cast<const int32_t*>(optval) != 0;
|
||||||
|
SErrSetLastError(0);
|
||||||
|
return 1;
|
||||||
|
case 10:
|
||||||
|
if (optlen != 4) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
g_opt.opt1C = *static_cast<const int32_t*>(optval) != 0;
|
||||||
|
SErrSetLastError(0);
|
||||||
|
return 1;
|
||||||
|
case 11:
|
||||||
|
if (optlen != 4) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
g_opt.sregunicode = *static_cast<const int32_t*>(optval) != 0;
|
||||||
|
SErrSetLastError(0);
|
||||||
|
return 1;
|
||||||
|
case 12:
|
||||||
|
if (optlen != 4) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
g_opt.opt24 = *static_cast<const int32_t*>(optval) != 0;
|
||||||
|
SErrSetLastError(0);
|
||||||
|
return 1;
|
||||||
|
case 13:
|
||||||
|
if (optlen != 4) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
g_opt.opt28 = *static_cast<const int32_t*>(optval) != 0;
|
||||||
|
SErrSetLastError(0);
|
||||||
|
return 1;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t StormGetOption(int32_t optname, void* optval, uint32_t* optlen) {
|
||||||
|
// TODO
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
10
storm/option/Option.hpp
Normal file
10
storm/option/Option.hpp
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
#ifndef STORM_OPTION_OPTION_HPP
|
||||||
|
#define STORM_OPTION_OPTION_HPP
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
int32_t StormSetOption(int32_t optname, const void* optval, uint32_t optlen);
|
||||||
|
|
||||||
|
int32_t StormGetOption(int32_t optname, void* optval, uint32_t* optlen);
|
||||||
|
|
||||||
|
#endif
|
||||||
6
storm/option/Options.cpp
Normal file
6
storm/option/Options.cpp
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#include "storm/option/Options.hpp"
|
||||||
|
|
||||||
|
STORMOPTIONS g_opt;
|
||||||
|
|
||||||
|
uint32_t s_alloccount;
|
||||||
|
uint32_t s_freecount;
|
||||||
25
storm/option/Options.hpp
Normal file
25
storm/option/Options.hpp
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
#ifndef STORM_OPTION_OPTIONS_HPP
|
||||||
|
#define STORM_OPTION_OPTIONS_HPP
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
struct STORMOPTIONS {
|
||||||
|
int32_t smemleaksilentwarning;
|
||||||
|
int32_t serrleaksilentwarning;
|
||||||
|
uint32_t wavechunksize;
|
||||||
|
int32_t opt0C;
|
||||||
|
int32_t opt10;
|
||||||
|
int32_t opt14;
|
||||||
|
int32_t opt18;
|
||||||
|
int32_t opt1C;
|
||||||
|
int32_t sregunicode;
|
||||||
|
int32_t opt24;
|
||||||
|
int32_t opt28;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern STORMOPTIONS g_opt;
|
||||||
|
|
||||||
|
extern uint32_t s_alloccount;
|
||||||
|
extern uint32_t s_freecount;
|
||||||
|
|
||||||
|
#endif
|
||||||
Loading…
Add table
Add a link
Reference in a new issue