SpringPropertiesForDefModel< T > Class Template Reference

#include <TAPsSpringPropertiesForDefModel.hpp>

Collaboration diagram for SpringPropertiesForDefModel< T >:

Collaboration graph
[legend]

List of all members.

Public Types

enum  CONNECT {
  EAST = 0, WEST, NORTH, SOUTH,
  FRONT, BACK, NORTH_EAST, SOUTH_WEST,
  NORTH_WEST, SOUTH_EAST, FRONT_EAST, BACK_WEST,
  FRONT_WEST, BACK_EAST, FRONT_NORTH, BACK_SOUTH,
  FRONT_SOUTH, BACK_NORTH, FRONT_NORTH_EAST, BACK_SOUTH_WEST,
  FRONT_NORTH_WEST, BACK_SOUTH_EAST, FRONT_SOUTH_WEST, BACK_NORTH_EAST,
  FRONT_SOUTH_EAST, BACK_NORTH_WEST, NOT_CONNECTED, HOME
}

Public Member Functions

GetHomeSpringStiffness ()
GetSpringRestLength (enum CONNECT springSelection)
GetSpringStiffness (enum CONNECT springSelection)
GetStoreHomeSpringStiffness ()
std::string Info () const
void InfoConnectionProperties (std::string &addToStr, CONNECT connect, int maxNumConnections=26) const
void RestoreHomeSpringStiffness ()
void SetAllValues (T Kstiffness, T xLen, T yLen, T zLen)
void SetHomeSpringStiffness (T val)
void SetHomeSpringStiffnessWithoutStoreItsCurrentValue (T val)
void SetSpringRestLength (enum CONNECT springSelection, T val)
void SetSpringStiffness (enum CONNECT springSelection, T val)
void SetToDefaultValues ()
void SetValueForAllSpringLengths (T xLen, T yLen, T zLen)
void SetValueForAllStiffnesses (T val)
 SpringPropertiesForDefModel (T Kstiffness, T xLen, T yLen, T zLen)
 SpringPropertiesForDefModel ()

Private Attributes

m_tStore_Ks_Home
REST_LENGTH [28]
STIFFNESS [28]

Friends

class ModelDeformableCPU
class ModelDeformableGLSL
std::ostream & operator<< (std::ostream &output, SpringPropertiesForDefModel< T > const &o)


Detailed Description

template<typename T>
class SpringPropertiesForDefModel< T >

SpringPropertiesForDefModel class is for spring properties used by ModelDeformableCPU class and TAPsModelDeformableGLSL class.

Definition at line 21 of file TAPsSpringPropertiesForDefModel.hpp.


Member Enumeration Documentation

template<typename T>
enum SpringPropertiesForDefModel::CONNECT

Element Connectivities: up to 26 connections

*---*---* BACK | NW N NE / / /| *---*---* * CENTER | W C E / / /|/| *---*---* * * FRONT | SW S SE | | |/|/ *---*---* * e.g. BACK_C -> Back Center | | |/ *---*---* Total: 9 (front) + 8 (center) + 9 (back) = 26 Remark: Front is +Z and Back is -Z. Use Enum to Identify Connections

Enumerator:
EAST 
WEST 
NORTH 
SOUTH 
FRONT 
BACK 
NORTH_EAST 
SOUTH_WEST 
NORTH_WEST 
SOUTH_EAST 
FRONT_EAST 
BACK_WEST 
FRONT_WEST 
BACK_EAST 
FRONT_NORTH 
BACK_SOUTH 
FRONT_SOUTH 
BACK_NORTH 
FRONT_NORTH_EAST 
BACK_SOUTH_WEST 
FRONT_NORTH_WEST 
BACK_SOUTH_EAST 
FRONT_SOUTH_WEST 
BACK_NORTH_EAST 
FRONT_SOUTH_EAST 
BACK_NORTH_WEST 
NOT_CONNECTED 
HOME 

Definition at line 119 of file TAPsSpringPropertiesForDefModel.hpp.

