MCPcopy Create free account
hub / github.com/HyperDbg/HyperDbg / HandleType

Function HandleType

hyperdbg/script-engine/code/type.c:40–178  ·  view source on GitHub ↗

* @brief Return a variable type based on the token stack * * @param PtokenStack the token stack containing type tokens * @return VARIABLE_TYPE * pointer to the resolved variable type */

Source from the content-addressed store, hash-verified

38 * @return VARIABLE_TYPE * pointer to the resolved variable type
39 */
40VARIABLE_TYPE *
41HandleType(PSCRIPT_ENGINE_TOKEN_LIST PtokenStack)
42{
43 enum
44 {
45 ENUM_VOID = 1 << 0,
46 ENUM_BOOL = 1 << 2,
47 ENUM_CHAR = 1 << 4,
48 ENUM_SHORT = 1 << 6,
49 ENUM_INT = 1 << 8,
50 ENUM_LONG = 1 << 10,
51 ENUM_FLOAT = 1 << 12,
52 ENUM_DOUBLE = 1 << 14,
53 ENUM_OTHER = 1 << 16,
54 ENUM_SIGNED = 1 << 17,
55 ENUM_UNSIGNED = 1 << 18,
56 };
57
58 VARIABLE_TYPE * Result = VARIABLE_TYPE_UNKNOWN;
59 int Counter = 0;
60 PSCRIPT_ENGINE_TOKEN TopToken = NULL;
61
62 while (PtokenStack->Pointer > 0)
63 {
64 TopToken = Pop(PtokenStack);
65 if (TopToken->Type != SCRIPT_VARIABLE_TYPE)
66 {
67 Push(PtokenStack, TopToken);
68 break;
69 }
70 if (!strcmp(TopToken->Value, "void"))
71 {
72 Counter += ENUM_VOID;
73 }
74 else if (!strcmp(TopToken->Value, "bool"))
75 {
76 Counter += ENUM_BOOL;
77 }
78 else if (!strcmp(TopToken->Value, "char"))
79 {
80 Counter += ENUM_CHAR;
81 }
82 else if (!strcmp(TopToken->Value, "short"))
83 {
84 Counter += ENUM_SHORT;
85 }
86 else if (!strcmp(TopToken->Value, "int"))
87 {
88 Counter += ENUM_INT;
89 }
90 else if (!strcmp(TopToken->Value, "long"))
91 {
92 Counter += ENUM_LONG;
93 }
94 else if (!strcmp(TopToken->Value, "float"))
95 {
96 Counter += ENUM_FLOAT;
97 }

Callers 1

CodeGenFunction · 0.85

Calls 3

PopFunction · 0.85
PushFunction · 0.85
RemoveTokenFunction · 0.85

Tested by

no test coverage detected