Browse Source

Implicit cast string to InternalName in c++, also optimize for string literals

rdb 11 years ago
parent
commit
028c09add5

+ 8 - 1
dtool/src/dtoolbase/dtoolbase_cc.h

@@ -37,6 +37,7 @@ using namespace std;
 #define NOEXCEPT noexcept
 #define NOEXCEPT noexcept
 #define FINAL
 #define FINAL
 #define OVERRIDE
 #define OVERRIDE
+#define MOVE(x) x
 
 
 #define EXPORT_TEMPLATE_CLASS(expcl, exptp, classname)
 #define EXPORT_TEMPLATE_CLASS(expcl, exptp, classname)
 
 
@@ -137,8 +138,11 @@ typedef ios::seekdir ios_seekdir;
 #  endif
 #  endif
 #  if __has_extension(cxx_rvalue_references) && (__cplusplus >= 201103L)
 #  if __has_extension(cxx_rvalue_references) && (__cplusplus >= 201103L)
 #    define USE_MOVE_SEMANTICS
 #    define USE_MOVE_SEMANTICS
+#    define MOVE(x) move(x)
+#  else
+#    define MOVE(x) x
 #  endif
 #  endif
-#  if __has_extension(cxx_override_control)
+#  if __has_extension(cxx_override_control) && (__cplusplus >= 201103L)
 #    define FINAL final
 #    define FINAL final
 #    define OVERRIDE override
 #    define OVERRIDE override
 #  endif
 #  endif
@@ -150,6 +154,7 @@ typedef ios::seekdir ios_seekdir;
 #  define USE_MOVE_SEMANTICS
 #  define USE_MOVE_SEMANTICS
 #  define FINAL final
 #  define FINAL final
 #  define OVERRIDE override
 #  define OVERRIDE override
+#  define MOVE(x) move(x)
 #elif defined(_MSC_VER) && _MSC_VER >= 1600
 #elif defined(_MSC_VER) && _MSC_VER >= 1600
 // MSVC 2010 has move semantics.  Not much else.
 // MSVC 2010 has move semantics.  Not much else.
 #  define CONSTEXPR INLINE
 #  define CONSTEXPR INLINE
@@ -157,11 +162,13 @@ typedef ios::seekdir ios_seekdir;
 #  define USE_MOVE_SEMANTICS
 #  define USE_MOVE_SEMANTICS
 #  define FINAL
 #  define FINAL
 #  define OVERRIDE
 #  define OVERRIDE
+#  define MOVE(x) move(x)
 #else
 #else
 #  define CONSTEXPR INLINE
 #  define CONSTEXPR INLINE
 #  define NOEXCEPT
 #  define NOEXCEPT
 #  define FINAL
 #  define FINAL
 #  define OVERRIDE
 #  define OVERRIDE
+#  define MOVE(x) x
 #endif
 #endif
 
 
 #if defined(WIN32_VC) && !defined(LINK_ALL_STATIC) && defined(EXPORT_TEMPLATES)
 #if defined(WIN32_VC) && !defined(LINK_ALL_STATIC) && defined(EXPORT_TEMPLATES)

+ 2 - 0
dtool/src/pystub/pystub.cxx

@@ -192,6 +192,7 @@ extern "C" {
   EXPCL_PYSTUB extern void *PyExc_SystemExit;
   EXPCL_PYSTUB extern void *PyExc_SystemExit;
   EXPCL_PYSTUB extern void *PyExc_TypeError;
   EXPCL_PYSTUB extern void *PyExc_TypeError;
   EXPCL_PYSTUB extern void *PyExc_ValueError;
   EXPCL_PYSTUB extern void *PyExc_ValueError;
+  EXPCL_PYSTUB extern void *_Py_FalseStruct;
   EXPCL_PYSTUB extern void *_Py_NoneStruct;
   EXPCL_PYSTUB extern void *_Py_NoneStruct;
   EXPCL_PYSTUB extern void *_Py_NotImplementedStruct;
   EXPCL_PYSTUB extern void *_Py_NotImplementedStruct;
   EXPCL_PYSTUB extern void *_Py_TrueStruct;
   EXPCL_PYSTUB extern void *_Py_TrueStruct;
@@ -381,6 +382,7 @@ void *PyExc_StopIteration = (void *)NULL;
 void *PyExc_SystemExit = (void *)NULL;
 void *PyExc_SystemExit = (void *)NULL;
 void *PyExc_TypeError = (void *)NULL;
 void *PyExc_TypeError = (void *)NULL;
 void *PyExc_ValueError = (void *)NULL;
 void *PyExc_ValueError = (void *)NULL;
+void *_Py_FalseStruct = (void *)NULL;
 void *_Py_NoneStruct = (void *)NULL;
 void *_Py_NoneStruct = (void *)NULL;
 void *_Py_NotImplementedStruct = (void *)NULL;
 void *_Py_NotImplementedStruct = (void *)NULL;
 void *_Py_TrueStruct = (void *)NULL;
 void *_Py_TrueStruct = (void *)NULL;

+ 22 - 22
panda/src/gobj/geomVertexArrayFormat.cxx

@@ -47,7 +47,7 @@ GeomVertexArrayFormat() :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 GeomVertexArrayFormat::
 GeomVertexArrayFormat::
-GeomVertexArrayFormat(InternalName *name0, int num_components0,
+GeomVertexArrayFormat(CPT_InternalName name0, int num_components0,
                       GeomVertexArrayFormat::NumericType numeric_type0,
                       GeomVertexArrayFormat::NumericType numeric_type0,
                       GeomVertexArrayFormat::Contents contents0) :
                       GeomVertexArrayFormat::Contents contents0) :
   _is_registered(false),
   _is_registered(false),
@@ -57,7 +57,7 @@ GeomVertexArrayFormat(InternalName *name0, int num_components0,
   _divisor(0),
   _divisor(0),
   _columns_unsorted(false)
   _columns_unsorted(false)
 {
 {
-  add_column(name0, num_components0, numeric_type0, contents0);
+  add_column(MOVE(name0), num_components0, numeric_type0, contents0);
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -66,10 +66,10 @@ GeomVertexArrayFormat(InternalName *name0, int num_components0,
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 GeomVertexArrayFormat::
 GeomVertexArrayFormat::
-GeomVertexArrayFormat(InternalName *name0, int num_components0,
+GeomVertexArrayFormat(CPT_InternalName name0, int num_components0,
                       GeomVertexArrayFormat::NumericType numeric_type0,
                       GeomVertexArrayFormat::NumericType numeric_type0,
                       GeomVertexArrayFormat::Contents contents0,
                       GeomVertexArrayFormat::Contents contents0,
-                      InternalName *name1, int num_components1,
+                      CPT_InternalName name1, int num_components1,
                       GeomVertexArrayFormat::NumericType numeric_type1,
                       GeomVertexArrayFormat::NumericType numeric_type1,
                       GeomVertexArrayFormat::Contents contents1) :
                       GeomVertexArrayFormat::Contents contents1) :
   _is_registered(false),
   _is_registered(false),
@@ -79,8 +79,8 @@ GeomVertexArrayFormat(InternalName *name0, int num_components0,
   _divisor(0),
   _divisor(0),
   _columns_unsorted(false)
   _columns_unsorted(false)
 {
 {
-  add_column(name0, num_components0, numeric_type0, contents0);
-  add_column(name1, num_components1, numeric_type1, contents1);
+  add_column(MOVE(name0), num_components0, numeric_type0, contents0);
+  add_column(MOVE(name1), num_components1, numeric_type1, contents1);
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -89,13 +89,13 @@ GeomVertexArrayFormat(InternalName *name0, int num_components0,
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 GeomVertexArrayFormat::
 GeomVertexArrayFormat::
-GeomVertexArrayFormat(InternalName *name0, int num_components0,
+GeomVertexArrayFormat(CPT_InternalName name0, int num_components0,
                       GeomVertexArrayFormat::NumericType numeric_type0,
                       GeomVertexArrayFormat::NumericType numeric_type0,
                       GeomVertexArrayFormat::Contents contents0,
                       GeomVertexArrayFormat::Contents contents0,
-                      InternalName *name1, int num_components1,
+                      CPT_InternalName name1, int num_components1,
                       GeomVertexArrayFormat::NumericType numeric_type1,
                       GeomVertexArrayFormat::NumericType numeric_type1,
                       GeomVertexArrayFormat::Contents contents1,
                       GeomVertexArrayFormat::Contents contents1,
-                      InternalName *name2, int num_components2,
+                      CPT_InternalName name2, int num_components2,
                       GeomVertexArrayFormat::NumericType numeric_type2,
                       GeomVertexArrayFormat::NumericType numeric_type2,
                       GeomVertexArrayFormat::Contents contents2) :
                       GeomVertexArrayFormat::Contents contents2) :
   _is_registered(false),
   _is_registered(false),
@@ -105,9 +105,9 @@ GeomVertexArrayFormat(InternalName *name0, int num_components0,
   _divisor(0),
   _divisor(0),
   _columns_unsorted(false)
   _columns_unsorted(false)
 {
 {
-  add_column(name0, num_components0, numeric_type0, contents0);
-  add_column(name1, num_components1, numeric_type1, contents1);
-  add_column(name2, num_components2, numeric_type2, contents2);
+  add_column(MOVE(name0), num_components0, numeric_type0, contents0);
+  add_column(MOVE(name1), num_components1, numeric_type1, contents1);
+  add_column(MOVE(name2), num_components2, numeric_type2, contents2);
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -116,16 +116,16 @@ GeomVertexArrayFormat(InternalName *name0, int num_components0,
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 GeomVertexArrayFormat::
 GeomVertexArrayFormat::
-GeomVertexArrayFormat(InternalName *name0, int num_components0,
+GeomVertexArrayFormat(CPT_InternalName name0, int num_components0,
                       GeomVertexArrayFormat::NumericType numeric_type0,
                       GeomVertexArrayFormat::NumericType numeric_type0,
                       GeomVertexArrayFormat::Contents contents0,
                       GeomVertexArrayFormat::Contents contents0,
-                      InternalName *name1, int num_components1,
+                      CPT_InternalName name1, int num_components1,
                       GeomVertexArrayFormat::NumericType numeric_type1,
                       GeomVertexArrayFormat::NumericType numeric_type1,
                       GeomVertexArrayFormat::Contents contents1,
                       GeomVertexArrayFormat::Contents contents1,
-                      InternalName *name2, int num_components2,
+                      CPT_InternalName name2, int num_components2,
                       GeomVertexArrayFormat::NumericType numeric_type2,
                       GeomVertexArrayFormat::NumericType numeric_type2,
                       GeomVertexArrayFormat::Contents contents2,
                       GeomVertexArrayFormat::Contents contents2,
-                      InternalName *name3, int num_components3,
+                      CPT_InternalName name3, int num_components3,
                       GeomVertexArrayFormat::NumericType numeric_type3,
                       GeomVertexArrayFormat::NumericType numeric_type3,
                       GeomVertexArrayFormat::Contents contents3) :
                       GeomVertexArrayFormat::Contents contents3) :
   _is_registered(false),
   _is_registered(false),
@@ -135,10 +135,10 @@ GeomVertexArrayFormat(InternalName *name0, int num_components0,
   _divisor(0),
   _divisor(0),
   _columns_unsorted(false)
   _columns_unsorted(false)
 {
 {
-  add_column(name0, num_components0, numeric_type0, contents0);
-  add_column(name1, num_components1, numeric_type1, contents1);
-  add_column(name2, num_components2, numeric_type2, contents2);
-  add_column(name3, num_components3, numeric_type3, contents3);
+  add_column(MOVE(name0), num_components0, numeric_type0, contents0);
+  add_column(MOVE(name1), num_components1, numeric_type1, contents1);
+  add_column(MOVE(name2), num_components2, numeric_type2, contents2);
+  add_column(MOVE(name3), num_components3, numeric_type3, contents3);
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -235,7 +235,7 @@ unref() const {
 //               type.
 //               type.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 int GeomVertexArrayFormat::
 int GeomVertexArrayFormat::
-add_column(InternalName *name, int num_components,
+add_column(CPT_InternalName name, int num_components,
            GeomVertexArrayFormat::NumericType numeric_type,
            GeomVertexArrayFormat::NumericType numeric_type,
            GeomVertexArrayFormat::Contents contents, int start,
            GeomVertexArrayFormat::Contents contents, int start,
            int column_alignment) {
            int column_alignment) {
@@ -243,7 +243,7 @@ add_column(InternalName *name, int num_components,
     start = _total_bytes;
     start = _total_bytes;
   }
   }
 
 
-  return add_column(GeomVertexColumn(name, num_components, numeric_type, contents,
+  return add_column(GeomVertexColumn(MOVE(name), num_components, numeric_type, contents,
                                      start, column_alignment));
                                      start, column_alignment));
 }
 }
 
 

+ 13 - 13
panda/src/gobj/geomVertexArrayFormat.h

@@ -50,29 +50,29 @@ class BamReader;
 //               data may be piggybacked into the data record simply
 //               data may be piggybacked into the data record simply
 //               by choosing a unique name.
 //               by choosing a unique name.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
-class EXPCL_PANDA_GOBJ GeomVertexArrayFormat : public TypedWritableReferenceCount, public GeomEnums {
+class EXPCL_PANDA_GOBJ GeomVertexArrayFormat FINAL : public TypedWritableReferenceCount, public GeomEnums {
 PUBLISHED:
 PUBLISHED:
   GeomVertexArrayFormat();
   GeomVertexArrayFormat();
   GeomVertexArrayFormat(const GeomVertexArrayFormat &copy);
   GeomVertexArrayFormat(const GeomVertexArrayFormat &copy);
-  GeomVertexArrayFormat(InternalName *name0, int num_components0,
+  GeomVertexArrayFormat(CPT_InternalName name0, int num_components0,
                         NumericType numeric_type0, Contents contents0);
                         NumericType numeric_type0, Contents contents0);
-  GeomVertexArrayFormat(InternalName *name0, int num_components0,
+  GeomVertexArrayFormat(CPT_InternalName name0, int num_components0,
                         NumericType numeric_type0, Contents contents0,
                         NumericType numeric_type0, Contents contents0,
-                        InternalName *name1, int num_components1,
+                        CPT_InternalName name1, int num_components1,
                         NumericType numeric_type1, Contents contents1);
                         NumericType numeric_type1, Contents contents1);
-  GeomVertexArrayFormat(InternalName *name0, int num_components0,
+  GeomVertexArrayFormat(CPT_InternalName name0, int num_components0,
                         NumericType numeric_type0, Contents contents0,
                         NumericType numeric_type0, Contents contents0,
-                        InternalName *name1, int num_components1,
+                        CPT_InternalName name1, int num_components1,
                         NumericType numeric_type1, Contents contents1,
                         NumericType numeric_type1, Contents contents1,
-                        InternalName *name2, int num_components2,
+                        CPT_InternalName name2, int num_components2,
                         NumericType numeric_type2, Contents contents2);
                         NumericType numeric_type2, Contents contents2);
-  GeomVertexArrayFormat(InternalName *name0, int num_components0,
+  GeomVertexArrayFormat(CPT_InternalName name0, int num_components0,
                         NumericType numeric_type0, Contents contents0,
                         NumericType numeric_type0, Contents contents0,
-                        InternalName *name1, int num_components1,
+                        CPT_InternalName name1, int num_components1,
                         NumericType numeric_type1, Contents contents1,
                         NumericType numeric_type1, Contents contents1,
-                        InternalName *name2, int num_components2,
+                        CPT_InternalName name2, int num_components2,
                         NumericType numeric_type2, Contents contents2,
                         NumericType numeric_type2, Contents contents2,
-                        InternalName *name3, int num_components3,
+                        CPT_InternalName name3, int num_components3,
                         NumericType numeric_type3, Contents contents3);
                         NumericType numeric_type3, Contents contents3);
   void operator = (const GeomVertexArrayFormat &copy);
   void operator = (const GeomVertexArrayFormat &copy);
   ~GeomVertexArrayFormat();
   ~GeomVertexArrayFormat();
@@ -93,7 +93,7 @@ PUBLISHED:
 
 
   INLINE int get_total_bytes() const;
   INLINE int get_total_bytes() const;
 
 
-  int add_column(InternalName *name, int num_components,
+  int add_column(CPT_InternalName name, int num_components,
                  NumericType numeric_type, Contents contents,
                  NumericType numeric_type, Contents contents,
                  int start = -1, int column_alignment = 0);
                  int start = -1, int column_alignment = 0);
   int add_column(const GeomVertexColumn &column);
   int add_column(const GeomVertexColumn &column);
@@ -115,7 +115,7 @@ PUBLISHED:
 
 
   void output(ostream &out) const;
   void output(ostream &out) const;
   void write(ostream &out, int indent_level = 0) const;
   void write(ostream &out, int indent_level = 0) const;
-  void write_with_data(ostream &out, int indent_level, 
+  void write_with_data(ostream &out, int indent_level,
                        const GeomVertexArrayData *array_data) const;
                        const GeomVertexArrayData *array_data) const;
 
 
   string get_format_string(bool pad = true) const;
   string get_format_string(bool pad = true) const;

+ 24 - 26
panda/src/gobj/geomVertexColumn.I

@@ -28,13 +28,13 @@ GeomVertexColumn() :
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Constructor
 //     Function: GeomVertexColumn::Constructor
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE GeomVertexColumn::
 INLINE GeomVertexColumn::
-GeomVertexColumn(InternalName *name, int num_components,
+GeomVertexColumn(CPT_InternalName name, int num_components,
                  NumericType numeric_type, Contents contents,
                  NumericType numeric_type, Contents contents,
                  int start, int column_alignment) :
                  int start, int column_alignment) :
-  _name(name),
+  _name(MOVE(name)),
   _num_components(num_components),
   _num_components(num_components),
   _numeric_type(numeric_type),
   _numeric_type(numeric_type),
   _contents(contents),
   _contents(contents),
@@ -48,7 +48,7 @@ GeomVertexColumn(InternalName *name, int num_components,
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Copy Constructor
 //     Function: GeomVertexColumn::Copy Constructor
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE GeomVertexColumn::
 INLINE GeomVertexColumn::
 GeomVertexColumn(const GeomVertexColumn &copy) :
 GeomVertexColumn(const GeomVertexColumn &copy) :
@@ -66,7 +66,7 @@ GeomVertexColumn(const GeomVertexColumn &copy) :
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Destructor
 //     Function: GeomVertexColumn::Destructor
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE GeomVertexColumn::
 INLINE GeomVertexColumn::
 ~GeomVertexColumn() {
 ~GeomVertexColumn() {
@@ -82,7 +82,7 @@ INLINE GeomVertexColumn::
 //               system-defined field types.  Only the system-defined
 //               system-defined field types.  Only the system-defined
 //               field types are used for the actual rendering.
 //               field types are used for the actual rendering.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
-INLINE InternalName *GeomVertexColumn::
+INLINE const InternalName *GeomVertexColumn::
 get_name() const {
 get_name() const {
   return _name;
   return _name;
 }
 }
@@ -334,7 +334,7 @@ operator == (const GeomVertexColumn &other) const {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::operator !=
 //     Function: GeomVertexColumn::operator !=
 //       Access: Public
 //       Access: Public
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE bool GeomVertexColumn::
 INLINE bool GeomVertexColumn::
 operator != (const GeomVertexColumn &other) const {
 operator != (const GeomVertexColumn &other) const {
@@ -351,7 +351,7 @@ operator != (const GeomVertexColumn &other) const {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE bool GeomVertexColumn::
 INLINE bool GeomVertexColumn::
 operator < (const GeomVertexColumn &other) const {
 operator < (const GeomVertexColumn &other) const {
-  if (_start != other._start) { 
+  if (_start != other._start) {
     return _start < other._start;
     return _start < other._start;
   }
   }
   if (_total_bytes < other._total_bytes) {
   if (_total_bytes < other._total_bytes) {
@@ -382,7 +382,7 @@ maybe_scale_color_f(unsigned int value) {
     return (float)value;
     return (float)value;
   }
   }
 }
 }
-    
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Packer::maybe_scale_color_f
 //     Function: GeomVertexColumn::Packer::maybe_scale_color_f
 //       Access: Public
 //       Access: Public
@@ -394,11 +394,11 @@ maybe_scale_color_f(unsigned int a, unsigned int b) {
   if (_column->get_contents() == C_color) {
   if (_column->get_contents() == C_color) {
     _v2.set((float)a / 255.0f,
     _v2.set((float)a / 255.0f,
             (float)b / 255.0f);
             (float)b / 255.0f);
-  } else {    
+  } else {
     _v2.set((float)a, (float)b);
     _v2.set((float)a, (float)b);
   }
   }
 }
 }
-    
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Packer::maybe_scale_color_f
 //     Function: GeomVertexColumn::Packer::maybe_scale_color_f
 //       Access: Public
 //       Access: Public
@@ -411,11 +411,11 @@ maybe_scale_color_f(unsigned int a, unsigned int b, unsigned int c) {
     _v3.set((float)a / 255.0f,
     _v3.set((float)a / 255.0f,
             (float)b / 255.0f,
             (float)b / 255.0f,
             (float)c / 255.0f);
             (float)c / 255.0f);
-  } else {    
+  } else {
     _v3.set((float)a, (float)b, (float)c);
     _v3.set((float)a, (float)b, (float)c);
   }
   }
 }
 }
-    
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Packer::maybe_scale_color_f
 //     Function: GeomVertexColumn::Packer::maybe_scale_color_f
 //       Access: Public
 //       Access: Public
@@ -434,7 +434,6 @@ maybe_scale_color_f(unsigned int a, unsigned int b, unsigned int c,
     _v4.set((float)a, (float)b, (float)c, (float)d);
     _v4.set((float)a, (float)b, (float)c, (float)d);
   }
   }
 }
 }
-    
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_f
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_f
@@ -452,7 +451,7 @@ maybe_unscale_color_f(float data) {
     return (unsigned int)data;
     return (unsigned int)data;
   }
   }
 }
 }
-    
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_f
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_f
 //       Access: Public
 //       Access: Public
@@ -470,7 +469,7 @@ maybe_unscale_color_f(const LVecBase2f &data) {
     _b = (unsigned int)data[1];
     _b = (unsigned int)data[1];
   }
   }
 }
 }
-    
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_f
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_f
 //       Access: Public
 //       Access: Public
@@ -490,7 +489,7 @@ maybe_unscale_color_f(const LVecBase3f &data) {
     _c = (unsigned int)data[2];
     _c = (unsigned int)data[2];
   }
   }
 }
 }
-    
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_f
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_f
 //       Access: Public
 //       Access: Public
@@ -529,7 +528,7 @@ maybe_scale_color_d(unsigned int value) {
     return (double)value;
     return (double)value;
   }
   }
 }
 }
-    
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Packer::maybe_scale_color_d
 //     Function: GeomVertexColumn::Packer::maybe_scale_color_d
 //       Access: Public
 //       Access: Public
@@ -541,11 +540,11 @@ maybe_scale_color_d(unsigned int a, unsigned int b) {
   if (_column->get_contents() == C_color) {
   if (_column->get_contents() == C_color) {
     _v2d.set((double)a / 255.0,
     _v2d.set((double)a / 255.0,
              (double)b / 255.0);
              (double)b / 255.0);
-  } else {    
+  } else {
     _v2d.set((double)a, (double)b);
     _v2d.set((double)a, (double)b);
   }
   }
 }
 }
-    
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Packer::maybe_scale_color_d
 //     Function: GeomVertexColumn::Packer::maybe_scale_color_d
 //       Access: Public
 //       Access: Public
@@ -558,11 +557,11 @@ maybe_scale_color_d(unsigned int a, unsigned int b, unsigned int c) {
     _v3d.set((double)a / 255.0,
     _v3d.set((double)a / 255.0,
              (double)b / 255.0,
              (double)b / 255.0,
              (double)c / 255.0);
              (double)c / 255.0);
-  } else {    
+  } else {
     _v3d.set((double)a, (double)b, (double)c);
     _v3d.set((double)a, (double)b, (double)c);
   }
   }
 }
 }
-    
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Packer::maybe_scale_color_d
 //     Function: GeomVertexColumn::Packer::maybe_scale_color_d
 //       Access: Public
 //       Access: Public
@@ -581,7 +580,6 @@ maybe_scale_color_d(unsigned int a, unsigned int b, unsigned int c,
     _v4d.set((double)a, (double)b, (double)c, (double)d);
     _v4d.set((double)a, (double)b, (double)c, (double)d);
   }
   }
 }
 }
