mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-02-07 09:01:57 +00:00
Add double variants of SetValue() for numeric PTypes
This commit is contained in:
parent
e2711a74e7
commit
feb5ab31cc
2 changed files with 33 additions and 1 deletions
|
@ -392,7 +392,12 @@ bool PType::VisitedNodeSet::Check(const PType *node)
|
||||||
|
|
||||||
void PType::SetValue(void *addr, int val)
|
void PType::SetValue(void *addr, int val)
|
||||||
{
|
{
|
||||||
assert(0 && "Cannot set value for this type");
|
assert(0 && "Cannot set int value for this type");
|
||||||
|
}
|
||||||
|
|
||||||
|
void PType::SetValue(void *addr, double val)
|
||||||
|
{
|
||||||
|
assert(0 && "Cannot set float value for this type");
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
@ -682,6 +687,11 @@ void PInt::SetValue(void *addr, int val)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PInt::SetValue(void *addr, double val)
|
||||||
|
{
|
||||||
|
SetValue(addr, (int)val);
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// PInt :: GetValueInt
|
// PInt :: GetValueInt
|
||||||
|
@ -927,6 +937,11 @@ void PFloat::SetSymbols(const PFloat::SymbolInitI *sym, size_t count)
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
void PFloat::SetValue(void *addr, int val)
|
void PFloat::SetValue(void *addr, int val)
|
||||||
|
{
|
||||||
|
return SetValue(addr, (double)val);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PFloat::SetValue(void *addr, double val)
|
||||||
{
|
{
|
||||||
assert(((intptr_t)addr & (Align - 1)) == 0 && "unaligned address");
|
assert(((intptr_t)addr & (Align - 1)) == 0 && "unaligned address");
|
||||||
if (Size == 4)
|
if (Size == 4)
|
||||||
|
@ -1112,6 +1127,12 @@ void PFixed::SetValue(void *addr, int val)
|
||||||
*(fixed_t *)addr = val << FRACBITS;
|
*(fixed_t *)addr = val << FRACBITS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PFixed::SetValue(void *addr, double val)
|
||||||
|
{
|
||||||
|
assert(((intptr_t)addr & (Align - 1)) == 0 && "unaligned address");
|
||||||
|
*(fixed_t *)addr = FLOAT2FIXED(val);
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// PFixed :: GetValueInt
|
// PFixed :: GetValueInt
|
||||||
|
@ -1173,6 +1194,12 @@ void PAngle::SetValue(void *addr, int val)
|
||||||
*(angle_t *)addr = Scale(val, ANGLE_90, 90);
|
*(angle_t *)addr = Scale(val, ANGLE_90, 90);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PAngle::SetValue(void *addr, double val)
|
||||||
|
{
|
||||||
|
assert(((intptr_t)addr & (Align - 1)) == 0 && "unaligned address");
|
||||||
|
*(angle_t *)addr = (angle_t)(val * ANGLE_90 / 90);
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// PAngle :: GetValueInt
|
// PAngle :: GetValueInt
|
||||||
|
|
|
@ -188,6 +188,7 @@ public:
|
||||||
|
|
||||||
// Sets the value of a variable of this type at (addr)
|
// Sets the value of a variable of this type at (addr)
|
||||||
virtual void SetValue(void *addr, int val);
|
virtual void SetValue(void *addr, int val);
|
||||||
|
virtual void SetValue(void *addr, double val);
|
||||||
|
|
||||||
// Gets the value of a variable of this type at (addr)
|
// Gets the value of a variable of this type at (addr)
|
||||||
virtual int GetValueInt(void *addr) const;
|
virtual int GetValueInt(void *addr) const;
|
||||||
|
@ -320,6 +321,7 @@ public:
|
||||||
PInt(unsigned int size, bool unsign);
|
PInt(unsigned int size, bool unsign);
|
||||||
|
|
||||||
virtual void SetValue(void *addr, int val);
|
virtual void SetValue(void *addr, int val);
|
||||||
|
virtual void SetValue(void *addr, double val);
|
||||||
virtual int GetValueInt(void *addr) const;
|
virtual int GetValueInt(void *addr) const;
|
||||||
virtual int GetStoreOp() const;
|
virtual int GetStoreOp() const;
|
||||||
virtual int GetLoadOp() const;
|
virtual int GetLoadOp() const;
|
||||||
|
@ -344,6 +346,7 @@ public:
|
||||||
PFloat(unsigned int size);
|
PFloat(unsigned int size);
|
||||||
|
|
||||||
virtual void SetValue(void *addr, int val);
|
virtual void SetValue(void *addr, int val);
|
||||||
|
virtual void SetValue(void *addr, double val);
|
||||||
virtual int GetValueInt(void *addr) const;
|
virtual int GetValueInt(void *addr) const;
|
||||||
virtual int GetStoreOp() const;
|
virtual int GetStoreOp() const;
|
||||||
virtual int GetLoadOp() const;
|
virtual int GetLoadOp() const;
|
||||||
|
@ -410,6 +413,7 @@ public:
|
||||||
PFixed();
|
PFixed();
|
||||||
|
|
||||||
virtual void SetValue(void *addr, int val);
|
virtual void SetValue(void *addr, int val);
|
||||||
|
virtual void SetValue(void *addr, double val);
|
||||||
virtual int GetValueInt(void *addr) const;
|
virtual int GetValueInt(void *addr) const;
|
||||||
virtual int GetStoreOp() const;
|
virtual int GetStoreOp() const;
|
||||||
virtual int GetLoadOp() const;
|
virtual int GetLoadOp() const;
|
||||||
|
@ -422,6 +426,7 @@ public:
|
||||||
PAngle();
|
PAngle();
|
||||||
|
|
||||||
virtual void SetValue(void *addr, int val);
|
virtual void SetValue(void *addr, int val);
|
||||||
|
virtual void SetValue(void *addr, double val);
|
||||||
virtual int GetValueInt(void *addr) const;
|
virtual int GetValueInt(void *addr) const;
|
||||||
virtual int GetStoreOp() const;
|
virtual int GetStoreOp() const;
|
||||||
virtual int GetLoadOp() const;
|
virtual int GetLoadOp() const;
|
||||||
|
|
Loading…
Reference in a new issue