00119                         {
00120         //-----------------------------
00121         // x dimension
00122         EAST    =   0,
00123         WEST,
00124         //-----------------------------
00125         // y dimension
00126         NORTH,
00127         SOUTH,
00128         //-----------------------------
00129         // z dimension
00130         FRONT, 
00131         BACK,
00132         //-----------------------------
00133         // xy dimension
00134         NORTH_EAST,
00135         SOUTH_WEST,
00136         //---------
00137         NORTH_WEST,
00138         SOUTH_EAST,
00139         //-----------------------------
00140         // xz dimension
00141         FRONT_EAST,
00142         BACK_WEST,
00143         //---------
00144         FRONT_WEST,
00145         BACK_EAST,
00146         //-----------------------------
00147         // yz dimension
00148         FRONT_NORTH,
00149         BACK_SOUTH,
00150         //---------
00151         FRONT_SOUTH,
00152         BACK_NORTH,
00153         //-----------------------------
00154         // xyz dimension
00155         FRONT_NORTH_EAST,
00156         BACK_SOUTH_WEST,
00157         //---------
00158         FRONT_NORTH_WEST,
00159         BACK_SOUTH_EAST,
00160         //---------
00161         FRONT_SOUTH_WEST,
00162         BACK_NORTH_EAST,
00163         //---------
00164         FRONT_SOUTH_EAST,
00165         BACK_NORTH_WEST,
00166         //-----------------------------
00167         // dimensionless
00168         NOT_CONNECTED,
00169         //-----------------------------
00170         // Home Spring
00171         HOME
00172         //-----------------------------
00173     };


Constructor & Destructor Documentation

template<typename T>
SpringPropertiesForDefModel< T >::SpringPropertiesForDefModel (  )  [inline]

Definition at line 42 of file TAPsSpringPropertiesForDefModel.hpp.

00042                                    {
00043         SetToDefaultValues();
00044     }

template<typename T>
SpringPropertiesForDefModel< T >::SpringPropertiesForDefModel ( Kstiffness,
xLen,
yLen,
zLen 
) [inline]

Definition at line 46 of file TAPsSpringPropertiesForDefModel.hpp.

00051                                  {
00052         SetAllValues ( 
00053             Kstiffness, 
00054             #ifdef TAPs_MODEL_DEFORMABLE_GLSL_EXPLICIT_EULER_INTEGRATION
00055             Kdamper, 
00056             #endif // #ifdef TAPs_MODEL_DEFORMABLE_GLSL_EXPLICIT_EULER_INTEGRATION
00057             xLen, yLen, zLen );
00058     }


Member Function Documentation

template<typename T>
T SpringPropertiesForDefModel< T >::GetHomeSpringStiffness (  )  [inline]

Definition at line 251 of file TAPsSpringPropertiesForDefModel.hpp.

00252     {   return STIFFNESS[ HOME ];   }

template<typename T>
T SpringPropertiesForDefModel< T >::GetSpringRestLength ( enum CONNECT  springSelection  )  [inline]

Definition at line 216 of file TAPsSpringPropertiesForDefModel.hpp.

00217     {   return REST_LENGTH[ springSelection ];  }

template<typename T>
T SpringPropertiesForDefModel< T >::GetSpringStiffness ( enum CONNECT  springSelection  )  [inline]

Definition at line 222 of file TAPsSpringPropertiesForDefModel.hpp.

00223     {   return STIFFNESS[ springSelection ];    }

template<typename T>
T SpringPropertiesForDefModel< T >::GetStoreHomeSpringStiffness (  )  [inline]

Definition at line 208 of file TAPsSpringPropertiesForDefModel.hpp.

00208 { return m_tStore_Ks_Home; }

template<typename T>
std::string SpringPropertiesForDefModel< T >::Info (  )  const [inline]

Definition at line 419 of file TAPsSpringPropertiesForDefModel.hpp.

