Mesa (glsl2): ir_function_signature: Add method to get the function owning a signature
Ian Romanick
idr at kemper.freedesktop.org
Mon Jul 12 22:23:37 UTC 2010
Module: Mesa
Branch: glsl2
Commit: df05ad4e1aa5512ce1dfd2e6661641e012c8b279
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=df05ad4e1aa5512ce1dfd2e6661641e012c8b279
Author: Ian Romanick <ian.d.romanick at intel.com>
Date: Fri Jul 2 13:28:32 2010 -0700
ir_function_signature: Add method to get the function owning a signature
There is no setter function, the getter returns a constant pointer,
and ir_function_signature::_function is private for a reason. The
only way to make a connection between a function and function
signature is via ir_function::add_signature. This helps ensure that
certain invariants (i.e., a function signature is in the list of
signatures for its _function) are met.
---
src/glsl/ir.cpp | 2 +-
src/glsl/ir.h | 25 +++++++++++++++++++++----
2 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp
index f3ee12c..6d89913 100644
--- a/src/glsl/ir.cpp
+++ b/src/glsl/ir.cpp
@@ -771,7 +771,7 @@ ir_variable::component_slots() const
ir_function_signature::ir_function_signature(const glsl_type *return_type)
- : return_type(return_type), is_defined(false)
+ : return_type(return_type), is_defined(false), _function(NULL)
{
/* empty */
}
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index 18294eb..fb94b5a 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -276,6 +276,23 @@ public:
const char *function_name() const;
/**
+ * Get a handle to the function for which this is a signature
+ *
+ * There is no setter function, this function returns a \c const pointer,
+ * and \c ir_function_signature::_function is private for a reason. The
+ * only way to make a connection between a function and function signature
+ * is via \c ir_function::add_signature. This helps ensure that certain
+ * invariants (i.e., a function signature is in the list of signatures for
+ * its \c _function) are met.
+ *
+ * \sa ir_function::add_signature
+ */
+ inline const class ir_function *function() const
+ {
+ return this->_function;
+ }
+
+ /**
* Check whether the qualifiers match between this signature's parameters
* and the supplied parameter list. If not, returns the name of the first
* parameter with mismatched qualifiers (for use in error messages).
@@ -312,7 +329,7 @@ public:
private:
/** Function of which this signature is one overload. */
- class ir_function *function;
+ class ir_function *_function;
friend class ir_function;
};
@@ -343,8 +360,8 @@ public:
void add_signature(ir_function_signature *sig)
{
- sig->function = this;
- signatures.push_tail(sig);
+ sig->_function = this;
+ this->signatures.push_tail(sig);
}
/**
@@ -381,7 +398,7 @@ private:
inline const char *ir_function_signature::function_name() const
{
- return function->name;
+ return this->_function->name;
}
/*@}*/
More information about the mesa-commit
mailing list