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