00419                             {
00420         const int   maxNumConnections = 26;
00421         std::string strInfo;
00422         //---------------------------------------
00423         #ifdef TAPs_MODEL_DEFORMABLE_GLSL_EXPLICIT_EULER_INTEGRATION
00424         strInfo += "Rest Length    Stiffness    Damper    Distance Limit\n";
00425         #else // #ifdef TAPs_MODEL_DEFORMABLE_GLSL_EXPLICIT_EULER_INTEGRATION
00426         strInfo += "Rest Length    Stiffness    Distance Limit\n";
00427         #endif // #ifdef TAPs_MODEL_DEFORMABLE_GLSL_EXPLICIT_EULER_INTEGRATION
00428         //=======================================
00429         strInfo += "-----------\n";
00430         strInfo += "HOME SPRING:\n";
00431         strInfo += "-----------";
00432         strInfo += "\n  Home Spring:    ";
00433         InfoConnectionProperties( strInfo, HOME, maxNumConnections );
00434         //-------------
00435         //=======================================
00436         strInfo += "-----------\n";
00437         strInfo += "FRONT GROUP:\n";
00438         strInfo += "-----------";
00439         //-------------
00440         strInfo += "\n  FrontNorthWest: ";
00441         InfoConnectionProperties( strInfo, FRONT_NORTH_WEST, maxNumConnections );
00442         strInfo += "\n  FrontNorth:     ";
00443         InfoConnectionProperties( strInfo, FRONT_NORTH, maxNumConnections );
00444         strInfo += "\n  FrontNorthEast: ";
00445         InfoConnectionProperties( strInfo, FRONT_NORTH_EAST, maxNumConnections );
00446         //-------------
00447         strInfo += "\n  FrontWest:      ";
00448         InfoConnectionProperties( strInfo, FRONT_WEST, maxNumConnections );
00449         strInfo += "\n  Front:          ";
00450         InfoConnectionProperties( strInfo, FRONT, maxNumConnections );
00451         strInfo += "\n  FrontEast:      ";
00452         InfoConnectionProperties( strInfo, FRONT_EAST, maxNumConnections );
00453         //-------------
00454         strInfo += "\n  FrontSouthWest: ";
00455         InfoConnectionProperties( strInfo, FRONT_SOUTH_WEST, maxNumConnections );
00456         strInfo += "\n  FrontSouth:     ";
00457         InfoConnectionProperties( strInfo, FRONT_SOUTH, maxNumConnections );
00458         strInfo += "\n  FrontSouthEast: ";
00459         InfoConnectionProperties( strInfo, FRONT_SOUTH_EAST, maxNumConnections );
00460         //-------------
00461         strInfo += "\n";
00462         //=======================================
00463         strInfo += "------------\n";
00464         strInfo += "CENTER GROUP:\n";
00465         strInfo += "------------";
00466         //-------------
00467         strInfo += "\n  NorthWest:      ";
00468         InfoConnectionProperties( strInfo, NORTH_WEST, maxNumConnections );
00469         strInfo += "\n  North:          ";
00470         InfoConnectionProperties( strInfo, NORTH, maxNumConnections );
00471         strInfo += "\n  NorthEast:      ";
00472         InfoConnectionProperties( strInfo, NORTH_EAST, maxNumConnections );
00473         //-------------
00474         strInfo += "\n  West:           ";
00475         InfoConnectionProperties( strInfo, WEST, maxNumConnections );
00476         strInfo += "\n  East:           ";
00477         InfoConnectionProperties( strInfo, EAST, maxNumConnections );
00478         //-------------
00479         strInfo += "\n  SouthWest:      ";
00480         InfoConnectionProperties( strInfo, SOUTH_WEST, maxNumConnections );
00481         strInfo += "\n  South:          ";
00482         InfoConnectionProperties( strInfo, SOUTH, maxNumConnections );
00483         strInfo += "\n  SouthEast:      ";
00484         InfoConnectionProperties( strInfo, SOUTH_EAST, maxNumConnections );
00485         //-------------
00486         strInfo += "\n";
00487         //=======================================
00488         strInfo += "----------\n";
00489         strInfo += "BACK GROUP:\n";
00490         strInfo += "----------";
00491         //-------------
00492         strInfo += "\n  BackNorthWest:  ";
00493         InfoConnectionProperties( strInfo, BACK_NORTH_WEST, maxNumConnections );
00494         strInfo += "\n  BackNorth:      ";
00495         InfoConnectionProperties( strInfo, BACK_NORTH, maxNumConnections );
00496         strInfo += "\n  BackNorthEast:  ";
00497         InfoConnectionProperties( strInfo, BACK_NORTH_EAST, maxNumConnections );
00498         //-------------
00499         strInfo += "\n  BackWest:       ";
00500         InfoConnectionProperties( strInfo, BACK_WEST, maxNumConnections );
00501         strInfo += "\n  Back:           ";
00502         InfoConnectionProperties( strInfo, BACK, maxNumConnections );
00503         strInfo += "\n  BackEast:       ";
00504         InfoConnectionProperties( strInfo, BACK_EAST, maxNumConnections );
00505         //-------------
00506         strInfo += "\n  BackSouthWest:  ";
00507         InfoConnectionProperties( strInfo, BACK_SOUTH_WEST, maxNumConnections );
00508         strInfo += "\n  BackSouth:      ";
00509         InfoConnectionProperties( strInfo, BACK_SOUTH, maxNumConnections );
00510         strInfo += "\n  BackSouthEast:  ";
00511         InfoConnectionProperties( strInfo, BACK_SOUTH_EAST, maxNumConnections );
00512         //-------------
00513         //=======================================
00514         return strInfo;
00515     }

