MCPcopy Create free account
hub / github.com/ZDoom/Raze / DoCast

Function DoCast

source/common/scripting/vm/vmexec.h:2055–2163  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2053}
2054
2055static void DoCast(const VMRegisters &reg, const VMFrame *f, int a, int b, int cast)
2056{
2057 switch (cast)
2058 {
2059 case CAST_I2F:
2060 ASSERTF(a); ASSERTD(b);
2061 reg.f[a] = reg.d[b];
2062 break;
2063 case CAST_U2F:
2064 ASSERTF(a); ASSERTD(b);
2065 reg.f[a] = unsigned(reg.d[b]);
2066 break;
2067 case CAST_I2S:
2068 ASSERTS(a); ASSERTD(b);
2069 reg.s[a].Format("%d", reg.d[b]);
2070 break;
2071 case CAST_U2S:
2072 ASSERTS(a); ASSERTD(b);
2073 reg.s[a].Format("%u", reg.d[b]);
2074 break;
2075
2076 case CAST_F2I:
2077 ASSERTD(a); ASSERTF(b);
2078 reg.d[a] = (int)reg.f[b];
2079 break;
2080 case CAST_F2U:
2081 ASSERTD(a); ASSERTF(b);
2082 reg.d[a] = (int)(unsigned)reg.f[b];
2083 break;
2084 case CAST_F2S:
2085 ASSERTS(a); ASSERTF(b);
2086 reg.s[a].Format("%.5f", reg.f[b]); // keep this small. For more precise conversion there should be a conversion function.
2087 break;
2088 case CAST_V22S:
2089 ASSERTS(a); ASSERTF(b+1);
2090 reg.s[a].Format("(%.5f, %.5f)", reg.f[b], reg.f[b + 1]);
2091 break;
2092 case CAST_V32S:
2093 ASSERTS(a); ASSERTF(b + 2);
2094 reg.s[a].Format("(%.5f, %.5f, %.5f)", reg.f[b], reg.f[b + 1], reg.f[b + 2]);
2095 break;
2096
2097 case CAST_P2S:
2098 {
2099 ASSERTS(a); ASSERTA(b);
2100 if (reg.a[b] == nullptr) reg.s[a] = "null";
2101 else reg.s[a].Format("%p", reg.a[b]);
2102 break;
2103 }
2104
2105 case CAST_S2I:
2106 ASSERTD(a); ASSERTS(b);
2107 reg.d[a] = (VM_SWORD)reg.s[b].ToLong();
2108 break;
2109 case CAST_S2F:
2110 ASSERTF(a); ASSERTS(b);
2111 reg.f[a] = reg.s[b].ToDouble();
2112 break;

Callers 1

ExecScriptFuncFunction · 0.85

Calls 15

FNameClass · 0.85
V_GetColorFunction · 0.85
S_FindSoundFunction · 0.85
ToLongMethod · 0.80
LenMethod · 0.80
IsValidNameMethod · 0.80
GetSoundNameMethod · 0.80
GetGameTextureMethod · 0.80
PalEntryClass · 0.50
FormatMethod · 0.45
ToDoubleMethod · 0.45
GetIndexMethod · 0.45

Tested by

no test coverage detected