-    
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_d
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_d
@@ -599,7 +597,7 @@ maybe_unscale_color_d(double data) {
     return (unsigned int)data;
     return (unsigned int)data;
   }
   }
 }
 }
-    
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_d
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_d
 //       Access: Public
 //       Access: Public
@@ -617,7 +615,7 @@ maybe_unscale_color_d(const LVecBase2d &data) {
     _b = (unsigned int)data[1];
     _b = (unsigned int)data[1];
   }
   }
 }
 }
-    
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_d
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_d
 //       Access: Public
 //       Access: Public
@@ -637,7 +635,7 @@ maybe_unscale_color_d(const LVecBase3d &data) {
     _c = (unsigned int)data[2];
     _c = (unsigned int)data[2];
   }
   }
 }
 }
-    
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_d
 //     Function: GeomVertexColumn::Packer::maybe_unscale_color_d
 //       Access: Public
 //       Access: Public

+ 4 - 5
panda/src/gobj/geomVertexColumn.h

@@ -38,18 +38,17 @@ class GeomVertexWriter;
 //               to completely define a particular array structure.
 //               to completely define a particular array structure.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 class EXPCL_PANDA_GOBJ GeomVertexColumn : public GeomEnums {
 class EXPCL_PANDA_GOBJ GeomVertexColumn : public GeomEnums {
-PUBLISHED:
 private:
 private:
   INLINE GeomVertexColumn();
   INLINE GeomVertexColumn();
 PUBLISHED:
 PUBLISHED:
-  INLINE GeomVertexColumn(InternalName *name, int num_components,
+  INLINE GeomVertexColumn(CPT_InternalName name, int num_components,
                           NumericType numeric_type, Contents contents,
                           NumericType numeric_type, Contents contents,
                           int start, int column_alignment = 0);
                           int start, int column_alignment = 0);
   INLINE GeomVertexColumn(const GeomVertexColumn &copy);
   INLINE GeomVertexColumn(const GeomVertexColumn &copy);
   void operator = (const GeomVertexColumn &copy);
   void operator = (const GeomVertexColumn &copy);
   INLINE ~GeomVertexColumn();
   INLINE ~GeomVertexColumn();
 
 
-  INLINE InternalName *get_name() const;
+  INLINE const InternalName *get_name() const;
   INLINE int get_num_components() const;
   INLINE int get_num_components() const;
   INLINE int get_num_values() const;
   INLINE int get_num_values() const;
   INLINE int get_num_elements() const;
   INLINE int get_num_elements() const;
@@ -95,7 +94,7 @@ public:
   void fillin(DatagramIterator &scan, BamReader *manager);
   void fillin(DatagramIterator &scan, BamReader *manager);
 
 
 private:
 private:
-  PT(InternalName) _name;
+  CPT_InternalName _name;
   int _num_components;
   int _num_components;
   int _num_values;
   int _num_values;
   int _num_elements;
   int _num_elements;
@@ -141,7 +140,7 @@ private:
     virtual void set_data2d(unsigned char *pointer, const LVecBase2d &data);
     virtual void set_data2d(unsigned char *pointer, const LVecBase2d &data);
     virtual void set_data3d(unsigned char *pointer, const LVecBase3d &data);
     virtual void set_data3d(unsigned char *pointer, const LVecBase3d &data);
     virtual void set_data4d(unsigned char *pointer, const LVecBase4d &data);
     virtual void set_data4d(unsigned char *pointer, const LVecBase4d &data);
-    
+
     virtual void set_data1i(unsigned char *pointer, int data);
     virtual void set_data1i(unsigned char *pointer, int data);
     virtual void set_data2i(unsigned char *pointer, const LVecBase2i &data);
     virtual void set_data2i(unsigned char *pointer, const LVecBase2i &data);
     virtual void set_data3i(unsigned char *pointer, const LVecBase3i &data);
     virtual void set_data3i(unsigned char *pointer, const LVecBase3i &data);

+ 1 - 1
panda/src/gobj/geomVertexFormat.I

@@ -236,7 +236,7 @@ get_texcoord(int n) const {
 INLINE int GeomVertexFormat::
 INLINE int GeomVertexFormat::
 get_num_morphs() const {
 get_num_morphs() const {
   nassertr(_is_registered, 0);
   nassertr(_is_registered, 0);
-  
+
   return _morphs.size();
   return _morphs.size();
 }
 }
 
 

+ 34 - 35
panda/src/gobj/geomVertexFormat.cxx

@@ -26,7 +26,7 @@ TypeHandle GeomVertexFormat::_type_handle;
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexFormat::Constructor
 //     Function: GeomVertexFormat::Constructor
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 GeomVertexFormat::
 GeomVertexFormat::
 GeomVertexFormat() :
 GeomVertexFormat() :
@@ -38,7 +38,7 @@ GeomVertexFormat() :
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexFormat::Constructor
 //     Function: GeomVertexFormat::Constructor
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 GeomVertexFormat::
 GeomVertexFormat::
 GeomVertexFormat(const GeomVertexArrayFormat *array_format) :
 GeomVertexFormat(const GeomVertexArrayFormat *array_format) :
@@ -51,7 +51,7 @@ GeomVertexFormat(const GeomVertexArrayFormat *array_format) :
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexFormat::Copy Constructor
 //     Function: GeomVertexFormat::Copy Constructor
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 GeomVertexFormat::
 GeomVertexFormat::
 GeomVertexFormat(const GeomVertexFormat &copy) :
 GeomVertexFormat(const GeomVertexFormat &copy) :
@@ -65,7 +65,7 @@ GeomVertexFormat(const GeomVertexFormat &copy) :
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexFormat::Copy Assignment Operator
 //     Function: GeomVertexFormat::Copy Assignment Operator
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void GeomVertexFormat::
 void GeomVertexFormat::
 operator = (const GeomVertexFormat &copy) {
 operator = (const GeomVertexFormat &copy) {
@@ -78,7 +78,7 @@ operator = (const GeomVertexFormat &copy) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexFormat::Destructor
 //     Function: GeomVertexFormat::Destructor
 //       Access: Published, Virtual
 //       Access: Published, Virtual
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 GeomVertexFormat::
 GeomVertexFormat::
 ~GeomVertexFormat() {
 ~GeomVertexFormat() {
@@ -109,7 +109,6 @@ unref() const {
   return false;
   return false;
 }
 }
 
 
-
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexFormat::get_post_animated_format
 //     Function: GeomVertexFormat::get_post_animated_format
 //       Access: Published
 //       Access: Published
@@ -129,7 +128,7 @@ get_post_animated_format() const {
   if (_post_animated_format == (GeomVertexFormat *)NULL) {
   if (_post_animated_format == (GeomVertexFormat *)NULL) {
     PT(GeomVertexFormat) new_format = new GeomVertexFormat(*this);
     PT(GeomVertexFormat) new_format = new GeomVertexFormat(*this);
     new_format->remove_column(InternalName::get_transform_blend());
     new_format->remove_column(InternalName::get_transform_blend());
-    
+
     int num_morphs = get_num_morphs();
     int num_morphs = get_num_morphs();
     for (int mi = 0; mi < num_morphs; mi++) {
     for (int mi = 0; mi < num_morphs; mi++) {
       CPT(InternalName) delta_name = get_morph_delta(mi);
       CPT(InternalName) delta_name = get_morph_delta(mi);
@@ -138,7 +137,7 @@ get_post_animated_format() const {
 
 
     new_format->_animation.set_none();
     new_format->_animation.set_none();
 
 
-    CPT(GeomVertexFormat) registered = 
+    CPT(GeomVertexFormat) registered =
       GeomVertexFormat::register_format(new_format);
       GeomVertexFormat::register_format(new_format);
     ((GeomVertexFormat *)this)->_post_animated_format = registered;
     ((GeomVertexFormat *)this)->_post_animated_format = registered;
     if (_post_animated_format != this) {
     if (_post_animated_format != this) {
@@ -215,13 +214,13 @@ get_union_format(const GeomVertexFormat *other) const {
           if (column_b != (GeomVertexColumn *)NULL &&
           if (column_b != (GeomVertexColumn *)NULL &&
               column_b->get_total_bytes() > column_a->get_total_bytes()) {
               column_b->get_total_bytes() > column_a->get_total_bytes()) {
             // Column b is larger.  Keep it.
             // Column b is larger.  Keep it.
-            new_array->add_column(column_b->get_name(), 
+            new_array->add_column(column_b->get_name(),
                                   column_b->get_num_components(),
                                   column_b->get_num_components(),
                                   column_b->get_numeric_type(),
                                   column_b->get_numeric_type(),
                                   column_b->get_contents());
                                   column_b->get_contents());
           } else {
           } else {
             // Column a is larger.  Keep it.
             // Column a is larger.  Keep it.
-            new_array->add_column(column_a->get_name(), 
+            new_array->add_column(column_a->get_name(),
                                   column_a->get_num_components(),
                                   column_a->get_num_components(),
                                   column_a->get_numeric_type(),
                                   column_a->get_numeric_type(),
                                   column_a->get_contents());
                                   column_a->get_contents());
@@ -242,13 +241,13 @@ get_union_format(const GeomVertexFormat *other) const {
           if (column_b != (GeomVertexColumn *)NULL &&
           if (column_b != (GeomVertexColumn *)NULL &&
               column_b->get_total_bytes() > column_a->get_total_bytes()) {
               column_b->get_total_bytes() > column_a->get_total_bytes()) {
             // Column b is larger.  Keep it.
             // Column b is larger.  Keep it.
-            new_array->add_column(column_b->get_name(), 
+            new_array->add_column(column_b->get_name(),
                                   column_b->get_num_components(),
                                   column_b->get_num_components(),
                                   column_b->get_numeric_type(),
                                   column_b->get_numeric_type(),
                                   column_b->get_contents());
                                   column_b->get_contents());
           } else {
           } else {
             // Column a is larger.  Keep it.
             // Column a is larger.  Keep it.
-            new_array->add_column(column_a->get_name(), 
+            new_array->add_column(column_a->get_name(),
                                   column_a->get_num_components(),
                                   column_a->get_num_components(),
                                   column_a->get_numeric_type(),
                                   column_a->get_numeric_type(),
                                   column_a->get_contents());
                                   column_a->get_contents());
@@ -517,7 +516,7 @@ get_column(const InternalName *name) const {
     if (ai != _columns_by_name.end()) {
     if (ai != _columns_by_name.end()) {
       int array_index = (*ai).second._array_index;
       int array_index = (*ai).second._array_index;
       int column_index = (*ai).second._column_index;
       int column_index = (*ai).second._column_index;
-      
+
       nassertr(array_index >= 0 && array_index < (int)_arrays.size(), NULL);
       nassertr(array_index >= 0 && array_index < (int)_arrays.size(), NULL);
       return _arrays[array_index]->get_column(column_index);
       return _arrays[array_index]->get_column(column_index);
     }
     }
@@ -628,7 +627,7 @@ maybe_align_columns_for_animation() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexFormat::output
 //     Function: GeomVertexFormat::output
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void GeomVertexFormat::
 void GeomVertexFormat::
 output(ostream &out) const {
 output(ostream &out) const {
@@ -654,7 +653,7 @@ output(ostream &out) const {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexFormat::write
 //     Function: GeomVertexFormat::write
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void GeomVertexFormat::
 void GeomVertexFormat::
 write(ostream &out, int indent_level) const {
 write(ostream &out, int indent_level) const {
@@ -673,10 +672,10 @@ write(ostream &out, int indent_level) const {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexFormat::write_with_data
 //     Function: GeomVertexFormat::write_with_data
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void GeomVertexFormat::
 void GeomVertexFormat::
-write_with_data(ostream &out, int indent_level, 
+write_with_data(ostream &out, int indent_level,
                 const GeomVertexData *data) const {
                 const GeomVertexData *data) const {
   indent(out, indent_level)
   indent(out, indent_level)
     << data->get_num_rows() << " rows.\n";
     << data->get_num_rows() << " rows.\n";
@@ -725,7 +724,7 @@ get_array_info(const InternalName *name, int &array_index,
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexFormat::compare_to
 //     Function: GeomVertexFormat::compare_to
 //       Access: Public
 //       Access: Public
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 int GeomVertexFormat::
 int GeomVertexFormat::
 compare_to(const GeomVertexFormat &other) const {
 compare_to(const GeomVertexFormat &other) const {
@@ -760,7 +759,7 @@ make_registry() {
     _registry->make_standard_formats();
     _registry->make_standard_formats();
   }
   }
 }
 }
- 
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexFormat::do_register
 //     Function: GeomVertexFormat::do_register
 //       Access: Private
 //       Access: Private
@@ -813,7 +812,7 @@ do_register() {
   // Go back through the index now and identify the points, vectors,
   // Go back through the index now and identify the points, vectors,
   // and morph descriptions, so we can quickly look these up later.
   // and morph descriptions, so we can quickly look these up later.
   DataTypesByName::iterator ni;
   DataTypesByName::iterator ni;
-  for (ni = _columns_by_name.begin(); 
+  for (ni = _columns_by_name.begin();
        ni != _columns_by_name.end();
        ni != _columns_by_name.end();
        ++ni) {
        ++ni) {
     const DataTypeRecord &record = (*ni).second;
     const DataTypeRecord &record = (*ni).second;
@@ -840,8 +839,8 @@ do_register() {
         // It's a morph description.
         // It's a morph description.
         MorphRecord morph;
         MorphRecord morph;
         morph._delta = column->get_name();
         morph._delta = column->get_name();
-        
-        // The delta name must be of the form "basename.morph.slidername".  
+
+        // The delta name must be of the form "basename.morph.slidername".
         int n = morph._delta->find_ancestor("morph");
         int n = morph._delta->find_ancestor("morph");
         if (n < 0) {
         if (n < 0) {
           gobj_cat.warning()
           gobj_cat.warning()
@@ -850,10 +849,10 @@ do_register() {
         } else {
         } else {
           morph._slider = InternalName::make(morph._delta->get_net_basename(n - 1));
           morph._slider = InternalName::make(morph._delta->get_net_basename(n - 1));
           morph._base = morph._delta->get_ancestor(n + 1);
           morph._base = morph._delta->get_ancestor(n + 1);
-          
+
           if (_columns_by_name.find(morph._base) == _columns_by_name.end()) {
           if (_columns_by_name.find(morph._base) == _columns_by_name.end()) {
             gobj_cat.warning()
             gobj_cat.warning()
-              << "vertex format defines " 
+              << "vertex format defines "
               << *column->get_name() << " but does not define "
               << *column->get_name() << " but does not define "
               << *morph._base << "\n";
               << *morph._base << "\n";
           } else {
           } else {
@@ -879,7 +878,7 @@ do_register() {
   get_array_info(InternalName::get_color(), _color_array_index,
   get_array_info(InternalName::get_color(), _color_array_index,
                  _color_column);
                  _color_column);
 }
 }
- 
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexFormat::do_unregister
 //     Function: GeomVertexFormat::do_unregister
 //       Access: Private
 //       Access: Private
@@ -896,7 +895,7 @@ do_unregister() {
   _texcoords.clear();
   _texcoords.clear();
   _morphs.clear();
   _morphs.clear();
 
 
-  if (_post_animated_format != (GeomVertexFormat *)NULL && 
+  if (_post_animated_format != (GeomVertexFormat *)NULL &&
       _post_animated_format != this) {
       _post_animated_format != this) {
     unref_delete(_post_animated_format);
     unref_delete(_post_animated_format);
   }
   }
@@ -997,7 +996,7 @@ fillin(DatagramIterator &scan, BamReader *manager) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexFormat::Registry::Constructor
 //     Function: GeomVertexFormat::Registry::Constructor
 //       Access: Public
 //       Access: Public
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 GeomVertexFormat::Registry::
 GeomVertexFormat::Registry::
 Registry() {
 Registry() {
@@ -1006,32 +1005,32 @@ Registry() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexFormat::Registry::make_standard_formats
 //     Function: GeomVertexFormat::Registry::make_standard_formats
 //       Access: Public
 //       Access: Public
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void GeomVertexFormat::Registry::
 void GeomVertexFormat::Registry::
 make_standard_formats() {
 make_standard_formats() {
   _v3 = register_format(new GeomVertexArrayFormat
   _v3 = register_format(new GeomVertexArrayFormat
-                        (InternalName::get_vertex(), 3, 
+                        (InternalName::get_vertex(), 3,
                          NT_stdfloat, C_point));
                          NT_stdfloat, C_point));
 
 
   _v3n3 = register_format(new GeomVertexArrayFormat
   _v3n3 = register_format(new GeomVertexArrayFormat
-                          (InternalName::get_vertex(), 3, 
+                          (InternalName::get_vertex(), 3,
                            NT_stdfloat, C_point,
                            NT_stdfloat, C_point,
-                           InternalName::get_normal(), 3, 
+                           InternalName::get_normal(), 3,
                            NT_stdfloat, C_vector));
                            NT_stdfloat, C_vector));
 
 
   _v3t2 = register_format(new GeomVertexArrayFormat
   _v3t2 = register_format(new GeomVertexArrayFormat
-                          (InternalName::get_vertex(), 3, 
+                          (InternalName::get_vertex(), 3,
                            NT_stdfloat, C_point,
                            NT_stdfloat, C_point,
-                           InternalName::get_texcoord(), 2, 
+                           InternalName::get_texcoord(), 2,
                            NT_stdfloat, C_texcoord));
                            NT_stdfloat, C_texcoord));
 
 
   _v3n3t2 = register_format(new GeomVertexArrayFormat
   _v3n3t2 = register_format(new GeomVertexArrayFormat
-                            (InternalName::get_vertex(), 3, 
+                            (InternalName::get_vertex(), 3,
                              NT_stdfloat, C_point,
                              NT_stdfloat, C_point,
                              InternalName::get_normal(), 3,
                              InternalName::get_normal(), 3,
                              NT_stdfloat, C_vector,
                              NT_stdfloat, C_vector,
-                             InternalName::get_texcoord(), 2, 
+                             InternalName::get_texcoord(), 2,
                              NT_stdfloat, C_texcoord));
                              NT_stdfloat, C_texcoord));
 
 
   // Define the DirectX-style packed color formats
   // Define the DirectX-style packed color formats

+ 9 - 9
panda/src/gobj/geomVertexFormat.h

@@ -58,7 +58,7 @@ class GeomMunger;
 //               standard and/or user-defined columns in your custom
 //               standard and/or user-defined columns in your custom
 //               GeomVertexFormat constructions.
 //               GeomVertexFormat constructions.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
-class EXPCL_PANDA_GOBJ GeomVertexFormat : public TypedWritableReferenceCount, public GeomEnums {
+class EXPCL_PANDA_GOBJ GeomVertexFormat FINAL : public TypedWritableReferenceCount, public GeomEnums {
 PUBLISHED:
 PUBLISHED:
   GeomVertexFormat();
   GeomVertexFormat();
   GeomVertexFormat(const GeomVertexArrayFormat *array_format);
   GeomVertexFormat(const GeomVertexArrayFormat *array_format);
@@ -96,7 +96,7 @@ PUBLISHED:
   int get_array_with(const InternalName *name) const;
   int get_array_with(const InternalName *name) const;
   const GeomVertexColumn *get_column(const InternalName *name) const;
   const GeomVertexColumn *get_column(const InternalName *name) const;
   INLINE bool has_column(const InternalName *name) const;
   INLINE bool has_column(const InternalName *name) const;
-  
+
   MAKE_SEQ(get_columns, get_num_columns, get_column);
   MAKE_SEQ(get_columns, get_num_columns, get_column);
 
 
   void remove_column(const InternalName *name, bool keep_empty_array = false);
   void remove_column(const InternalName *name, bool keep_empty_array = false);
@@ -126,7 +126,7 @@ PUBLISHED:
 
 
   void output(ostream &out) const;
   void output(ostream &out) const;
   void write(ostream &out, int indent_level = 0) const;
   void write(ostream &out, int indent_level = 0) const;
-  void write_with_data(ostream &out, int indent_level, 
+  void write_with_data(ostream &out, int indent_level,
                        const GeomVertexData *data) const;
                        const GeomVertexData *data) const;
 
 
   // Some standard vertex formats.  No particular requirement to use
   // Some standard vertex formats.  No particular requirement to use
@@ -203,16 +203,16 @@ private:
   int _color_array_index;
   int _color_array_index;
   const GeomVertexColumn *_color_column;
   const GeomVertexColumn *_color_column;
 
 
-  typedef pvector< CPT(InternalName) > Columns;
+  typedef pvector<CPT_InternalName> Columns;
   Columns _points;
   Columns _points;
   Columns _vectors;
   Columns _vectors;
   Columns _texcoords;
   Columns _texcoords;
 
 
   class MorphRecord {
   class MorphRecord {
   public:
   public:
-    CPT(InternalName) _slider;
-    CPT(InternalName) _base;
-    CPT(InternalName) _delta;
+    CPT_InternalName _slider;
+    CPT_InternalName _base;
+    CPT_InternalName _delta;
   };
   };
   typedef pvector<MorphRecord> Morphs;
   typedef pvector<MorphRecord> Morphs;
   Morphs _morphs;
   Morphs _morphs;
@@ -237,12 +237,12 @@ private:
     CPT(GeomVertexFormat) _v3n3;
     CPT(GeomVertexFormat) _v3n3;
     CPT(GeomVertexFormat) _v3t2;
     CPT(GeomVertexFormat) _v3t2;
     CPT(GeomVertexFormat) _v3n3t2;
     CPT(GeomVertexFormat) _v3n3t2;
-    
+
     CPT(GeomVertexFormat) _v3cp;
     CPT(GeomVertexFormat) _v3cp;
     CPT(GeomVertexFormat) _v3n3cp;
     CPT(GeomVertexFormat) _v3n3cp;
     CPT(GeomVertexFormat) _v3cpt2;
     CPT(GeomVertexFormat) _v3cpt2;
     CPT(GeomVertexFormat) _v3n3cpt2;
     CPT(GeomVertexFormat) _v3n3cpt2;
-    
+
     CPT(GeomVertexFormat) _v3c4;
     CPT(GeomVertexFormat) _v3c4;
     CPT(GeomVertexFormat) _v3n3c4;
     CPT(GeomVertexFormat) _v3n3c4;
     CPT(GeomVertexFormat) _v3c4t2;
     CPT(GeomVertexFormat) _v3c4t2;

+ 4 - 39
panda/src/gobj/geomVertexReader.I

@@ -52,31 +52,14 @@ GeomVertexReader(const GeomVertexData *vertex_data,
 //               reader specifically to process the named data type.
 //               reader specifically to process the named data type.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE GeomVertexReader::
 INLINE GeomVertexReader::
-GeomVertexReader(const GeomVertexData *vertex_data, const string &name,
-                 Thread *current_thread) :
-  _vertex_data(vertex_data),
-  _current_thread(current_thread)
-{
-  initialize();
-  set_column(name);
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: GeomVertexReader::Constructor
-//       Access: Published
-//  Description: Constructs a new reader to process the vertices of
-//               the indicated data object.  This flavor creates the
-//               reader specifically to process the named data type.
-////////////////////////////////////////////////////////////////////
-INLINE GeomVertexReader::
-GeomVertexReader(const GeomVertexData *vertex_data, 
-                 const InternalName *name,
+GeomVertexReader(const GeomVertexData *vertex_data,
+                 CPT_InternalName name,
                  Thread *current_thread) :
                  Thread *current_thread) :
   _vertex_data(vertex_data),
   _vertex_data(vertex_data),
   _current_thread(current_thread)
   _current_thread(current_thread)
 {
 {
   initialize();
   initialize();
-  set_column(name);
+  set_column(MOVE(name));
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -317,25 +300,7 @@ set_column(int column) {
 //               false otherwise.
 //               false otherwise.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE bool GeomVertexReader::
 INLINE bool GeomVertexReader::
-set_column(const string &name) {
-  return set_column(InternalName::make(name));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: GeomVertexReader::set_column
-//       Access: Published
-//  Description: Sets up the reader to use the data type with the
-//               indicated name.
-//
-//               This also resets the read row number to the start row
-//               (the same value passed to a previous call to
-//               set_row(), or 0 if set_row() was never called.)
-//
-//               The return value is true if the data type is valid,
-//               false otherwise.
-////////////////////////////////////////////////////////////////////
-INLINE bool GeomVertexReader::
-set_column(const InternalName *name) {
+set_column(CPT_InternalName name) {
   if (_vertex_data != (const GeomVertexData *)NULL) {
   if (_vertex_data != (const GeomVertexData *)NULL) {
     GeomVertexDataPipelineReader reader(_vertex_data, _current_thread);
     GeomVertexDataPipelineReader reader(_vertex_data, _current_thread);
     reader.check_array_readers();
     reader.check_array_readers();

+ 3 - 7
panda/src/gobj/geomVertexReader.h

@@ -59,14 +59,11 @@ PUBLISHED:
   INLINE GeomVertexReader(const GeomVertexData *vertex_data,
   INLINE GeomVertexReader(const GeomVertexData *vertex_data,
                           Thread *current_thread = Thread::get_current_thread());
                           Thread *current_thread = Thread::get_current_thread());
   INLINE GeomVertexReader(const GeomVertexData *vertex_data,
   INLINE GeomVertexReader(const GeomVertexData *vertex_data,
-                          const string &name,
-                          Thread *current_thread = Thread::get_current_thread());
-  INLINE GeomVertexReader(const GeomVertexData *vertex_data,
-                          const InternalName *name,
+                          CPT_InternalName name,
                           Thread *current_thread = Thread::get_current_thread());
                           Thread *current_thread = Thread::get_current_thread());
   INLINE GeomVertexReader(const GeomVertexArrayData *array_data,
   INLINE GeomVertexReader(const GeomVertexArrayData *array_data,
                           Thread *current_thread = Thread::get_current_thread());
                           Thread *current_thread = Thread::get_current_thread());
-  INLINE GeomVertexReader(const GeomVertexArrayData *array_data, 
+  INLINE GeomVertexReader(const GeomVertexArrayData *array_data,
                           int column,
                           int column,
                           Thread *current_thread = Thread::get_current_thread());
                           Thread *current_thread = Thread::get_current_thread());
 
 
@@ -90,8 +87,7 @@ PUBLISHED:
   INLINE bool get_force() const;
   INLINE bool get_force() const;
 
 
   INLINE bool set_column(int column);
   INLINE bool set_column(int column);
-  INLINE bool set_column(const string &name);
-  INLINE bool set_column(const InternalName *name);
+  INLINE bool set_column(CPT_InternalName name);
   bool set_column(int array, const GeomVertexColumn *column);
   bool set_column(int array, const GeomVertexColumn *column);
 
 
   INLINE void clear();
   INLINE void clear();

+ 4 - 39
panda/src/gobj/geomVertexRewriter.I

@@ -49,28 +49,12 @@ GeomVertexRewriter(GeomVertexData *vertex_data, Thread *current_thread) :
 //               rewriter specifically to process the named data type.
 //               rewriter specifically to process the named data type.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE GeomVertexRewriter::
 INLINE GeomVertexRewriter::
-GeomVertexRewriter(GeomVertexData *vertex_data, const string &name,
+GeomVertexRewriter(GeomVertexData *vertex_data, CPT_InternalName name,
                    Thread *current_thread) :
                    Thread *current_thread) :
   GeomVertexWriter(vertex_data, current_thread),
   GeomVertexWriter(vertex_data, current_thread),
   GeomVertexReader(vertex_data, current_thread)
   GeomVertexReader(vertex_data, current_thread)
 {
 {
-  set_column(name);
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: GeomVertexRewriter::Constructor
-//       Access: Published
-//  Description: Constructs a new rewriter to process the vertices of
-//               the indicated data object.  This flavor creates the
-//               rewriter specifically to process the named data type.
-////////////////////////////////////////////////////////////////////
-INLINE GeomVertexRewriter::
-GeomVertexRewriter(GeomVertexData *vertex_data, const InternalName *name,
-                   Thread *current_thread) :
-  GeomVertexWriter(vertex_data, current_thread),
-  GeomVertexReader(vertex_data, current_thread)
-{
-  set_column(name);
+  set_column(MOVE(name));
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -237,30 +221,11 @@ set_column(int column) {
 //               false otherwise.
 //               false otherwise.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE bool GeomVertexRewriter::
 INLINE bool GeomVertexRewriter::
-set_column(const string &name) {
-  return set_column(InternalName::make(name));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: GeomVertexRewriter::set_column
-//       Access: Published
-//  Description: Sets up the rewriter to use the data type with the
-//               indicated name.
-//
-//               This also resets both the read and write row
-//               numbers to the start row (the same value passed to
-//               a previous call to set_row(), or 0 if set_row()
-//               was never called.)
-//
-//               The return value is true if the data type is valid,
-//               false otherwise.
-////////////////////////////////////////////////////////////////////
-INLINE bool GeomVertexRewriter::
-set_column(const InternalName *name) {
+set_column(CPT_InternalName name) {
   // It's important to invoke the writer first, then the reader.  See
   // It's important to invoke the writer first, then the reader.  See
   // set_row().
   // set_row().
   GeomVertexWriter::set_column(name);
   GeomVertexWriter::set_column(name);
-  return GeomVertexReader::set_column(name);
+  return GeomVertexReader::set_column(MOVE(name));
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////

+ 4 - 6
panda/src/gobj/geomVertexRewriter.h

@@ -41,11 +41,10 @@ PUBLISHED:
   INLINE GeomVertexRewriter(Thread *current_thread = Thread::get_current_thread());
   INLINE GeomVertexRewriter(Thread *current_thread = Thread::get_current_thread());
   INLINE GeomVertexRewriter(GeomVertexData *vertex_data, Thread *current_thread = Thread::get_current_thread());
   INLINE GeomVertexRewriter(GeomVertexData *vertex_data, Thread *current_thread = Thread::get_current_thread());
   INLINE GeomVertexRewriter(GeomVertexData *vertex_data,
   INLINE GeomVertexRewriter(GeomVertexData *vertex_data,
-                            const string &name, Thread *current_thread = Thread::get_current_thread());
-  INLINE GeomVertexRewriter(GeomVertexData *vertex_data,
-                            const InternalName *name, Thread *current_thread = Thread::get_current_thread());
+                            CPT_InternalName name,
+                            Thread *current_thread = Thread::get_current_thread());
   INLINE GeomVertexRewriter(GeomVertexArrayData *array_data, Thread *current_thread = Thread::get_current_thread());
   INLINE GeomVertexRewriter(GeomVertexArrayData *array_data, Thread *current_thread = Thread::get_current_thread());
-  INLINE GeomVertexRewriter(GeomVertexArrayData *array_data, 
+  INLINE GeomVertexRewriter(GeomVertexArrayData *array_data,
                             int column, Thread *current_thread = Thread::get_current_thread());
                             int column, Thread *current_thread = Thread::get_current_thread());
   INLINE GeomVertexRewriter(const GeomVertexRewriter &copy);
   INLINE GeomVertexRewriter(const GeomVertexRewriter &copy);
   INLINE void operator = (const GeomVertexRewriter &copy);
   INLINE void operator = (const GeomVertexRewriter &copy);
@@ -58,8 +57,7 @@ PUBLISHED:
   INLINE Thread *get_current_thread() const;
   INLINE Thread *get_current_thread() const;
 
 
   INLINE bool set_column(int column);
   INLINE bool set_column(int column);
-  INLINE bool set_column(const string &name);
-  INLINE bool set_column(const InternalName *name);
+  INLINE bool set_column(CPT_InternalName name);
   INLINE bool set_column(int array, const GeomVertexColumn *column);
   INLINE bool set_column(int array, const GeomVertexColumn *column);
 
 
   INLINE void clear();
   INLINE void clear();

+ 6 - 41
panda/src/gobj/geomVertexWriter.I

@@ -51,30 +51,13 @@ GeomVertexWriter(GeomVertexData *vertex_data, Thread *current_thread) :
 //               writer specifically to process the named data type.
 //               writer specifically to process the named data type.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE GeomVertexWriter::
 INLINE GeomVertexWriter::
-GeomVertexWriter(GeomVertexData *vertex_data, const string &name,
+GeomVertexWriter(GeomVertexData *vertex_data, CPT_InternalName name,
                  Thread *current_thread) :
                  Thread *current_thread) :
   _vertex_data(vertex_data),
   _vertex_data(vertex_data),
   _current_thread(current_thread)
   _current_thread(current_thread)
 {
 {
   initialize();
   initialize();
-  set_column(name);
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: GeomVertexWriter::Constructor
-//       Access: Published
-//  Description: Constructs a new writer to process the vertices of
-//               the indicated data object.  This flavor creates the
-//               writer specifically to process the named data type.
-////////////////////////////////////////////////////////////////////
-INLINE GeomVertexWriter::
-GeomVertexWriter(GeomVertexData *vertex_data, const InternalName *name,
-                 Thread *current_thread) :
-  _vertex_data(vertex_data),
-  _current_thread(current_thread)
-{
-  initialize();
-  set_column(name);
+  set_column(MOVE(name));
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -131,7 +114,7 @@ GeomVertexWriter(GeomVertexDataPipelineWriter *data_writer,
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexWriter::Copy Constructor
 //     Function: GeomVertexWriter::Copy Constructor
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE GeomVertexWriter::
 INLINE GeomVertexWriter::
 GeomVertexWriter(const GeomVertexWriter &copy) :
 GeomVertexWriter(const GeomVertexWriter &copy) :
@@ -152,7 +135,7 @@ GeomVertexWriter(const GeomVertexWriter &copy) :
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexWriter::Copy Assignment Operator
 //     Function: GeomVertexWriter::Copy Assignment Operator
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE void GeomVertexWriter::
 INLINE void GeomVertexWriter::
 operator = (const GeomVertexWriter &copy) {
 operator = (const GeomVertexWriter &copy) {
@@ -172,7 +155,7 @@ operator = (const GeomVertexWriter &copy) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexWriter::Destructor
 //     Function: GeomVertexWriter::Destructor
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE GeomVertexWriter::
 INLINE GeomVertexWriter::
 ~GeomVertexWriter() {
 ~GeomVertexWriter() {
@@ -268,24 +251,6 @@ set_column(int column) {
   return false;
   return false;
 }
 }
 
 
-////////////////////////////////////////////////////////////////////
-//     Function: GeomVertexWriter::set_column
-//       Access: Published
-//  Description: Sets up the writer to use the data type with the
-//               indicated name.
-//
-//               This also resets the write row number to the start
-//               row (the same value passed to a previous call to
-//               set_row(), or 0 if set_row() was never called.)
-//
-//               The return value is true if the data type is valid,
-//               false otherwise.
-////////////////////////////////////////////////////////////////////
-INLINE bool GeomVertexWriter::
-set_column(const string &name) {
-  return set_column(InternalName::make(name));
-}
-
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GeomVertexWriter::set_column
 //     Function: GeomVertexWriter::set_column
 //       Access: Published
 //       Access: Published
@@ -300,7 +265,7 @@ set_column(const string &name) {
 //               false otherwise.
 //               false otherwise.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE bool GeomVertexWriter::
 INLINE bool GeomVertexWriter::
-set_column(const InternalName *name) {
+set_column(CPT_InternalName name) {
   if (_vertex_data != (GeomVertexData *)NULL) {
   if (_vertex_data != (GeomVertexData *)NULL) {
     GeomVertexDataPipelineWriter writer(_vertex_data, true, _current_thread);
     GeomVertexDataPipelineWriter writer(_vertex_data, true, _current_thread);
     writer.check_array_writers();
     writer.check_array_writers();

+ 5 - 9
panda/src/gobj/geomVertexWriter.h

@@ -26,7 +26,7 @@
 //       Class : GeomVertexWriter
 //       Class : GeomVertexWriter
 // Description : This object provides a high-level interface for
 // Description : This object provides a high-level interface for
 //               quickly writing a sequence of numeric values from a
 //               quickly writing a sequence of numeric values from a
-//               vertex table. 
+//               vertex table.
 //
 //
 //               This object can be used both to replace existing
 //               This object can be used both to replace existing
 //               vertices in the table, or to extend the table with
 //               vertices in the table, or to extend the table with
@@ -72,14 +72,11 @@ PUBLISHED:
   INLINE GeomVertexWriter(GeomVertexData *vertex_data,
   INLINE GeomVertexWriter(GeomVertexData *vertex_data,
                           Thread *current_thread = Thread::get_current_thread());
                           Thread *current_thread = Thread::get_current_thread());
   INLINE GeomVertexWriter(GeomVertexData *vertex_data,
   INLINE GeomVertexWriter(GeomVertexData *vertex_data,
-                          const string &name,
-                          Thread *current_thread = Thread::get_current_thread());
-  INLINE GeomVertexWriter(GeomVertexData *vertex_data,
-                          const InternalName *name,
+                          CPT_InternalName name,
                           Thread *current_thread = Thread::get_current_thread());
                           Thread *current_thread = Thread::get_current_thread());
   INLINE GeomVertexWriter(GeomVertexArrayData *array_data,
   INLINE GeomVertexWriter(GeomVertexArrayData *array_data,
                           Thread *current_thread = Thread::get_current_thread());
                           Thread *current_thread = Thread::get_current_thread());
-  INLINE GeomVertexWriter(GeomVertexArrayData *array_data, 
+  INLINE GeomVertexWriter(GeomVertexArrayData *array_data,
                           int column,
                           int column,
                           Thread *current_thread = Thread::get_current_thread());
                           Thread *current_thread = Thread::get_current_thread());
 
 
@@ -99,8 +96,7 @@ PUBLISHED:
   INLINE Thread *get_current_thread() const;
   INLINE Thread *get_current_thread() const;
 
 
   INLINE bool set_column(int column);
   INLINE bool set_column(int column);
-  INLINE bool set_column(const string &name);
-  INLINE bool set_column(const InternalName *name);
+  INLINE bool set_column(CPT_InternalName name);
   bool set_column(int array, const GeomVertexColumn *column);
   bool set_column(int array, const GeomVertexColumn *column);
   INLINE void clear();
   INLINE void clear();
   bool reserve_num_rows(int num_rows);
   bool reserve_num_rows(int num_rows);
@@ -225,7 +221,7 @@ private:
   PT(GeomVertexData) _vertex_data;
   PT(GeomVertexData) _vertex_data;
   int _array;
   int _array;
   PT(GeomVertexArrayData) _array_data;
   PT(GeomVertexArrayData) _array_data;
-    
+
   Thread *_current_thread;
   Thread *_current_thread;
   GeomVertexColumn::Packer *_packer;
   GeomVertexColumn::Packer *_packer;
   int _stride;
   int _stride;

+ 168 - 2
panda/src/gobj/internalName.I

@@ -12,9 +12,10 @@
 //
 //
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 
 
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: InternalName::make
 //     Function: InternalName::make
-//       Access: Published, Static
+//       Access: Public, Static
 //  Description: The public interface for constructing an InternalName
 //  Description: The public interface for constructing an InternalName
 //               pointer.  This will return a new InternalName
 //               pointer.  This will return a new InternalName
 //               representing the indicated name, if this is the first
 //               representing the indicated name, if this is the first
@@ -32,6 +33,34 @@ make(const string &name) {
   return get_root()->append(name);
   return get_root()->append(name);
 }
 }
 
 
+////////////////////////////////////////////////////////////////////
+//     Function: InternalName::make
+//       Access: Public, Static
+//  Description: This version of make() is defined such as to accept
+//               mostly string literals, which may be string pooled
+//               by the compiler.  This allows us to make an
+//               additional optimization.
+//
+//               This constructor is also used for fixed-size arrays,
+//               since there is no neat way to catch string literals
+//               only.  Presumably people aren't using InternalName
+//               in that way.
+////////////////////////////////////////////////////////////////////
+template<int N>
+INLINE PT(InternalName) InternalName::
+make(const char (&literal)[N]) {
+  LightMutexHolder holder(_literal_table_lock);
+  LiteralTable::const_iterator it = _literal_table.find(literal);
+
+  if (it == _literal_table.end()) {
+    PT(InternalName) name = get_root()->append(literal);
+    _literal_table.insert(LiteralTable::value_type(literal, name));
+    return name;
+  } else {
+    return it->second;
+  }
+}
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: InternalName::get_parent
 //     Function: InternalName::get_parent
 //       Access: Published
 //       Access: Published
@@ -430,10 +459,147 @@ get_view() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: InternalName::output operator
 //     Function: InternalName::output operator
 //       Access: Public
 //       Access: Public
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ostream &
 INLINE ostream &
 operator << (ostream &out, const InternalName &tcn) {
 operator << (ostream &out, const InternalName &tcn) {
   tcn.output(out);
   tcn.output(out);
   return out;
   return out;
 }
 }
+
+#ifndef CPPPARSER
+////////////////////////////////////////////////////////////////////
+//     Function: CPT_InternalName::Constructor
+//       Access: Public
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT_InternalName::
+CPT_InternalName(const InternalName *ptr) :
+  ConstPointerTo<InternalName>(ptr)
+{
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: CPT_InternalName::Copy Constructor
+//       Access: Public
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT_InternalName::
+CPT_InternalName(const PointerTo<InternalName> &copy) :
+  ConstPointerTo<InternalName>(copy)
+{
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: CPT_InternalName::Copy Constructor
+//       Access: Public
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT_InternalName::
+CPT_InternalName(const ConstPointerTo<InternalName> &copy) :
+  ConstPointerTo<InternalName>(copy)
+{
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: CPT_InternalName::Conversion Constructor
+//       Access: Public
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT_InternalName::
+CPT_InternalName(const string &name) :
+  ConstPointerTo<InternalName>(InternalName::make(name))
+{
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: CPT_InternalName::Conversion Constructor
+//       Access: Public
+//  Description:
+////////////////////////////////////////////////////////////////////
+template<int N>
+INLINE CPT_InternalName::
+CPT_InternalName(const char (&literal)[N]) :
+  ConstPointerTo<InternalName>(InternalName::make(literal))
+{
+}
+
+#ifdef USE_MOVE_SEMANTICS
+////////////////////////////////////////////////////////////////////
+//     Function: CPT_InternalName::Move Constructor
+//       Access: Public
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT_InternalName::
+CPT_InternalName(PointerTo<InternalName> &&from) NOEXCEPT :
+  ConstPointerTo<InternalName>(move(from))
+{
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: CPT_InternalName::Move Constructor
+//       Access: Public
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT_InternalName::
+CPT_InternalName(ConstPointerTo<InternalName> &&from) NOEXCEPT :
+  ConstPointerTo<InternalName>(move(from))
+{
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: CPT_InternalName::Move Assignment Operator
+//       Access: Public
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT_InternalName &CPT_InternalName::
+operator = (PointerTo<InternalName> &&from) NOEXCEPT {
+  this->reassign(move(from));
+  return *this;
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: CPT_InternalName::Move Assignment Operator
+//       Access: Public
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT_InternalName &CPT_InternalName::
+operator = (ConstPointerTo<InternalName> &&from) NOEXCEPT {
+  this->reassign(move(from));
+  return *this;
+}
+#endif  // USE_MOVE_SEMANTICS
+
+////////////////////////////////////////////////////////////////////
+//     Function: CPT_InternalName::Assignment operator
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT_InternalName &CPT_InternalName::
+operator = (const To *ptr) {
+  this->reassign((To *)ptr);
+  return *this;
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: CPT_InternalName::Assignment operator
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT_InternalName &CPT_InternalName::
+operator = (const PointerTo<InternalName> &copy) {
+  this->reassign((const ConstPointerTo<InternalName> &)copy);
+  return *this;
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: CPT_InternalName::Assignment operator
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT_InternalName &CPT_InternalName::
+operator = (const ConstPointerTo<InternalName> &copy) {
+  this->reassign((const ConstPointerTo<InternalName> &)copy);
+  return *this;
+}
+#endif  // CPPPARSER

+ 8 - 5
panda/src/gobj/internalName.cxx

@@ -47,6 +47,9 @@ TypeHandle InternalName::_texcoord_type_handle;
 InternalName::PyInternTable InternalName::_py_intern_table;
 InternalName::PyInternTable InternalName::_py_intern_table;
 #endif
 #endif
 
 
+InternalName::LiteralTable InternalName::_literal_table;
+LightMutex InternalName::_literal_table_lock;
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: InternalName::Constructor
 //     Function: InternalName::Constructor
 //       Access: Private
 //       Access: Private
@@ -225,7 +228,7 @@ get_ancestor(int n) const {
 
 
   } else {
   } else {
     return get_root();
     return get_root();
-  } 
+  }
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -267,13 +270,13 @@ get_net_basename(int n) const {
 
 
   } else {
   } else {
     return _basename;
     return _basename;
-  } 
+  }
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: InternalName::output
 //     Function: InternalName::output
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void InternalName::
 void InternalName::
 output(ostream &out) const {
 output(ostream &out) const {
@@ -366,7 +369,7 @@ make_from_bam(const FactoryParams &params) {
   // it later.
   // it later.
   me->ref();
   me->ref();
   manager->register_finalize(me);
   manager->register_finalize(me);
-  
+
   return me.p();
   return me.p();
 }
 }
 
 
@@ -393,7 +396,7 @@ make_texcoord_from_bam(const FactoryParams &params) {
 
 
   me->ref();
   me->ref();
   manager->register_finalize(me);
   manager->register_finalize(me);
-  
+
   return me.p();
   return me.p();
 }
 }
 
 

+ 51 - 2
panda/src/gobj/internalName.h

@@ -21,6 +21,7 @@
 #include "pointerTo.h"
 #include "pointerTo.h"
 #include "pmap.h"
 #include "pmap.h"
 #include "lightMutex.h"
 #include "lightMutex.h"
+#include "lightMutexHolder.h"
 
 
 class FactoryParams;
 class FactoryParams;
 
 
@@ -39,13 +40,16 @@ class FactoryParams;
 //               one or more other names, or by giving it a source
 //               one or more other names, or by giving it a source
 //               string directly.
 //               string directly.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
-class EXPCL_PANDA_GOBJ InternalName : public TypedWritableReferenceCount {
+class EXPCL_PANDA_GOBJ InternalName FINAL : public TypedWritableReferenceCount {
 private:
 private:
   InternalName(InternalName *parent, const string &basename);
   InternalName(InternalName *parent, const string &basename);
 
 
 public:
 public:
   INLINE static PT(InternalName) make(const string &name);
   INLINE static PT(InternalName) make(const string &name);
 
 
+  template<int N>
+  INLINE static PT(InternalName) make(const char (&literal)[N]);
+
 PUBLISHED:
 PUBLISHED:
   virtual ~InternalName();
   virtual ~InternalName();
   virtual bool unref() const;
   virtual bool unref() const;
@@ -91,6 +95,8 @@ PUBLISHED:
   INLINE static PT(InternalName) get_view();
   INLINE static PT(InternalName) get_view();
 
 
 #ifdef HAVE_PYTHON
 #ifdef HAVE_PYTHON
+  // These versions are exposed to Python, which have additional logic
+  // to map from Python interned strings.
 #if PY_MAJOR_VERSION >= 3
 #if PY_MAJOR_VERSION >= 3
   EXTENSION(static PT(InternalName) make(PyUnicodeObject *str));
   EXTENSION(static PT(InternalName) make(PyUnicodeObject *str));
 #else
 #else
@@ -114,6 +120,10 @@ private:
   NameTable _name_table;
   NameTable _name_table;
   LightMutex _name_table_lock;
   LightMutex _name_table_lock;
 
 
+  typedef phash_map<const char *, PT(InternalName), pointer_hash> LiteralTable;
+  static LiteralTable _literal_table;
+  static LightMutex _literal_table_lock;
+
   static PT(InternalName) _root;
   static PT(InternalName) _root;
   static PT(InternalName) _error;
   static PT(InternalName) _error;
   static PT(InternalName) _default;
   static PT(InternalName) _default;
@@ -171,7 +181,46 @@ private:
 
 
 INLINE ostream &operator << (ostream &out, const InternalName &tcn);
 INLINE ostream &operator << (ostream &out, const InternalName &tcn);
 
 
+////////////////////////////////////////////////////////////////////
+//       Class : CPT_InternalName
+// Description : This is a const pointer to an InternalName, and
+//               should be used in lieu of a CPT(InternalName) in
+//               function arguments.  The extra feature that it
+//               offers is that it has a constructor to automatically
+//               convert from a string, so that strings are coerced
+//               by the compiler when passed to such a function.
+////////////////////////////////////////////////////////////////////
+#ifdef CPPPARSER
+// This construct confuses interrogate, so we give it a typedef.
+typedef const InternalName *CPT_InternalName;
+#else
+class CPT_InternalName : public ConstPointerTo<InternalName> {
+public:
+  INLINE CPT_InternalName(const To *ptr = (const To *)NULL);
+  INLINE CPT_InternalName(const PointerTo<InternalName> &copy);
+  INLINE CPT_InternalName(const ConstPointerTo<InternalName> &copy);
+  INLINE CPT_InternalName(const string &name);
+
+  template<int N>
+  INLINE CPT_InternalName(const char (&literal)[N]);
+
+#ifdef USE_MOVE_SEMANTICS
+  INLINE CPT_InternalName(PointerTo<InternalName> &&from) NOEXCEPT;
+  INLINE CPT_InternalName(ConstPointerTo<InternalName> &&from) NOEXCEPT;
+  INLINE CPT_InternalName &operator = (PointerTo<InternalName> &&from) NOEXCEPT;
+  INLINE CPT_InternalName &operator = (ConstPointerTo<InternalName> &&from) NOEXCEPT;
+#endif  // USE_MOVE_SEMANTICS
+
+  INLINE CPT_InternalName &operator = (const To *ptr);
+  INLINE CPT_InternalName &operator = (const PointerTo<InternalName> &copy);
+  INLINE CPT_InternalName &operator = (const ConstPointerTo<InternalName> &copy);
+};
+
+INLINE void swap(CPT_InternalName &one, CPT_InternalName &two) NOEXCEPT {
+  one.swap(two);
+}
+#endif  // CPPPARSER
+
 #include "internalName.I"
 #include "internalName.I"
 
 
 #endif
 #endif
-

+ 7 - 7
panda/src/pgraph/internalNameCollection.cxx

@@ -52,7 +52,7 @@ operator = (const InternalNameCollection &copy) {
 //  Description: Adds a new InternalName to the collection.
 //  Description: Adds a new InternalName to the collection.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void InternalNameCollection::
 void InternalNameCollection::
-add_name(InternalName *name) {
+add_name(const InternalName *name) {
   // If the pointer to our internal array is shared by any other
   // If the pointer to our internal array is shared by any other
   // InternalNameCollections, we have to copy the array now so we won't
   // InternalNameCollections, we have to copy the array now so we won't
   // inadvertently modify any of our brethren InternalNameCollection
   // inadvertently modify any of our brethren InternalNameCollection
@@ -75,7 +75,7 @@ add_name(InternalName *name) {
 //               not a member of the collection.
 //               not a member of the collection.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 bool InternalNameCollection::
 bool InternalNameCollection::
-remove_name(InternalName *name) {
+remove_name(const InternalName *name) {
   int name_index = -1;
   int name_index = -1;
   for (int i = 0; name_index == -1 && i < (int)_names.size(); i++) {
   for (int i = 0; name_index == -1 && i < (int)_names.size(); i++) {
     if (_names[i] == name) {
     if (_names[i] == name) {
@@ -131,7 +131,7 @@ remove_names_from(const InternalNameCollection &other) {
   InternalNames new_names;
   InternalNames new_names;
   int num_names = get_num_names();
   int num_names = get_num_names();
   for (int i = 0; i < num_names; i++) {
   for (int i = 0; i < num_names; i++) {
-    PT(InternalName) name = get_name(i);
+    const InternalName *name = get_name(i);
     if (!other.has_name(name)) {
     if (!other.has_name(name)) {
       new_names.push_back(name);
       new_names.push_back(name);
     }
     }
@@ -153,7 +153,7 @@ remove_duplicate_names() {
 
 
   int num_names = get_num_names();
   int num_names = get_num_names();
   for (int i = 0; i < num_names; i++) {
   for (int i = 0; i < num_names; i++) {
-    PT(InternalName) name = get_name(i);
+    const InternalName *name = get_name(i);
     bool duplicated = false;
     bool duplicated = false;
 
 
     for (int j = 0; j < i && !duplicated; j++) {
     for (int j = 0; j < i && !duplicated; j++) {
@@ -175,7 +175,7 @@ remove_duplicate_names() {
 //               this collection, false otherwise.
 //               this collection, false otherwise.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 bool InternalNameCollection::
 bool InternalNameCollection::
-has_name(InternalName *name) const {
+has_name(const InternalName *name) const {
   for (int i = 0; i < get_num_names(); i++) {
   for (int i = 0; i < get_num_names(); i++) {
     if (name == get_name(i)) {
     if (name == get_name(i)) {
       return true;
       return true;
@@ -209,7 +209,7 @@ get_num_names() const {
 //       Access: Published
 //       Access: Published
 //  Description: Returns the nth InternalName in the collection.
 //  Description: Returns the nth InternalName in the collection.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
-InternalName *InternalNameCollection::
+const InternalName *InternalNameCollection::
 get_name(int index) const {
 get_name(int index) const {
   nassertr(index >= 0 && index < (int)_names.size(), NULL);
   nassertr(index >= 0 && index < (int)_names.size(), NULL);
 
 
@@ -223,7 +223,7 @@ get_name(int index) const {
 //               the same as get_name(), but it may be a more
 //               the same as get_name(), but it may be a more
 //               convenient way to access it.
 //               convenient way to access it.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
-InternalName *InternalNameCollection::
+const InternalName *InternalNameCollection::
 operator [] (int index) const {
 operator [] (int index) const {
   nassertr(index >= 0 && index < (int)_names.size(), NULL);
   nassertr(index >= 0 && index < (int)_names.size(), NULL);
 
 

+ 7 - 7
panda/src/pgraph/internalNameCollection.h

@@ -21,7 +21,7 @@
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //       Class : InternalNameCollection
 //       Class : InternalNameCollection
-// Description : 
+// Description :
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 class EXPCL_PANDA_PGRAPH InternalNameCollection {
 class EXPCL_PANDA_PGRAPH InternalNameCollection {
 PUBLISHED:
 PUBLISHED:
@@ -30,18 +30,18 @@ PUBLISHED:
   void operator = (const InternalNameCollection &copy);
   void operator = (const InternalNameCollection &copy);
   INLINE ~InternalNameCollection();
   INLINE ~InternalNameCollection();
 
 
-  void add_name(InternalName *name);
-  bool remove_name(InternalName *name);
+  void add_name(const InternalName *name);
+  bool remove_name(const InternalName *name);
   void add_names_from(const InternalNameCollection &other);
   void add_names_from(const InternalNameCollection &other);
   void remove_names_from(const InternalNameCollection &other);
   void remove_names_from(const InternalNameCollection &other);
   void remove_duplicate_names();
   void remove_duplicate_names();
-  bool has_name(InternalName *name) const;
+  bool has_name(const InternalName *name) const;
   void clear();
   void clear();
 
 
   int get_num_names() const;
   int get_num_names() const;
-  InternalName *get_name(int index) const;
+  const InternalName *get_name(int index) const;
   MAKE_SEQ(get_names, get_num_names, get_name);
   MAKE_SEQ(get_names, get_num_names, get_name);
-  InternalName *operator [] (int index) const;
+  const InternalName *operator [] (int index) const;
   int size() const;
   int size() const;
   INLINE void operator += (const InternalNameCollection &other);
   INLINE void operator += (const InternalNameCollection &other);
   INLINE InternalNameCollection operator + (const InternalNameCollection &other) const;
   INLINE InternalNameCollection operator + (const InternalNameCollection &other) const;
@@ -50,7 +50,7 @@ PUBLISHED:
   void write(ostream &out, int indent_level = 0) const;
   void write(ostream &out, int indent_level = 0) const;
 
 
 private:
 private:
-  typedef PTA(PT(InternalName)) InternalNames;
+  typedef PTA(CPT(InternalName)) InternalNames;
   InternalNames _names;
   InternalNames _names;
 };
 };
 
 

+ 267 - 15
panda/src/pgraph/nodePath.I

@@ -279,7 +279,7 @@ node() const {
 //  Description: Returns an integer that is guaranteed to be the same
 //  Description: Returns an integer that is guaranteed to be the same
 //               for all NodePaths that represent the same node
 //               for all NodePaths that represent the same node
 //               instance, and different for all NodePaths that
 //               instance, and different for all NodePaths that
-//               represent a different node instance.  
+//               represent a different node instance.
 //
 //
 //               The same key will be returned for a particular
 //               The same key will be returned for a particular
 //               instance as long as at least one NodePath exists that
 //               instance as long as at least one NodePath exists that
@@ -1313,6 +1313,258 @@ get_sa() const {
   return get_color_scale()[3];
   return get_color_scale()[3];
 }
 }
 
 
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const PTA_float &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const PTA_double &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const PTA_int &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const PTA_LVecBase4 &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const PTA_LVecBase3 &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const PTA_LVecBase2 &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const LVecBase4 &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const LVecBase3 &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const LVecBase2 &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const PTA_LVecBase4i &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const PTA_LVecBase3i &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const PTA_LVecBase2i &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const LVecBase4i &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const LVecBase3i &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const LVecBase2i &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const PTA_LMatrix4 &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const PTA_LMatrix3 &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const LMatrix4 &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const LMatrix3 &v, int priority) {
+  set_shader_input(new ShaderInput(id, v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, Texture *tex, int priority) {
+  set_shader_input(new ShaderInput(id, tex, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, Texture *tex, const SamplerState &sampler, int priority) {
+  set_shader_input(new ShaderInput(id, tex, sampler, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, Texture *tex, bool read, bool write, int z, int n, int priority) {
+  set_shader_input(new ShaderInput(id, tex, read, write, z, n, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, const NodePath &np, int priority) {
+  set_shader_input(new ShaderInput(id, np, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, int n1, int n2, int n3, int n4, int priority) {
+  set_shader_input(new ShaderInput(id, LVecBase4i(n1, n2, n3, n4), priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: NodePath::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE void NodePath::
+set_shader_input(CPT_InternalName id, PN_stdfloat n1, PN_stdfloat n2, PN_stdfloat n3, PN_stdfloat n4, int priority) {
+  set_shader_input(new ShaderInput(id, LVecBase4(n1, n2, n3, n4), priority));
+}
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: NodePath::set_tex_offset
 //     Function: NodePath::set_tex_offset
 //       Access: Published
 //       Access: Published
@@ -1339,7 +1591,7 @@ set_tex_offset(TextureStage *stage, PN_stdfloat u, PN_stdfloat v) {
 INLINE void NodePath::
 INLINE void NodePath::
 set_tex_offset(TextureStage *stage, const LVecBase2 &uv) {
 set_tex_offset(TextureStage *stage, const LVecBase2 &uv) {
   nassertv_always(!is_empty());
   nassertv_always(!is_empty());
-  set_tex_transform(stage, 
+  set_tex_transform(stage,
                     get_tex_transform(stage)->set_pos2d(uv));
                     get_tex_transform(stage)->set_pos2d(uv));
 }
 }
 
 
@@ -1356,7 +1608,7 @@ set_tex_offset(TextureStage *stage, const LVecBase2 &uv) {
 INLINE void NodePath::
 INLINE void NodePath::
 set_tex_rotate(TextureStage *stage, PN_stdfloat r) {
 set_tex_rotate(TextureStage *stage, PN_stdfloat r) {
   nassertv_always(!is_empty());
   nassertv_always(!is_empty());
-  set_tex_transform(stage, 
+  set_tex_transform(stage,
                     get_tex_transform(stage)->set_rotate2d(r));
                     get_tex_transform(stage)->set_rotate2d(r));
 }
 }
 
 
@@ -1372,7 +1624,7 @@ set_tex_rotate(TextureStage *stage, PN_stdfloat r) {
 INLINE void NodePath::
 INLINE void NodePath::
 set_tex_scale(TextureStage *stage, PN_stdfloat scale) {
 set_tex_scale(TextureStage *stage, PN_stdfloat scale) {
   nassertv_always(!is_empty());
   nassertv_always(!is_empty());
-  set_tex_transform(stage, 
+  set_tex_transform(stage,
                     get_tex_transform(stage)->set_scale(scale));
                     get_tex_transform(stage)->set_scale(scale));
 }
 }
 
 
@@ -1402,7 +1654,7 @@ set_tex_scale(TextureStage *stage, PN_stdfloat su, PN_stdfloat sv) {
 INLINE void NodePath::
 INLINE void NodePath::
 set_tex_scale(TextureStage *stage, const LVecBase2 &scale) {
 set_tex_scale(TextureStage *stage, const LVecBase2 &scale) {
   nassertv_always(!is_empty());
   nassertv_always(!is_empty());
-  set_tex_transform(stage, 
+  set_tex_transform(stage,
                     get_tex_transform(stage)->set_scale2d(scale));
                     get_tex_transform(stage)->set_scale2d(scale));
 }
 }
 
 
@@ -1475,7 +1727,7 @@ set_tex_pos(TextureStage *stage, PN_stdfloat u, PN_stdfloat v, PN_stdfloat w) {
 INLINE void NodePath::
 INLINE void NodePath::
 set_tex_pos(TextureStage *stage, const LVecBase3 &uvw) {
 set_tex_pos(TextureStage *stage, const LVecBase3 &uvw) {
   nassertv_always(!is_empty());
   nassertv_always(!is_empty());
-  set_tex_transform(stage, 
+  set_tex_transform(stage,
                     get_tex_transform(stage)->set_pos(uvw));
                     get_tex_transform(stage)->set_pos(uvw));
 }
 }
 
 
@@ -1505,7 +1757,7 @@ set_tex_hpr(TextureStage *stage, PN_stdfloat h, PN_stdfloat p, PN_stdfloat r) {
 INLINE void NodePath::
 INLINE void NodePath::
 set_tex_hpr(TextureStage *stage, const LVecBase3 &hpr) {
 set_tex_hpr(TextureStage *stage, const LVecBase3 &hpr) {
   nassertv_always(!is_empty());
   nassertv_always(!is_empty());
-  set_tex_transform(stage, 
+  set_tex_transform(stage,
                     get_tex_transform(stage)->set_hpr(hpr));
                     get_tex_transform(stage)->set_hpr(hpr));
 }
 }
 
 
@@ -1533,7 +1785,7 @@ set_tex_scale(TextureStage *stage, PN_stdfloat su, PN_stdfloat sv, PN_stdfloat s
 INLINE void NodePath::
 INLINE void NodePath::
 set_tex_scale(TextureStage *stage, const LVecBase3 &scale) {
 set_tex_scale(TextureStage *stage, const LVecBase3 &scale) {
   nassertv_always(!is_empty());
   nassertv_always(!is_empty());
-  set_tex_transform(stage, 
+  set_tex_transform(stage,
                     get_tex_transform(stage)->set_scale(scale));
                     get_tex_transform(stage)->set_scale(scale));
 }
 }
 
 
@@ -1605,7 +1857,7 @@ set_tex_offset(const NodePath &other, TextureStage *stage, PN_stdfloat u, PN_std
 INLINE void NodePath::
 INLINE void NodePath::
 set_tex_offset(const NodePath &other, TextureStage *stage, const LVecBase2 &uv) {
 set_tex_offset(const NodePath &other, TextureStage *stage, const LVecBase2 &uv) {
   nassertv_always(!is_empty());
   nassertv_always(!is_empty());
-  set_tex_transform(other, stage, 
+  set_tex_transform(other, stage,
                     get_tex_transform(other, stage)->set_pos2d(uv));
                     get_tex_transform(other, stage)->set_pos2d(uv));
 }
 }
 
 
@@ -1622,7 +1874,7 @@ set_tex_offset(const NodePath &other, TextureStage *stage, const LVecBase2 &uv)
 INLINE void NodePath::
 INLINE void NodePath::
 set_tex_rotate(const NodePath &other, TextureStage *stage, PN_stdfloat r) {
 set_tex_rotate(const NodePath &other, TextureStage *stage, PN_stdfloat r) {
   nassertv_always(!is_empty());
   nassertv_always(!is_empty());
-  set_tex_transform(other, stage, 
+  set_tex_transform(other, stage,
                     get_tex_transform(other, stage)->set_rotate2d(r));
                     get_tex_transform(other, stage)->set_rotate2d(r));
 }
 }
 
 
@@ -1638,7 +1890,7 @@ set_tex_rotate(const NodePath &other, TextureStage *stage, PN_stdfloat r) {
 INLINE void NodePath::
 INLINE void NodePath::
 set_tex_scale(const NodePath &other, TextureStage *stage, PN_stdfloat scale) {
 set_tex_scale(const NodePath &other, TextureStage *stage, PN_stdfloat scale) {
   nassertv_always(!is_empty());
   nassertv_always(!is_empty());
-  set_tex_transform(other, stage, 
+  set_tex_transform(other, stage,
                     get_tex_transform(stage)->set_scale(scale));
                     get_tex_transform(stage)->set_scale(scale));
 }
 }
 
 
@@ -1668,7 +1920,7 @@ set_tex_scale(const NodePath &other, TextureStage *stage, PN_stdfloat su, PN_std
 INLINE void NodePath::
 INLINE void NodePath::
 set_tex_scale(const NodePath &other, TextureStage *stage, const LVecBase2 &scale) {
 set_tex_scale(const NodePath &other, TextureStage *stage, const LVecBase2 &scale) {
   nassertv_always(!is_empty());
   nassertv_always(!is_empty());
-  set_tex_transform(other, stage, 
+  set_tex_transform(other, stage,
                     get_tex_transform(stage)->set_scale2d(scale));
                     get_tex_transform(stage)->set_scale2d(scale));
 }
 }
 
 
@@ -1741,7 +1993,7 @@ set_tex_pos(const NodePath &other, TextureStage *stage, PN_stdfloat u, PN_stdflo
 INLINE void NodePath::
 INLINE void NodePath::
 set_tex_pos(const NodePath &other, TextureStage *stage, const LVecBase3 &uvw) {
 set_tex_pos(const NodePath &other, TextureStage *stage, const LVecBase3 &uvw) {
   nassertv_always(!is_empty());
   nassertv_always(!is_empty());
-  set_tex_transform(other, stage, 
+  set_tex_transform(other, stage,
                     get_tex_transform(stage)->set_pos(uvw));
                     get_tex_transform(stage)->set_pos(uvw));
 }
 }
 
 
@@ -1771,7 +2023,7 @@ set_tex_hpr(const NodePath &other, TextureStage *stage, PN_stdfloat h, PN_stdflo
 INLINE void NodePath::
 INLINE void NodePath::
 set_tex_hpr(const NodePath &other, TextureStage *stage, const LVecBase3 &hpr) {
 set_tex_hpr(const NodePath &other, TextureStage *stage, const LVecBase3 &hpr) {
   nassertv_always(!is_empty());
   nassertv_always(!is_empty());
-  set_tex_transform(other, stage, 
+  set_tex_transform(other, stage,
                     get_tex_transform(stage)->set_hpr(hpr));
                     get_tex_transform(stage)->set_hpr(hpr));
 }
 }
 
 
@@ -1799,7 +2051,7 @@ set_tex_scale(const NodePath &other, TextureStage *stage, PN_stdfloat su, PN_std
 INLINE void NodePath::
 INLINE void NodePath::
 set_tex_scale(const NodePath &other, TextureStage *stage, const LVecBase3 &scale) {
 set_tex_scale(const NodePath &other, TextureStage *stage, const LVecBase3 &scale) {
   nassertv_always(!is_empty());
   nassertv_always(!is_empty());
-  set_tex_transform(other, stage, 
+  set_tex_transform(other, stage,
                     get_tex_transform(stage)->set_scale(scale));
                     get_tex_transform(stage)->set_scale(scale));
 }
 }
 
 

+ 5 - 258
panda/src/pgraph/nodePath.cxx

@@ -3842,7 +3842,7 @@ set_shader_input(const ShaderInput *inp) {
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 const ShaderInput *NodePath::
 const ShaderInput *NodePath::
-get_shader_input(const InternalName *id) const {
+get_shader_input(CPT_InternalName id) const {
   nassertr_always(!is_empty(), NULL);
   nassertr_always(!is_empty(), NULL);
 
 
   const RenderAttrib *attrib =
   const RenderAttrib *attrib =
@@ -3881,7 +3881,7 @@ get_instance_count() const {
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void NodePath::
 void NodePath::
-clear_shader_input(const InternalName *id) {
+clear_shader_input(CPT_InternalName id) {
   nassertv_always(!is_empty());
   nassertv_always(!is_empty());
 
 
   const RenderAttrib *attrib =
   const RenderAttrib *attrib =
@@ -3892,259 +3892,6 @@ clear_shader_input(const InternalName *id) {
   }
   }
 }
 }
 
 
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const PTA_float &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const PTA_double &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const PTA_int &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const PTA_LVecBase4 &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const PTA_LVecBase3 &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const PTA_LVecBase2 &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const LVecBase4 &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const LVecBase3 &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const LVecBase2 &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const PTA_LVecBase4i &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const PTA_LVecBase3i &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const PTA_LVecBase2i &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const LVecBase4i &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const LVecBase3i &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const LVecBase2i &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const PTA_LMatrix4 &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const PTA_LMatrix3 &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const LMatrix4 &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const LMatrix3 &v, int priority) {
-  set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, Texture *tex, int priority) {
-  set_shader_input(new ShaderInput(id,tex,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, Texture *tex, const SamplerState &sampler, int priority) {
-  set_shader_input(new ShaderInput(id,tex,sampler,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, Texture *tex, bool read, bool write, int z, int n, int priority) {
-  set_shader_input(new ShaderInput(id,tex,read,write,z,n,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, const NodePath &np, int priority) {
-  set_shader_input(new ShaderInput(id,np,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, int n1, int n2, int n3, int n4, int priority) {
-  set_shader_input(new ShaderInput(id, LVecBase4i(n1, n2, n3, n4), priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: NodePath::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-void NodePath::
-set_shader_input(const InternalName *id, PN_stdfloat n1, PN_stdfloat n2, PN_stdfloat n3, PN_stdfloat n4, int priority) {
-  set_shader_input(new ShaderInput(id, LVecBase4(n1, n2, n3, n4), priority));
-}
-
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: NodePath::set_instance_count
 //     Function: NodePath::set_instance_count
 //       Access: Published
 //       Access: Published
@@ -4678,7 +4425,7 @@ find_all_vertex_columns(const string &name) const {
   InternalNameCollection tc;
   InternalNameCollection tc;
   InternalNames::iterator ti;
   InternalNames::iterator ti;
   for (ti = vertex_columns.begin(); ti != vertex_columns.end(); ++ti) {
   for (ti = vertex_columns.begin(); ti != vertex_columns.end(); ++ti) {
-    InternalName *name = (*ti);
+    const InternalName *name = (*ti);
     if (glob.matches(name->get_name())) {
     if (glob.matches(name->get_name())) {
       tc.add_name(name);
       tc.add_name(name);
     }
     }
@@ -4725,12 +4472,12 @@ find_all_texcoords(const string &name) const {
   r_find_all_vertex_columns(node(), vertex_columns);
   r_find_all_vertex_columns(node(), vertex_columns);
 
 
   GlobPattern glob(name);
   GlobPattern glob(name);
-  CPT(InternalName) texcoord_name = InternalName::get_texcoord();
+  CPT_InternalName texcoord_name = InternalName::get_texcoord();
 
 
   InternalNameCollection tc;
   InternalNameCollection tc;
   InternalNames::iterator ti;
   InternalNames::iterator ti;
   for (ti = vertex_columns.begin(); ti != vertex_columns.end(); ++ti) {
   for (ti = vertex_columns.begin(); ti != vertex_columns.end(); ++ti) {
-    InternalName *name = (*ti);
+    const InternalName *name = (*ti);
     if (name->get_top() == texcoord_name) {
     if (name->get_top() == texcoord_name) {
       // This is a texture coordinate name.  Figure out the basename
       // This is a texture coordinate name.  Figure out the basename
       // of the texture coordinates.
       // of the texture coordinates.

+ 34 - 31
panda/src/pgraph/nodePath.h

@@ -624,39 +624,39 @@ PUBLISHED:
   void clear_shader();
   void clear_shader();
 
 
   void set_shader_input(const ShaderInput *inp);
   void set_shader_input(const ShaderInput *inp);
-  void set_shader_input(const InternalName *id, Texture *tex, int priority=0);
-  void set_shader_input(const InternalName *id, Texture *tex, const SamplerState &sampler, int priority=0);
-  void set_shader_input(const InternalName *id, Texture *tex, bool read, bool write, int z=-1, int n=0, int priority=0);
-  void set_shader_input(const InternalName *id, const NodePath &np, int priority=0);
-  void set_shader_input(const InternalName *id, const PTA_float &v, int priority=0);
-  void set_shader_input(const InternalName *id, const PTA_double &v, int priority=0);
-  void set_shader_input(const InternalName *id, const PTA_int &v, int priority=0);
-  void set_shader_input(const InternalName *id, const PTA_LVecBase4 &v, int priority=0);
-  void set_shader_input(const InternalName *id, const PTA_LVecBase3 &v, int priority=0);
-  void set_shader_input(const InternalName *id, const PTA_LVecBase2 &v, int priority=0);
-  void set_shader_input(const InternalName *id, const PTA_LMatrix4 &v, int priority=0);
-  void set_shader_input(const InternalName *id, const PTA_LMatrix3 &v, int priority=0);
-  void set_shader_input(const InternalName *id, const LVecBase4 &v, int priority=0);
-  void set_shader_input(const InternalName *id, const LVecBase3 &v, int priority=0);
-  void set_shader_input(const InternalName *id, const LVecBase2 &v, int priority=0);
-  void set_shader_input(const InternalName *id, const LMatrix4 &v, int priority=0);
-  void set_shader_input(const InternalName *id, const LMatrix3 &v, int priority=0);
-  void set_shader_input(const InternalName *id, const PTA_LVecBase4i &v, int priority=0);
-  void set_shader_input(const InternalName *id, const PTA_LVecBase3i &v, int priority=0);
-  void set_shader_input(const InternalName *id, const PTA_LVecBase2i &v, int priority=0);
-  void set_shader_input(const InternalName *id, const LVecBase4i &v, int priority=0);
-  void set_shader_input(const InternalName *id, const LVecBase3i &v, int priority=0);
-  void set_shader_input(const InternalName *id, const LVecBase2i &v, int priority=0);
-  void set_shader_input(const InternalName *id, int n1, int n2=0, int n3=0,
-                                                int n4=0, int priority=0);
-  void set_shader_input(const InternalName *id, PN_stdfloat n1, PN_stdfloat n2=0,
-                        PN_stdfloat n3=0, PN_stdfloat n4=0, int priority=0);
-
-  void clear_shader_input(const InternalName *id);
+  INLINE void set_shader_input(CPT_InternalName id, Texture *tex, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, Texture *tex, const SamplerState &sampler, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, Texture *tex, bool read, bool write, int z=-1, int n=0, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const NodePath &np, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const PTA_float &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const PTA_double &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const PTA_int &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const PTA_LVecBase4 &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const PTA_LVecBase3 &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const PTA_LVecBase2 &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const PTA_LMatrix4 &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const PTA_LMatrix3 &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const LVecBase4 &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const LVecBase3 &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const LVecBase2 &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const LMatrix4 &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const LMatrix3 &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const PTA_LVecBase4i &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const PTA_LVecBase3i &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const PTA_LVecBase2i &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const LVecBase4i &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const LVecBase3i &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, const LVecBase2i &v, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, int n1, int n2=0, int n3=0,
+                                                    int n4=0, int priority=0);
+  INLINE void set_shader_input(CPT_InternalName id, PN_stdfloat n1, PN_stdfloat n2=0,
+                               PN_stdfloat n3=0, PN_stdfloat n4=0, int priority=0);
+
+  void clear_shader_input(CPT_InternalName id);
   void set_instance_count(int instance_count);
   void set_instance_count(int instance_count);
 
 
   const Shader *get_shader() const;
   const Shader *get_shader() const;
-  const ShaderInput *get_shader_input(const InternalName *id) const;
+  const ShaderInput *get_shader_input(CPT_InternalName id) const;
   int get_instance_count() const;
   int get_instance_count() const;
 
 
   void set_tex_transform(TextureStage *stage, const TransformState *transform);
   void set_tex_transform(TextureStage *stage, const TransformState *transform);
@@ -954,7 +954,7 @@ private:
                           CollideMask and_mask, CollideMask or_mask,
                           CollideMask and_mask, CollideMask or_mask,
                           TypeHandle node_type);
                           TypeHandle node_type);
 
 
-  typedef phash_set<InternalName *, pointer_hash> InternalNames;
+  typedef phash_set<const InternalName *, pointer_hash> InternalNames;
   bool r_has_vertex_column(PandaNode *node, const InternalName *name) const;
   bool r_has_vertex_column(PandaNode *node, const InternalName *name) const;
   void r_find_all_vertex_columns(PandaNode *node,
   void r_find_all_vertex_columns(PandaNode *node,
                                  InternalNames &vertex_columns) const;
                                  InternalNames &vertex_columns) const;
@@ -1008,6 +1008,9 @@ private:
 
 
 INLINE ostream &operator << (ostream &out, const NodePath &node_path);
 INLINE ostream &operator << (ostream &out, const NodePath &node_path);
 
 
+// We have to put this down here, to work around a circular include.
+#include "shaderInput.h"
+
 #include "nodePath.I"
 #include "nodePath.I"
 
 
 #endif
 #endif

+ 1 - 1
panda/src/pgraph/renderAttrib.cxx

@@ -152,7 +152,7 @@ get_auto_shader_attrib_impl(const RenderState *state) const {
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: RenderAttrib::unref
 //     Function: RenderAttrib::unref
-//       Access: Published, Virtual
+//       Access: Published, Virtual, Final
 //  Description: This method overrides ReferenceCount::unref() to
 //  Description: This method overrides ReferenceCount::unref() to
 //               clear the pointer from the global object pool when
 //               clear the pointer from the global object pool when
 //               its reference count goes to zero.
 //               its reference count goes to zero.

+ 1 - 1
panda/src/pgraph/renderAttrib.h

@@ -84,7 +84,7 @@ PUBLISHED:
   INLINE CPT(RenderAttrib) get_unique() const;
   INLINE CPT(RenderAttrib) get_unique() const;
   INLINE CPT(RenderAttrib) get_auto_shader_attrib(const RenderState *state) const;
   INLINE CPT(RenderAttrib) get_auto_shader_attrib(const RenderState *state) const;
 
 
-  virtual bool unref() const;
+  virtual bool unref() const FINAL;
 
 
   virtual void output(ostream &out) const;
   virtual void output(ostream &out) const;
   virtual void write(ostream &out, int indent_level) const;
   virtual void write(ostream &out, int indent_level) const;

+ 161 - 10
panda/src/pgraph/shaderAttrib.I

@@ -17,7 +17,7 @@
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: ShaderAttrib::Constructor
 //     Function: ShaderAttrib::Constructor
 //       Access: Private
 //       Access: Private
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderAttrib::
 INLINE ShaderAttrib::
 ShaderAttrib() :
 ShaderAttrib() :
@@ -32,14 +32,14 @@ ShaderAttrib() :
   _auto_glow_on(false),
   _auto_glow_on(false),
   _auto_gloss_on(false),
   _auto_gloss_on(false),
   _auto_ramp_on(false),
   _auto_ramp_on(false),
-  _auto_shadow_on(false) 
+  _auto_shadow_on(false)
 {
 {
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: ShaderAttrib::Copy Constructor
 //     Function: ShaderAttrib::Copy Constructor
 //       Access: Private
 //       Access: Private
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderAttrib::
 INLINE ShaderAttrib::
 ShaderAttrib(const ShaderAttrib &copy) :
 ShaderAttrib(const ShaderAttrib &copy) :
@@ -85,7 +85,7 @@ auto_shader() const {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: ShaderAttrib::get_shader_priority
 //     Function: ShaderAttrib::get_shader_priority
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE int ShaderAttrib::
 INLINE int ShaderAttrib::
 get_shader_priority() const {
 get_shader_priority() const {
@@ -106,18 +106,169 @@ get_instance_count() const {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: ShaderAttrib::get_flag
 //     Function: ShaderAttrib::get_flag
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE bool ShaderAttrib::
 INLINE bool ShaderAttrib::
 get_flag(int index) const {
 get_flag(int index) const {
   return (_flags & (1<<index)) ? true:false;
   return (_flags & (1<<index)) ? true:false;
 }
 }
 
 
+////////////////////////////////////////////////////////////////////
+//     Function: ShaderAttrib::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT(RenderAttrib) ShaderAttrib::
+set_shader_input(CPT_InternalName id, const PTA_float &v, int priority) const {
+  return set_shader_input(new ShaderInput(MOVE(id), v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: ShaderAttrib::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT(RenderAttrib) ShaderAttrib::
+set_shader_input(CPT_InternalName id, const PTA_double &v, int priority) const {
+  return set_shader_input(new ShaderInput(MOVE(id), v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: ShaderAttrib::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT(RenderAttrib) ShaderAttrib::
+set_shader_input(CPT_InternalName id, const PTA_LVecBase4 &v, int priority) const {
+  return set_shader_input(new ShaderInput(MOVE(id), v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: ShaderAttrib::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT(RenderAttrib) ShaderAttrib::
+set_shader_input(CPT_InternalName id, const PTA_LVecBase3 &v, int priority) const {
+  return set_shader_input(new ShaderInput(MOVE(id), v, priority));
+}
+
+
+////////////////////////////////////////////////////////////////////
+//     Function: ShaderAttrib::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT(RenderAttrib) ShaderAttrib::
+set_shader_input(CPT_InternalName id, const PTA_LVecBase2 &v, int priority) const {
+  return set_shader_input(new ShaderInput(MOVE(id), v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: ShaderAttrib::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT(RenderAttrib) ShaderAttrib::
+set_shader_input(CPT_InternalName id, const LVecBase4 &v, int priority) const {
+  return set_shader_input(new ShaderInput(MOVE(id), v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: ShaderAttrib::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT(RenderAttrib) ShaderAttrib::
+set_shader_input(CPT_InternalName id, const LVecBase3 &v, int priority) const {
+  return set_shader_input(new ShaderInput(MOVE(id), v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: ShaderAttrib::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT(RenderAttrib) ShaderAttrib::
+set_shader_input(CPT_InternalName id, const LVecBase2 &v, int priority) const {
+  return set_shader_input(new ShaderInput(MOVE(id), v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: ShaderAttrib::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT(RenderAttrib) ShaderAttrib::
+set_shader_input(CPT_InternalName id, const PTA_LMatrix4 &v, int priority) const {
+  return set_shader_input(new ShaderInput(MOVE(id), v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: ShaderAttrib::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT(RenderAttrib) ShaderAttrib::
+set_shader_input(CPT_InternalName id, const PTA_LMatrix3 &v, int priority) const {
+  return set_shader_input(new ShaderInput(MOVE(id), v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: ShaderAttrib::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT(RenderAttrib) ShaderAttrib::
+set_shader_input(CPT_InternalName id, const LMatrix4 &v, int priority) const {
+  return set_shader_input(new ShaderInput(MOVE(id), v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: ShaderAttrib::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT(RenderAttrib) ShaderAttrib::
+set_shader_input(CPT_InternalName id, const LMatrix3 &v, int priority) const {
+  return set_shader_input(new ShaderInput(MOVE(id), v, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: ShaderAttrib::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT(RenderAttrib) ShaderAttrib::
+set_shader_input(CPT_InternalName id, Texture *tex, int priority) const {
+  return set_shader_input(new ShaderInput(MOVE(id), tex, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: ShaderAttrib::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT(RenderAttrib) ShaderAttrib::
+set_shader_input(CPT_InternalName id, const NodePath &np, int priority) const {
+  return set_shader_input(new ShaderInput(MOVE(id), np, priority));
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: ShaderAttrib::set_shader_input
+//       Access: Published
+//  Description:
+////////////////////////////////////////////////////////////////////
+INLINE CPT(RenderAttrib) ShaderAttrib::
+set_shader_input(CPT_InternalName id, double n1, double n2, double n3, double n4, int priority) const {
+  return set_shader_input(new ShaderInput(MOVE(id), LVecBase4(n1, n2, n3, n4), priority));
+}
+
 //weifengh
 //weifengh
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: ShaderAttrib::auto_normal_on
 //     Function: ShaderAttrib::auto_normal_on
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE bool ShaderAttrib::
 INLINE bool ShaderAttrib::
 auto_normal_on() const {
 auto_normal_on() const {
@@ -127,7 +278,7 @@ auto_normal_on() const {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: ShaderAttrib::auto_glow_on
 //     Function: ShaderAttrib::auto_glow_on
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE bool ShaderAttrib::
 INLINE bool ShaderAttrib::
 auto_glow_on() const {
 auto_glow_on() const {
@@ -137,7 +288,7 @@ auto_glow_on() const {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: ShaderAttrib::auto_gloss_on
 //     Function: ShaderAttrib::auto_gloss_on
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE bool ShaderAttrib::
 INLINE bool ShaderAttrib::
 auto_gloss_on() const {
 auto_gloss_on() const {
@@ -147,7 +298,7 @@ auto_gloss_on() const {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: ShaderAttrib::auto_ramp_on
 //     Function: ShaderAttrib::auto_ramp_on
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE bool ShaderAttrib::
 INLINE bool ShaderAttrib::
 auto_ramp_on() const {
 auto_ramp_on() const {
@@ -157,7 +308,7 @@ auto_ramp_on() const {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: ShaderAttrib::auto_shadow_on
 //     Function: ShaderAttrib::auto_shadow_on
 //       Access: Published
 //       Access: Published
-//  Description: 
+//  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE bool ShaderAttrib::
 INLINE bool ShaderAttrib::
 auto_shadow_on() const {
 auto_shadow_on() const {

+ 1 - 152
panda/src/pgraph/shaderAttrib.cxx

@@ -219,164 +219,13 @@ set_shader_input(const ShaderInput *input) const {
   ShaderAttrib *result = new ShaderAttrib(*this);
   ShaderAttrib *result = new ShaderAttrib(*this);
   Inputs::iterator i = result->_inputs.find(input->get_name());
   Inputs::iterator i = result->_inputs.find(input->get_name());
   if (i == result->_inputs.end()) {
   if (i == result->_inputs.end()) {
-    result->_inputs.insert(Inputs::value_type(input->get_name(),input));
+    result->_inputs.insert(Inputs::value_type(input->get_name(), input));
   } else {
   } else {
     i->second = input;
     i->second = input;
   }
   }
   return return_new(result);
   return return_new(result);
 }
 }
 
 
-////////////////////////////////////////////////////////////////////
-//     Function: ShaderAttrib::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-CPT(RenderAttrib) ShaderAttrib::
-set_shader_input(const InternalName *id, const PTA_float &v, int priority) const {
-  return set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: ShaderAttrib::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-CPT(RenderAttrib) ShaderAttrib::
-set_shader_input(const InternalName *id, const PTA_double &v, int priority) const {
-  return set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: ShaderAttrib::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-CPT(RenderAttrib) ShaderAttrib::
-set_shader_input(const InternalName *id, const PTA_LVecBase4 &v, int priority) const {
-  return set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: ShaderAttrib::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-CPT(RenderAttrib) ShaderAttrib::
-set_shader_input(const InternalName *id, const PTA_LVecBase3 &v, int priority) const {
-  return set_shader_input(new ShaderInput(id,v,priority));
-}
-
-
-////////////////////////////////////////////////////////////////////
-//     Function: ShaderAttrib::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-CPT(RenderAttrib) ShaderAttrib::
-set_shader_input(const InternalName *id, const PTA_LVecBase2 &v, int priority) const {
-  return set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: ShaderAttrib::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-CPT(RenderAttrib) ShaderAttrib::
-set_shader_input(const InternalName *id, const LVecBase4 &v, int priority) const {
-  return set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: ShaderAttrib::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-CPT(RenderAttrib) ShaderAttrib::
-set_shader_input(const InternalName *id, const LVecBase3 &v, int priority) const {
-  return set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: ShaderAttrib::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-CPT(RenderAttrib) ShaderAttrib::
-set_shader_input(const InternalName *id, const LVecBase2 &v, int priority) const {
-  return set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: ShaderAttrib::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-CPT(RenderAttrib) ShaderAttrib::
-set_shader_input(const InternalName *id, const PTA_LMatrix4 &v, int priority) const {
-  return set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: ShaderAttrib::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-CPT(RenderAttrib) ShaderAttrib::
-set_shader_input(const InternalName *id, const PTA_LMatrix3 &v, int priority) const {
-  return set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: ShaderAttrib::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-CPT(RenderAttrib) ShaderAttrib::
-set_shader_input(const InternalName *id, const LMatrix4 &v, int priority) const {
-  return set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: ShaderAttrib::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-CPT(RenderAttrib) ShaderAttrib::
-set_shader_input(const InternalName *id, const LMatrix3 &v, int priority) const {
-  return set_shader_input(new ShaderInput(id,v,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: ShaderAttrib::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-CPT(RenderAttrib) ShaderAttrib::
-set_shader_input(const InternalName *id, Texture *tex, int priority) const {
-  return set_shader_input(new ShaderInput(id,tex,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: ShaderAttrib::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-CPT(RenderAttrib) ShaderAttrib::
-set_shader_input(const InternalName *id, const NodePath &np, int priority) const {
-  return set_shader_input(new ShaderInput(id,np,priority));
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: ShaderAttrib::set_shader_input
-//       Access: Published
-//  Description:
-////////////////////////////////////////////////////////////////////
-CPT(RenderAttrib) ShaderAttrib::
-set_shader_input(const InternalName *id, double n1, double n2, double n3, double n4, int priority) const {
-  return set_shader_input(new ShaderInput(id, LVecBase4(n1,n2,n3,n4), priority));
-}
-
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: ShaderAttrib::set_instance_count
 //     Function: ShaderAttrib::set_instance_count
 //       Access: Published
 //       Access: Published

+ 17 - 18
panda/src/pgraph/shaderAttrib.h

@@ -70,23 +70,22 @@ PUBLISHED:
   // Shader Inputs
   // Shader Inputs
   CPT(RenderAttrib) set_shader_input(const ShaderInput *inp) const;
   CPT(RenderAttrib) set_shader_input(const ShaderInput *inp) const;
 
 
-  // InternalName* id
-  CPT(RenderAttrib) set_shader_input(const InternalName *id, Texture *tex,       int priority=0) const;
-  CPT(RenderAttrib) set_shader_input(const InternalName *id, const NodePath &np, int priority=0) const;
-  CPT(RenderAttrib) set_shader_input(const InternalName *id, const PTA_float &v, int priority=0) const;
-  CPT(RenderAttrib) set_shader_input(const InternalName *id, const PTA_double &v, int priority=0) const;
-  CPT(RenderAttrib) set_shader_input(const InternalName *id, const PTA_LMatrix4 &v, int priority=0) const;
-  CPT(RenderAttrib) set_shader_input(const InternalName *id, const PTA_LMatrix3 &v, int priority=0) const;
-  CPT(RenderAttrib) set_shader_input(const InternalName *id, const PTA_LVecBase4 &v, int priority=0) const;
-  CPT(RenderAttrib) set_shader_input(const InternalName *id, const PTA_LVecBase3 &v, int priority=0) const;
-  CPT(RenderAttrib) set_shader_input(const InternalName *id, const PTA_LVecBase2 &v, int priority=0) const;
-  CPT(RenderAttrib) set_shader_input(const InternalName *id, const LVecBase4 &v, int priority=0) const;
-  CPT(RenderAttrib) set_shader_input(const InternalName *id, const LVecBase3 &v, int priority=0) const;
-  CPT(RenderAttrib) set_shader_input(const InternalName *id, const LVecBase2 &v, int priority=0) const;
-  CPT(RenderAttrib) set_shader_input(const InternalName *id, const LMatrix4 &v, int priority=0) const;
-  CPT(RenderAttrib) set_shader_input(const InternalName *id, const LMatrix3 &v, int priority=0) const;
-  CPT(RenderAttrib) set_shader_input(const InternalName *id, double n1=0, double n2=0, double n3=0, double n4=1,
-                                     int priority=0) const;
+  INLINE CPT(RenderAttrib) set_shader_input(CPT_InternalName id, Texture *tex,       int priority=0) const;
+  INLINE CPT(RenderAttrib) set_shader_input(CPT_InternalName id, const NodePath &np, int priority=0) const;
+  INLINE CPT(RenderAttrib) set_shader_input(CPT_InternalName id, const PTA_float &v, int priority=0) const;
+  INLINE CPT(RenderAttrib) set_shader_input(CPT_InternalName id, const PTA_double &v, int priority=0) const;
+  INLINE CPT(RenderAttrib) set_shader_input(CPT_InternalName id, const PTA_LMatrix4 &v, int priority=0) const;
+  INLINE CPT(RenderAttrib) set_shader_input(CPT_InternalName id, const PTA_LMatrix3 &v, int priority=0) const;
+  INLINE CPT(RenderAttrib) set_shader_input(CPT_InternalName id, const PTA_LVecBase4 &v, int priority=0) const;
+  INLINE CPT(RenderAttrib) set_shader_input(CPT_InternalName id, const PTA_LVecBase3 &v, int priority=0) const;
+  INLINE CPT(RenderAttrib) set_shader_input(CPT_InternalName id, const PTA_LVecBase2 &v, int priority=0) const;
+  INLINE CPT(RenderAttrib) set_shader_input(CPT_InternalName id, const LVecBase4 &v, int priority=0) const;
+  INLINE CPT(RenderAttrib) set_shader_input(CPT_InternalName id, const LVecBase3 &v, int priority=0) const;
+  INLINE CPT(RenderAttrib) set_shader_input(CPT_InternalName id, const LVecBase2 &v, int priority=0) const;
+  INLINE CPT(RenderAttrib) set_shader_input(CPT_InternalName id, const LMatrix4 &v, int priority=0) const;
+  INLINE CPT(RenderAttrib) set_shader_input(CPT_InternalName id, const LMatrix3 &v, int priority=0) const;
+  INLINE CPT(RenderAttrib) set_shader_input(CPT_InternalName id, double n1=0, double n2=0, double n3=0, double n4=1,
+                                            int priority=0) const;
 
 
   CPT(RenderAttrib) set_instance_count(int instance_count) const;
   CPT(RenderAttrib) set_instance_count(int instance_count) const;
 
 
@@ -137,7 +136,7 @@ private:
   bool        _auto_ramp_on;
   bool        _auto_ramp_on;
   bool        _auto_shadow_on;
   bool        _auto_shadow_on;
 
 
-  typedef pmap < CPT(InternalName), CPT(ShaderInput) > Inputs;
+  typedef pmap<CPT_InternalName, CPT(ShaderInput)> Inputs;
   Inputs _inputs;
   Inputs _inputs;
 
 
 PUBLISHED:
 PUBLISHED:

+ 70 - 70
panda/src/pgraph/shaderInput.I

@@ -28,8 +28,8 @@ INLINE ShaderInput::
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, int priority) :
+  _name(MOVE(name)),
   _type(M_invalid),
   _type(M_invalid),
   _priority(priority),
   _priority(priority),
   _bind_layer(0),
   _bind_layer(0),
@@ -44,8 +44,8 @@ ShaderInput(const InternalName *name, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, Texture *tex, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, Texture *tex, int priority) :
+  _name(MOVE(name)),
   _type(M_texture),
   _type(M_texture),
   _priority(priority),
   _priority(priority),
   _value(tex),
   _value(tex),
@@ -61,8 +61,8 @@ ShaderInput(const InternalName *name, Texture *tex, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, Texture *tex, const SamplerState &sampler, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, Texture *tex, const SamplerState &sampler, int priority) :
+  _name(MOVE(name)),
   _type(M_texture_sampler),
   _type(M_texture_sampler),
   _priority(priority),
   _priority(priority),
   _value(tex),
   _value(tex),
@@ -79,8 +79,8 @@ ShaderInput(const InternalName *name, Texture *tex, const SamplerState &sampler,
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, Texture *tex, bool read, bool write, int z, int n, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, Texture *tex, bool read, bool write, int z, int n, int priority) :
+  _name(MOVE(name)),
   _type(M_texture),
   _type(M_texture),
   _priority(priority),
   _priority(priority),
   _value(tex),
   _value(tex),
@@ -108,8 +108,8 @@ ShaderInput(const InternalName *name, Texture *tex, bool read, bool write, int z
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, ParamValueBase *param, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, ParamValueBase *param, int priority) :
+  _name(MOVE(name)),
   _type(M_param),
   _type(M_param),
   _priority(priority),
   _priority(priority),
   _value(param),
   _value(param),
@@ -125,8 +125,8 @@ ShaderInput(const InternalName *name, ParamValueBase *param, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const NodePath &np, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const NodePath &np, int priority) :
+  _name(MOVE(name)),
   _type(M_nodepath),
   _type(M_nodepath),
   _priority(priority),
   _priority(priority),
   _stored_nodepath(np),
   _stored_nodepath(np),
@@ -142,8 +142,8 @@ ShaderInput(const InternalName *name, const NodePath &np, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_float &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_float &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -159,8 +159,8 @@ ShaderInput(const InternalName *name, const PTA_float &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_LVecBase4f &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_LVecBase4f &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -176,8 +176,8 @@ ShaderInput(const InternalName *name, const PTA_LVecBase4f &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_LVecBase3f &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_LVecBase3f &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -193,8 +193,8 @@ ShaderInput(const InternalName *name, const PTA_LVecBase3f &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_LVecBase2f &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_LVecBase2f &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -210,8 +210,8 @@ ShaderInput(const InternalName *name, const PTA_LVecBase2f &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const LVecBase4f &vec, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const LVecBase4f &vec, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(vec),
   _stored_ptr(vec),
@@ -228,8 +228,8 @@ ShaderInput(const InternalName *name, const LVecBase4f &vec, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const LVecBase3f &vec, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const LVecBase3f &vec, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(vec),
   _stored_ptr(vec),
@@ -246,8 +246,8 @@ ShaderInput(const InternalName *name, const LVecBase3f &vec, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const LVecBase2f &vec, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const LVecBase2f &vec, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(vec),
   _stored_ptr(vec),
@@ -264,8 +264,8 @@ ShaderInput(const InternalName *name, const LVecBase2f &vec, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_LMatrix4f &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_LMatrix4f &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -281,8 +281,8 @@ ShaderInput(const InternalName *name, const PTA_LMatrix4f &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_LMatrix3f &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_LMatrix3f &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -298,8 +298,8 @@ ShaderInput(const InternalName *name, const PTA_LMatrix3f &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const LMatrix4f &mat, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const LMatrix4f &mat, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(mat),
   _stored_ptr(mat),
@@ -315,8 +315,8 @@ ShaderInput(const InternalName *name, const LMatrix4f &mat, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const LMatrix3f &mat, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const LMatrix3f &mat, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(mat),
   _stored_ptr(mat),
@@ -332,8 +332,8 @@ ShaderInput(const InternalName *name, const LMatrix3f &mat, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_double &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_double &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -349,8 +349,8 @@ ShaderInput(const InternalName *name, const PTA_double &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_LVecBase4d &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_LVecBase4d &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -366,8 +366,8 @@ ShaderInput(const InternalName *name, const PTA_LVecBase4d &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_LVecBase3d &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_LVecBase3d &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -383,8 +383,8 @@ ShaderInput(const InternalName *name, const PTA_LVecBase3d &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_LVecBase2d &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_LVecBase2d &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -400,8 +400,8 @@ ShaderInput(const InternalName *name, const PTA_LVecBase2d &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const LVecBase4d &vec, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const LVecBase4d &vec, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(vec),
   _stored_ptr(vec),
@@ -418,8 +418,8 @@ ShaderInput(const InternalName *name, const LVecBase4d &vec, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const LVecBase3d &vec, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const LVecBase3d &vec, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(vec),
   _stored_ptr(vec),
@@ -436,8 +436,8 @@ ShaderInput(const InternalName *name, const LVecBase3d &vec, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const LVecBase2d &vec, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const LVecBase2d &vec, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(vec),
   _stored_ptr(vec),
@@ -454,8 +454,8 @@ ShaderInput(const InternalName *name, const LVecBase2d &vec, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_LMatrix4d &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_LMatrix4d &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -471,8 +471,8 @@ ShaderInput(const InternalName *name, const PTA_LMatrix4d &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_LMatrix3d &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_LMatrix3d &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -488,8 +488,8 @@ ShaderInput(const InternalName *name, const PTA_LMatrix3d &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const LMatrix4d &mat, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const LMatrix4d &mat, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(mat),
   _stored_ptr(mat),
@@ -505,8 +505,8 @@ ShaderInput(const InternalName *name, const LMatrix4d &mat, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const LMatrix3d &mat, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const LMatrix3d &mat, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(mat),
   _stored_ptr(mat),
@@ -522,8 +522,8 @@ ShaderInput(const InternalName *name, const LMatrix3d &mat, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_int &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_int &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -539,8 +539,8 @@ ShaderInput(const InternalName *name, const PTA_int &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_LVecBase4i &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_LVecBase4i &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -556,8 +556,8 @@ ShaderInput(const InternalName *name, const PTA_LVecBase4i &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_LVecBase3i &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_LVecBase3i &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -573,8 +573,8 @@ ShaderInput(const InternalName *name, const PTA_LVecBase3i &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const PTA_LVecBase2i &ptr, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const PTA_LVecBase2i &ptr, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(ptr),
   _stored_ptr(ptr),
@@ -590,8 +590,8 @@ ShaderInput(const InternalName *name, const PTA_LVecBase2i &ptr, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const LVecBase4i &vec, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const LVecBase4i &vec, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(vec),
   _stored_ptr(vec),
@@ -608,8 +608,8 @@ ShaderInput(const InternalName *name, const LVecBase4i &vec, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const LVecBase3i &vec, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const LVecBase3i &vec, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(vec),
   _stored_ptr(vec),
@@ -626,8 +626,8 @@ ShaderInput(const InternalName *name, const LVecBase3i &vec, int priority) :
 //  Description:
 //  Description:
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE ShaderInput::
 INLINE ShaderInput::
-ShaderInput(const InternalName *name, const LVecBase2i &vec, int priority) :
-  _name(name),
+ShaderInput(CPT_InternalName name, const LVecBase2i &vec, int priority) :
+  _name(MOVE(name)),
   _type(M_numeric),
   _type(M_numeric),
   _priority(priority),
   _priority(priority),
   _stored_ptr(vec),
   _stored_ptr(vec),

+ 38 - 38
panda/src/pgraph/shaderInput.h

@@ -52,43 +52,43 @@ PUBLISHED:
   };
   };
 
 
   static const ShaderInput *get_blank();
   static const ShaderInput *get_blank();
-  INLINE ShaderInput(const InternalName *id, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const NodePath &np, int priority=0);
-  INLINE ShaderInput(const InternalName *id, Texture *tex, int priority=0);
-  INLINE ShaderInput(const InternalName *id, Texture *tex, const SamplerState &sampler, int priority=0);
-  INLINE ShaderInput(const InternalName *id, Texture *tex, bool read, bool write, int z=-1, int n=0, int priority=0);
-  INLINE ShaderInput(const InternalName *id, ParamValueBase *param, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const PTA_float &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const PTA_LVecBase4f &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const PTA_LVecBase3f &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const PTA_LVecBase2f &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const PTA_LMatrix4f &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const PTA_LMatrix3f &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const LVecBase4f &vec, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const LVecBase3f &vec, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const LVecBase2f &vec, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const LMatrix4f &mat, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const LMatrix3f &mat, int priority=0);
-
-  INLINE ShaderInput(const InternalName *id, const PTA_double &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const PTA_LVecBase4d &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const PTA_LVecBase3d &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const PTA_LVecBase2d &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const PTA_LMatrix4d &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const PTA_LMatrix3d &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const LVecBase4d &vec, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const LVecBase3d &vec, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const LVecBase2d &vec, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const LMatrix4d &mat, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const LMatrix3d &mat, int priority=0);
-
-  INLINE ShaderInput(const InternalName *id, const PTA_int &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const PTA_LVecBase4i &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const PTA_LVecBase3i &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const PTA_LVecBase2i &ptr, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const LVecBase4i &vec, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const LVecBase3i &vec, int priority=0);
-  INLINE ShaderInput(const InternalName *id, const LVecBase2i &vec, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const NodePath &np, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, Texture *tex, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, Texture *tex, const SamplerState &sampler, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, Texture *tex, bool read, bool write, int z=-1, int n=0, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, ParamValueBase *param, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const PTA_float &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const PTA_LVecBase4f &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const PTA_LVecBase3f &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const PTA_LVecBase2f &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const PTA_LMatrix4f &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const PTA_LMatrix3f &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const LVecBase4f &vec, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const LVecBase3f &vec, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const LVecBase2f &vec, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const LMatrix4f &mat, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const LMatrix3f &mat, int priority=0);
+
+  INLINE ShaderInput(CPT_InternalName name, const PTA_double &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const PTA_LVecBase4d &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const PTA_LVecBase3d &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const PTA_LVecBase2d &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const PTA_LMatrix4d &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const PTA_LMatrix3d &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const LVecBase4d &vec, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const LVecBase3d &vec, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const LVecBase2d &vec, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const LMatrix4d &mat, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const LMatrix3d &mat, int priority=0);
+
+  INLINE ShaderInput(CPT_InternalName name, const PTA_int &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const PTA_LVecBase4i &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const PTA_LVecBase3i &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const PTA_LVecBase2i &ptr, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const LVecBase4i &vec, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const LVecBase3i &vec, int priority=0);
+  INLINE ShaderInput(CPT_InternalName name, const LVecBase2i &vec, int priority=0);
 
 
   enum ShaderInputType {
   enum ShaderInputType {
     M_invalid = 0,
     M_invalid = 0,
@@ -119,7 +119,7 @@ private:
   LVecBase4 _stored_vector;
   LVecBase4 _stored_vector;
   NodePath _stored_nodepath;
   NodePath _stored_nodepath;
   Shader::ShaderPtrData _stored_ptr;
   Shader::ShaderPtrData _stored_ptr;
-  CPT(InternalName) _name;
+  CPT_InternalName _name;
   PT(TypedWritableReferenceCount) _value;
   PT(TypedWritableReferenceCount) _value;
   int _priority;
   int _priority;
 
 

+ 1 - 1
panda/src/pgraph/transformState.h

@@ -59,7 +59,7 @@ class FactoryParams;
 //               instead of modifying a TransformState object, create a
 //               instead of modifying a TransformState object, create a
 //               new one.
 //               new one.
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
-class EXPCL_PANDA_PGRAPH TransformState : public NodeCachedReferenceCount {
+class EXPCL_PANDA_PGRAPH TransformState FINAL : public NodeCachedReferenceCount {
 protected:
 protected:
   TransformState();
   TransformState();