template<typename T>
void SpringPropertiesForDefModel< T >::InfoConnectionProperties ( std::string &  addToStr,
CONNECT  connect,
int  maxNumConnections = 26 
) const [inline]

Definition at line 399 of file TAPsSpringPropertiesForDefModel.hpp.

00400                                                             {
00401         char cStr[80];
00402         if ( connect <= maxNumConnections ) {
00403             #ifdef TAPs_MODEL_DEFORMABLE_GLSL_EXPLICIT_EULER_INTEGRATION
00404             sprintf( cStr, " %g, %g, %g", 
00405                 SPRING_PROP.REST_LENGTH[ connect ], 
00406                 SPRING_PROP.STIFFNESS[ connect ], 
00407                 SPRING_PROP.DAMPER[ connect ] 
00408             );
00409             #else // #ifdef TAPs_MODEL_DEFORMABLE_GLSL_EXPLICIT_EULER_INTEGRATION
00410             sprintf( cStr, " %g, %g", 
00411                 SPRING_PROP.REST_LENGTH[ connect ], 
00412                 SPRING_PROP.STIFFNESS[ connect ] 
00413             );
00414             #endif // #ifdef TAPs_MODEL_DEFORMABLE_GLSL_EXPLICIT_EULER_INTEGRATION
00415             addToStr += cStr;
00416         }
00417     }

template<typename T>
void SpringPropertiesForDefModel< T >::RestoreHomeSpringStiffness (  )  [inline]

Definition at line 210 of file TAPsSpringPropertiesForDefModel.hpp.

template<typename T>
void SpringPropertiesForDefModel< T >::SetAllValues ( Kstiffness,
xLen,
yLen,
zLen 
) [inline]

Definition at line 79 of file TAPsSpringPropertiesForDefModel.hpp.

00084                                      {
00085         SetValueForAllStiffnesses( Kstiffness );
00086         #ifdef TAPs_MODEL_DEFORMABLE_GLSL_EXPLICIT_EULER_INTEGRATION
00087         SetValueForAllDampers( Kdamper );
00088         #endif // #ifdef TAPs_MODEL_DEFORMABLE_GLSL_EXPLICIT_EULER_INTEGRATION
00089         SetValueForAllSpringLengths ( xLen, yLen, zLen );
00090     }

template<typename T>
void SpringPropertiesForDefModel< T >::SetHomeSpringStiffness ( val  )  [inline]

Definition at line 253 of file TAPsSpringPropertiesForDefModel.hpp.

00254     {   STIFFNESS[ HOME ] = m_tStore_Ks_Home = val; }

template<typename T>
void SpringPropertiesForDefModel< T >::SetHomeSpringStiffnessWithoutStoreItsCurrentValue ( val  )  [inline]

Definition at line 256 of file TAPsSpringPropertiesForDefModel.hpp.

00257     {   STIFFNESS[ HOME ] = val;    }

template<typename T>
void SpringPropertiesForDefModel< T >::SetSpringRestLength ( enum CONNECT  springSelection,
val 
) [inline]

Definition at line 219 of file TAPsSpringPropertiesForDefModel.hpp.

00220     {   REST_LENGTH[ springSelection ] = val;   }

template<typename T>
void SpringPropertiesForDefModel< T >::SetSpringStiffness ( enum CONNECT  springSelection,
val 
) [inline]

Definition at line 225 of file TAPsSpringPropertiesForDefModel.hpp.

00226     {   STIFFNESS[ springSelection ] = val;
00227         if ( springSelection == HOME )
00228             m_tStore_Ks_Home = val;
00229     }

template<typename T>
void SpringPropertiesForDefModel< T >::SetToDefaultValues (  )  [inline]

Definition at line 63 of file TAPsSpringPropertiesForDefModel.hpp.

00063                                {
00064         T Kstiffness    = 1;
00065         #ifdef TAPs_MODEL_DEFORMABLE_GLSL_EXPLICIT_EULER_INTEGRATION
00066         T Kdamper       = 1;
00067         #endif // #ifdef TAPs_MODEL_DEFORMABLE_GLSL_EXPLICIT_EULER_INTEGRATION
00068         T xLen  = 0.5;
00069         T yLen  = 0.5;
00070         T zLen  = 0.5;
00071         //---------------------------------------
00072         SetValueForAllStiffnesses( Kstiffness );
00073         #ifdef TAPs_MODEL_DEFORMABLE_GLSL_EXPLICIT_EULER_INTEGRATION
00074         SetValueForAllDampers( Kdamper );
00075         #endif // #ifdef TAPs_MODEL_DEFORMABLE_GLSL_EXPLICIT_EULER_INTEGRATION
00076         SetValueForAllSpringLengths ( xLen, yLen, zLen );
00077     }

template<typename T>
void SpringPropertiesForDefModel< T >::SetValueForAllSpringLengths ( xLen,
yLen,
zLen 
) [inline]

Definition at line 342 of file TAPsSpringPropertiesForDefModel.hpp.

00343     {
00344         T xLenSqrt  = xLen * xLen;
00345         T yLenSqrt  = yLen * yLen;
00346         T zLenSqrt  = zLen * zLen;
00347         T xyLen     = sqrt( xLenSqrt + yLenSqrt );
00348         T xzLen     = sqrt( xLenSqrt + zLenSqrt );
00349         T yzLen     = sqrt( yLenSqrt + zLenSqrt );
00350         T xyzLen    = sqrt( xLenSqrt + yLenSqrt + zLenSqrt );
00351         //---------------------------------------
00352         #ifdef TAPs_DEBUG_MODE
00353         std::cout << "DEBUG REST LENGTH:\n";
00354         std::cout << "xLen: " << xLen << "\n";
00355         std::cout << "yLen: " << yLen << "\n";
00356         std::cout << "zLen: " << zLen << "\n";
00357         std::cout << "xyLen: " << xyLen << "\n";
00358         std::cout << "xzLen: " << xzLen << "\n";
00359         std::cout << "yzLen: " << yzLen << "\n";
00360         std::cout << "xyzLen: " << xyzLen << "\n";
00361         #endif // #ifdef TAPs_DEBUG_MODE
00362         //---------------------------------------
00363         REST_LENGTH[FRONT]  = zLen;
00364         REST_LENGTH[BACK]   = zLen;
00365         //---------------
00366         REST_LENGTH[EAST]   = xLen;
00367         REST_LENGTH[WEST]   = xLen;
00368         REST_LENGTH[NORTH]  = yLen;
00369         REST_LENGTH[SOUTH]  = yLen;
00370         //---------------
00371         REST_LENGTH[NORTH_EAST] = xyLen;
00372         REST_LENGTH[SOUTH_WEST] = xyLen;
00373         REST_LENGTH[NORTH_WEST] = xyLen;
00374         REST_LENGTH[SOUTH_EAST] = xyLen;
00375         //---------------
00376         REST_LENGTH[FRONT_EAST] = xzLen;
00377         REST_LENGTH[BACK_WEST]  = xzLen;
00378         REST_LENGTH[FRONT_WEST] = xzLen;
00379         REST_LENGTH[BACK_EAST]  = xzLen;
00380         //---------------
00381         REST_LENGTH[FRONT_NORTH]    = yzLen;
00382         REST_LENGTH[BACK_SOUTH]     = yzLen;
00383         REST_LENGTH[FRONT_SOUTH]    = yzLen;
00384         REST_LENGTH[BACK_NORTH]     = yzLen;
00385         //---------------
00386         REST_LENGTH[FRONT_NORTH_EAST]   = xyzLen;
00387         REST_LENGTH[BACK_SOUTH_WEST]    = xyzLen;
00388         REST_LENGTH[FRONT_NORTH_WEST]   = xyzLen;
00389         REST_LENGTH[BACK_SOUTH_EAST]    = xyzLen;
00390         //---------------
00391         REST_LENGTH[FRONT_SOUTH_WEST]   = xyzLen;
00392         REST_LENGTH[BACK_NORTH_EAST]    = xyzLen;
00393         REST_LENGTH[FRONT_SOUTH_EAST]   = xyzLen;
00394         REST_LENGTH[BACK_NORTH_WEST]    = xyzLen;
00395         //---------------
00396         REST_LENGTH[HOME]               =   0;
00397     }

template<typename T>
void SpringPropertiesForDefModel< T >::SetValueForAllStiffnesses ( val  )  [inline]

Definition at line 263 of file TAPsSpringPropertiesForDefModel.hpp.

00264     {
00265         STIFFNESS[FRONT]    =   val;
00266         STIFFNESS[BACK]     =   val;
00267         //---------------
00268         STIFFNESS[EAST]     =   val;
00269         STIFFNESS[WEST]     =   val;
00270         STIFFNESS[NORTH]    =   val;
00271         STIFFNESS[SOUTH]    =   val;
00272         //---------------
00273         STIFFNESS[NORTH_EAST]   =   val;
00274         STIFFNESS[SOUTH_WEST]   =   val;
00275         STIFFNESS[NORTH_WEST]   =   val;
00276         STIFFNESS[SOUTH_EAST]   =   val;
00277         //---------------
00278         STIFFNESS[FRONT_EAST]   =   val;
00279         STIFFNESS[BACK_WEST]    =   val;
00280         STIFFNESS[FRONT_WEST]   =   val;
00281         STIFFNESS[BACK_EAST]    =   val;
00282         //---------------
00283         STIFFNESS[FRONT_NORTH]  =   val;
00284         STIFFNESS[BACK_SOUTH]   =   val;
00285         STIFFNESS[FRONT_SOUTH]  =   val;
00286         STIFFNESS[BACK_NORTH]   =   val;
00287         //---------------
00288         STIFFNESS[FRONT_NORTH_EAST] =   val;
00289         STIFFNESS[BACK_SOUTH_WEST]  =   val;
00290         STIFFNESS[FRONT_NORTH_WEST] =   val;
00291         STIFFNESS[BACK_SOUTH_EAST]  =   val;
00292         //---------------
00293         STIFFNESS[FRONT_SOUTH_WEST] =   val;
00294         STIFFNESS[BACK_NORTH_EAST]  =   val;
00295         STIFFNESS[FRONT_SOUTH_EAST] =   val;
00296         STIFFNESS[BACK_NORTH_WEST]  =   val;
00297         //---------------
00298         STIFFNESS[HOME]             =   val;
00299         m_tStore_Ks_Home            =   val;
00300     }


Friends And Related Function Documentation

template<typename T>
friend class ModelDeformableCPU [friend]

Definition at line 22 of file TAPsSpringPropertiesForDefModel.hpp.

template<typename T>
friend class ModelDeformableGLSL [friend]

Definition at line 23 of file TAPsSpringPropertiesForDefModel.hpp.

template<typename T>
std::ostream& operator<< ( std::ostream &  output,
SpringPropertiesForDefModel< T > const &  o 
) [friend]

Definition at line 26 of file TAPsSpringPropertiesForDefModel.hpp.

00027     {
00028         output  << "\n=========================================================\n"
00029                 <<   "TAPs::OpenGL::SpringPropertiesForDefModel<" << typeid(T).name() << "> Class:\n"
00030                 <<   "=========================================================\n";
00031         //-------------------------------------------------
00032         output  << o.Info();
00033         output  << "\n=========================================================\n";
00034         //-------------------------------------------------
00035         return output;
00036     }


Member Data Documentation

template<typename T>
T SpringPropertiesForDefModel< T >::m_tStore_Ks_Home [private]

Definition at line 201 of file TAPsSpringPropertiesForDefModel.hpp.

template<typename T>
T SpringPropertiesForDefModel< T >::REST_LENGTH[28] [private]

Definition at line 184 of file TAPsSpringPropertiesForDefModel.hpp.

template<typename T>
T SpringPropertiesForDefModel< T >::STIFFNESS[28] [private]

Definition at line 185 of file TAPsSpringPropertiesForDefModel.hpp.


The documentation for this class was generated from the following file:

Generated on Mon Oct 13 11:45:57 2008 for TAPs by  doxygen 1.5.6