mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 11:18:08 +02:00
ir_constant: Eliminate 'void *' constructor
All of the places that had been using the (glsl_type *, void *) constructor were actually passing an ir_constant_data for the 'void *'. The code can be greatly simplified by replacing this constructor with a (glsl_type *, ir_constant_data *) constructor. This should also help prevent one class of invalid uses of the old constructor.
This commit is contained in:
parent
b74b43e4ba
commit
824b659d91
2 changed files with 6 additions and 15 deletions
19
ir.cpp
19
ir.cpp
|
|
@ -189,23 +189,14 @@ ir_constant::ir_constant()
|
|||
/* empty */
|
||||
}
|
||||
|
||||
ir_constant::ir_constant(const struct glsl_type *type, const void *data)
|
||||
ir_constant::ir_constant(const struct glsl_type *type,
|
||||
const ir_constant_data *data)
|
||||
{
|
||||
unsigned size = 0;
|
||||
assert((type->base_type >= GLSL_TYPE_UINT)
|
||||
&& (type->base_type <= GLSL_TYPE_BOOL));
|
||||
|
||||
this->type = type;
|
||||
switch (type->base_type) {
|
||||
case GLSL_TYPE_UINT: size = sizeof(this->value.u[0]); break;
|
||||
case GLSL_TYPE_INT: size = sizeof(this->value.i[0]); break;
|
||||
case GLSL_TYPE_FLOAT: size = sizeof(this->value.f[0]); break;
|
||||
case GLSL_TYPE_BOOL: size = sizeof(this->value.b[0]); break;
|
||||
default:
|
||||
/* FINISHME: What to do? Exceptions are not the answer.
|
||||
*/
|
||||
break;
|
||||
}
|
||||
|
||||
memcpy(& this->value, data, size * type->components());
|
||||
memcpy(& this->value, data, sizeof(this->value));
|
||||
}
|
||||
|
||||
ir_constant::ir_constant(float f)
|
||||
|
|
|
|||
2
ir.h
2
ir.h
|
|
@ -1031,7 +1031,7 @@ union ir_constant_data {
|
|||
|
||||
class ir_constant : public ir_rvalue {
|
||||
public:
|
||||
ir_constant(const struct glsl_type *type, const void *data);
|
||||
ir_constant(const struct glsl_type *type, const ir_constant_data *data);
|
||||
ir_constant(bool b);
|
||||
ir_constant(unsigned int u);
|
||||
ir_constant(int i);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue