Browse Source

expanded comment

Dave Schuyler 22 years ago
parent
commit
7470a32d17
1 changed files with 60 additions and 0 deletions
  1. 60 0
      panda/src/express/typedObject.h

+ 60 - 0
panda/src/express/typedObject.h

@@ -34,6 +34,66 @@
 //               return the specific type of the derived class.
 //               return the specific type of the derived class.
 //               Inheriting from this automatically provides support
 //               Inheriting from this automatically provides support
 //               for is_of_type() and is_exact_type().
 //               for is_of_type() and is_exact_type().
+//               
+//               Defining get_type() and force_init_type() are not
+//               necessary if your class does not define any virtual
+//               functions.
+//               
+//               There is a specific layout for defining the
+//               overrides from this class.  Keeping the definitions
+//               formatted just like these examples will allow
+//               someone in the future to use a sed (or similar)
+//               script to make global changes, if necessary.  Avoid
+//               rearranging the braces or the order of the functions
+//               unless you're ready to change them in every file all
+//               at once.
+//               
+//               What follows are some examples that can be used in
+//               new classes that you create.
+//               
+//               ---------------------------------------------------
+//               In the class definition (.h file)
+//               ---------------------------------------------------
+//               
+//               public:
+//                 static TypeHandle get_class_type() {
+//                   return _type_handle;
+//                 }
+//                 static void init_type() {
+//                   <<<BaseClassOne>>>::init_type();
+//                   <<<BaseClassTwo>>>::init_type();
+//                   <<<BaseClassN>>>::init_type();
+//                   register_type(_type_handle, "<<<ThisClassStringName>>>",
+//                                 <<<BaseClassOne>>>::get_class_type(),
+//                                 <<<BaseClassTwo>>>::get_class_type(),
+//                                 <<<BaseClassN>>>::get_class_type());
+//                 }
+//                 virtual TypeHandle get_type() const {
+//                   return get_class_type();
+//                 }
+//                 virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
+//               
+//               private:
+//                 static TypeHandle _type_handle;
+//               
+//               
+//               ----------------------
+//               In the class .cxx file
+//               ----------------------
+//               
+//               TypeHandle <<<ThisClassStringName>>>::_type_handle;
+//               
+//               
+//               ----------------------------------------------
+//               In the class config_<<<PackageName>>>.cxx file
+//               ----------------------------------------------
+//               
+//               ConfigureFn(config_<<<PackageName>>>) {
+//                 <<<ClassOne>>>::init_type();
+//                 <<<ClassTwo>>>::init_type();
+//                 <<<ClassN>>>::init_type();
+//               }
+//               
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 class EXPCL_PANDAEXPRESS TypedObject {
 class EXPCL_PANDAEXPRESS TypedObject {
 public:
 public: