1 #ifndef SimTK_SimTKCOMMON_COMMON_H_     2 #define SimTK_SimTKCOMMON_COMMON_H_   104 #ifndef SimTK_DEFAULT_PRECISION   105 #   define SimTK_DEFAULT_PRECISION 2   108 #if   (SimTK_DEFAULT_PRECISION == 1)   111 #elif (SimTK_DEFAULT_PRECISION == 2)   114 #elif (SimTK_DEFAULT_PRECISION == 4)   118     #error ILLEGAL VALUE FOR DEFAULT PRECISION   122     #if defined(__cplusplus)   124         #define SimTK_DEBUG(s) std::printf("DBG: " s)   125         #define SimTK_DEBUG1(s,a1) std::printf("DBG: " s,a1)       126         #define SimTK_DEBUG2(s,a1,a2) std::printf("DBG: " s,a1,a2)       127         #define SimTK_DEBUG3(s,a1,a2,a3) std::printf("DBG: " s,a1,a2,a3)       128         #define SimTK_DEBUG4(s,a1,a2,a3,a4) std::printf("DBG: " s,a1,a2,a3,a4)   131         #define SimTK_DEBUG(s) printf("DBG: " s)   132         #define SimTK_DEBUG1(s,a1) printf("DBG: " s,a1)       133         #define SimTK_DEBUG2(s,a1,a2) printf("DBG: " s,a1,a2)       134         #define SimTK_DEBUG3(s,a1,a2,a3) printf("DBG: " s,a1,a2,a3)       135         #define SimTK_DEBUG4(s,a1,a2,a3,a4) printf("DBG: " s,a1,a2,a3,a4)   138     #define SimTK_DEBUG(s)   139     #define SimTK_DEBUG1(s,a1)   140     #define SimTK_DEBUG2(s,a1,a2)   141     #define SimTK_DEBUG3(s,a1,a2,a3)       142     #define SimTK_DEBUG4(s,a1,a2,a3,a4)   167     #pragma warning(disable:4231)    168     #pragma warning(disable:4251)    169     #pragma warning(disable:4275)    170     #pragma warning(disable:4345)    177     #ifndef HAVE_STRUCT_TIMESPEC   178     #define HAVE_STRUCT_TIMESPEC 1   188     #if defined(SimTK_SimTKCOMMON_BUILDING_SHARED_LIBRARY)   189         #define SimTK_SimTKCOMMON_EXPORT __declspec(dllexport)   192         #pragma warning(disable:4661)   194     #elif defined(SimTK_SimTKCOMMON_BUILDING_STATIC_LIBRARY) || defined(SimTK_USE_STATIC_LIBRARIES)   195         #define SimTK_SimTKCOMMON_EXPORT   197         #define SimTK_SimTKCOMMON_EXPORT __declspec(dllimport)    218     #define SimTK_SimTKCOMMON_EXPORT // Linux, Mac   224 #if defined(__cplusplus)   236 #if defined(__cplusplus)   244 #if defined(__cplusplus)   259     #if _MSC_VER>=1700 || (defined(__GNUG__) && __cplusplus>=201103L)   261         #define OVERRIDE_11  override   262         #define FINAL_11     final   264         #define OVERRIDE_11  override   265         #define FINAL_11     sealed   280     #define SimTK_FORCE_INLINE __forceinline   282     #define SimTK_FORCE_INLINE __attribute__((always_inline))   289 #if defined(_MSC_VER) && (_MSC_VER <= 1700) // VC++ 12 (2013, _MSC_VER=1800) added these   291 inline bool isfinite(
float f) {
return _finite(f) != 0;}
   292 inline bool isfinite(
double d) {
return _finite(d) != 0;}
   293 inline bool isfinite(
long double l) {
return _finite(l) != 0;}
   294 inline bool isnan(
float f) {
return _isnan(f) != 0;}
   295 inline bool isnan(
double d) {
return _isnan(d) != 0;}
   296 inline bool isnan(
long double l) {
return _isnan(l) != 0;}
   297 inline bool isinf(
float f) {
return std::abs(f)==std::numeric_limits<float>::infinity();}
   298 inline bool isinf(
double d) {
return std::abs(d)==std::numeric_limits<double>::infinity();}
   299 inline bool isinf(
long double l) {
return std::abs(l)==std::numeric_limits<double>::infinity();}
   300 inline bool signbit(
float f) {
return (*reinterpret_cast<unsigned*>(&f) & 0x80000000U) != 0;}
   301 inline bool signbit(
double d) {
return (*reinterpret_cast<unsigned long long*>(&d)
   302                                 & 0x8000000000000000ULL) != 0;}
   303 inline bool signbit(
long double l) {
return (*reinterpret_cast<unsigned long long*>(&l)
   304                                     & 0x8000000000000000ULL) != 0;}
   321 inline bool canStoreInInt(
unsigned int  u) {
return (
unsigned int)(int(u)) == u;}
   323 inline bool canStoreInInt(
unsigned long u) {
return (
unsigned long)(int(u)) == u;}
   325 inline bool canStoreInInt(
unsigned long long u) {
return (
unsigned long long)(int(u)) == u;}
   348 inline bool isSizeInRange(
signed char    sz, 
signed char    mx){
return 0<=sz&&sz<=mx;}
   352 inline bool isSizeInRange(
long long      sz, 
long long      mx){
return 0<=sz&&sz<=mx;}
   353 inline bool isSizeInRange(
unsigned char  sz, 
unsigned char  mx){
return sz<=mx;}
   354 inline bool isSizeInRange(
unsigned short sz, 
unsigned short mx){
return sz<=mx;}
   356 inline bool isSizeInRange(
unsigned long  sz, 
unsigned long  mx){
return sz<=mx;}
   357 inline bool isSizeInRange(
unsigned long long sz, 
unsigned long long mx){
return sz<=mx;}
   376 inline bool isIndexInRange(
unsigned long long ix, 
unsigned long long sz){
return ix<sz;}
   435 #define SimTK_DEFINE_UNIQUE_INDEX_TYPE(NAME)                   \   436     SimTK_DEFINE_AND_EXPORT_UNIQUE_LOCAL_INDEX_TYPE(,,,NAME)   \   437     static const NAME Invalid ## NAME;   441 #define SimTK_DEFINE_AND_EXPORT_UNIQUE_INDEX_TYPE(EXPORT,NAME)     \   442     SimTK_DEFINE_AND_EXPORT_UNIQUE_LOCAL_INDEX_TYPE(EXPORT,,,NAME) \   443     static const NAME Invalid ## NAME;   446 #define SimTK_DEFINE_UNIQUE_LOCAL_INDEX_TYPE(PARENT,NAME) \   447     SimTK_DEFINE_AND_EXPORT_UNIQUE_LOCAL_INDEX_TYPE(,PARENT,::,NAME)   451 #define SimTK_DEFINE_AND_EXPORT_UNIQUE_LOCAL_INDEX_TYPE(EXPORT,PARENT,SEP,NAME)   \   452 class EXPORT NAME {                         \   455     NAME() : ix(SimTK::InvalidIndex) { }       \   456     explicit NAME(int i) : ix(i)      {assert(i>=0 || i==SimTK::InvalidIndex);} \   457     explicit NAME(long l): ix((int)l) {assert(SimTK::canStoreInNonnegativeInt(l));}    \   458     explicit NAME(unsigned int  u)  : ix((int)u)  {assert(SimTK::canStoreInInt(u));}   \   459     explicit NAME(unsigned long ul) : ix((int)ul) {assert(SimTK::canStoreInInt(ul));}  \   460     operator int() const {return ix;}               \   461     bool isValid() const {return ix>=0;}            \   462     bool isValidExtended() const {return ix>=-1;}   \   463     void invalidate(){ix=SimTK::InvalidIndex;}      \   465     bool operator==(int  i) const {assert(isValidExtended() && isValidExtended(i)); return ix==i;}    \   466     bool operator==(short s) const{assert(isValidExtended() && isValidExtended(s)); return ix==(int)s;}  \   467     bool operator==(long l) const {assert(isValidExtended() && isValidExtended(l)); return ix==(int)l;}  \   468     bool operator==(unsigned int  u)  const {assert(isValidExtended() && isValid(u)); return ix==(int)u;}   \   469     bool operator==(unsigned short us)const {assert(isValidExtended() && isValid(us)); return ix==(int)us;} \   470     bool operator==(unsigned long ul) const {assert(isValidExtended() && isValid(ul)); return ix==(int)ul;} \   471     bool operator!=(int  i)           const {return !operator==(i);}    \   472     bool operator!=(short s)          const {return !operator==(s);}    \   473     bool operator!=(long l)           const {return !operator==(l);}    \   474     bool operator!=(unsigned int  u)  const {return !operator==(u);}    \   475     bool operator!=(unsigned long ul) const {return !operator==(ul);}   \   477     bool operator< (int  i) const {assert(isValidExtended() && isValidExtended(i)); return ix<i;}        \   478     bool operator< (short s) const{assert(isValidExtended() && isValidExtended(s)); return ix<(int)s;}   \   479     bool operator< (long l) const {assert(isValidExtended() && isValidExtended(l)); return ix<(int)l;}   \   480     bool operator< (unsigned int  u)  const {assert(isValidExtended() && isValid(u));  return ix<(int)u;}    \   481     bool operator< (unsigned short us)const {assert(isValidExtended() && isValid(us)); return ix<(int)us;}   \   482     bool operator< (unsigned long ul) const {assert(isValidExtended() && isValid(ul)); return ix<(int)ul;}   \   483     bool operator>=(int  i)           const {return !operator<(i);}    \   484     bool operator>=(short s)          const {return !operator<(s);}    \   485     bool operator>=(long l)           const {return !operator<(l);}    \   486     bool operator>=(unsigned int  u)  const {return !operator<(u);}    \   487     bool operator>=(unsigned short us)const {return !operator<(us);}   \   488     bool operator>=(unsigned long ul) const {return !operator<(ul);}   \   490     bool operator> (int  i) const {assert(isValidExtended() && isValidExtended(i)); return ix>i;}        \   491     bool operator> (short s) const{assert(isValidExtended() && isValidExtended(s)); return ix>(int)s;}   \   492     bool operator> (long l) const {assert(isValidExtended() && isValidExtended(l)); return ix>(int)l;}   \   493     bool operator> (unsigned int  u)  const {assert(isValidExtended() && isValid(u));  return ix>(int)u;}    \   494     bool operator> (unsigned short us)const {assert(isValidExtended() && isValid(us)); return ix>(int)us;}   \   495     bool operator> (unsigned long ul) const {assert(isValidExtended() && isValid(ul)); return ix>(int)ul;}   \   496     bool operator<=(int  i)           const {return !operator>(i);}    \   497     bool operator<=(short s)          const {return !operator>(s);}    \   498     bool operator<=(long l)           const {return !operator>(l);}    \   499     bool operator<=(unsigned int  u)  const {return !operator>(u);}    \   500     bool operator<=(unsigned short us)const {return !operator>(us);}   \   501     bool operator<=(unsigned long ul) const {return !operator>(ul);}   \   503     const NAME& operator++() {assert(isValid()); ++ix; return *this;}          \   504     NAME operator++(int)     {assert(isValid()); ++ix; return NAME(ix-1);}     \   505     const NAME& operator--() {assert(isValid()); --ix; return *this;}          \   506     NAME operator--(int)     {assert(isValid()); --ix; return NAME(ix+1);}     \   507     NAME next() const {assert(isValid()); return NAME(ix+1);}                             \   508     NAME prev() const {assert(isValid()); return NAME(ix-1);}          \   510     NAME& operator+=(int i)  {assert(isValid() && isValidExtended(ix+i)); ix+=i; return *this;}     \   511     NAME& operator-=(int i)  {assert(isValid() && isValidExtended(ix-i)); ix-=i; return *this;}     \   512     NAME& operator+=(short s){assert(isValid() && SimTK::canStoreInInt(s) && isValidExtended(ix+(int)s)); ix+=(int)s; return *this;}     \   513     NAME& operator-=(short s){assert(isValid() && SimTK::canStoreInInt(s) && isValidExtended(ix-(int)s)); ix-=(int)s; return *this;}     \   514     NAME& operator+=(long l) {assert(isValid() && SimTK::canStoreInInt(l) && isValidExtended(ix+(int)l)); ix+=(int)l; return *this;}     \   515     NAME& operator-=(long l) {assert(isValid() && SimTK::canStoreInInt(l) && isValidExtended(ix-(int)l)); ix-=(int)l; return *this;}     \   516     NAME& operator+=(unsigned int  u)  {assert(isValid()&& SimTK::canStoreInInt(u)  && isValid(ix+(int)u));  ix+=(int)u;  return *this;}  \   517     NAME& operator-=(unsigned int  u)  {assert(isValid()&& SimTK::canStoreInInt(u)  && isValidExtended(ix-(int)u));  ix-=(int)u;  return *this;}  \   518     NAME& operator+=(unsigned short us){assert(isValid()&& SimTK::canStoreInInt(us) && isValid(ix+(int)us)); ix+=(int)us; return *this;}  \   519     NAME& operator-=(unsigned short us){assert(isValid()&& SimTK::canStoreInInt(us) && isValidExtended(ix-(int)us)); ix-=(int)us; return *this;}  \   520     NAME& operator+=(unsigned long ul) {assert(isValid()&& SimTK::canStoreInInt(ul) && isValid(ix+(int)ul)); ix+=(int)ul; return *this;}  \   521     NAME& operator-=(unsigned long ul) {assert(isValid()&& SimTK::canStoreInInt(ul) && isValidExtended(ix-(int)ul)); ix-=(int)ul; return *this;}  \   523     static const NAME& Invalid() {static const NAME invalid; return invalid;}       \   524     static bool isValid(int  i) {return i>=0;}                                      \   525     static bool isValid(short s){return s>=0;}                                      \   526     static bool isValid(long l) {return SimTK::canStoreInNonnegativeInt(l);}        \   527     static bool isValid(unsigned int  u)  {return SimTK::canStoreInInt(u);}         \   528     static bool isValid(unsigned short)   {return true;}                            \   529     static bool isValid(unsigned long ul) {return SimTK::canStoreInInt(ul);}        \   530     static bool isValidExtended(int  i) {return i>=-1;}                             \   531     static bool isValidExtended(short s){return s>=-1;}                             \   532     static bool isValidExtended(long l) {return SimTK::canStoreInInt(l) && l>=-1;}  \   534     typedef int size_type;                                                  \   535     typedef int difference_type;                                            \   536     static size_type max_size() {return std::numeric_limits<int>::max();}   \   546     #define SimTK_DYNAMIC_CAST_DEBUG dynamic_cast   // safe but slow   548     #define SimTK_DYNAMIC_CAST_DEBUG static_cast    // unsafe but fast   554 #define SimTK_DOWNCAST(Derived,Parent)                          \   555     static bool isA(const Parent& p)                            \   556         { return dynamic_cast<const Derived*>(&p) != 0; }       \   557     static const Derived& downcast(const Parent& p)             \   558         { return SimTK_DYNAMIC_CAST_DEBUG<const Derived&>(p); } \   559     static Derived& updDowncast(Parent& p)                      \   560         { return SimTK_DYNAMIC_CAST_DEBUG<Derived&>(p); }        \   561     static Derived& downcast(Parent& p)                         \   562         { return SimTK_DYNAMIC_CAST_DEBUG<Derived&>(p); }   566 #define SimTK_DOWNCAST2(Derived,Helper,Parent)                          \   567     static bool isA(const Parent& p)                                    \   568         { return Helper::isA(p); }                                      \   569     static const Derived& downcast(const Parent& p)                     \   570         { return static_cast<const Derived&>(Helper::downcast(p)); }    \   571     static Derived& updDowncast(Parent& p)                                \   572         { return static_cast<Derived&>(Helper::downcast(p)); }            \   573     static Derived& downcast(Parent& p)                                 \   574         { return static_cast<Derived&>(Helper::downcast(p)); }   580 #define SimTK_PIMPL_DOWNCAST(Derived, Parent)           \   581     static bool           isInstanceOf(const Parent&);  \   582     static const Derived& downcast(const Parent&);      \   583     static Derived&       updDowncast(Parent&)   589 namespace Exception { }
   605 template <
int M, 
class ELT=Real, 
int STRIDE=1>              
class Vec;
   606 template <
int N, 
class ELT=Real, 
int STRIDE=1>              
class Row; 
   607 template <
int M, 
int N, 
class ELT=Real, 
int CS=M, 
int RS=1> 
class Mat;
   608 template <
int M, 
class ELT=Real, 
int RS=1>                  
class SymMat;
   614     explicit Segment(
int l, 
int ofs=0) : length(l), offset(ofs) { 
   615         assert(l>=0 && ofs>=0);
   669     static const bool result = 
false;
   673 #define SimTK_SPECIALIZE_INTEGRAL_TYPE(T)       \   674     template<> struct IsIntegralType<T>         \   675     {typedef TrueType Result; static const bool result = true;}   700     static const bool result = 
false;
   704 #define SimTK_SPECIALIZE_FLOATING_TYPE(T)       \   705     template<> struct IsFloatingType<T>         \   706     {typedef TrueType Result; static const bool result = true;}   719     static const bool result = 
false;
   765     static const char* 
name() {
return typeid(T).
name();}
   780 #define SimTK_NICETYPENAME_LITERAL(T)               \   782     template <> struct NiceTypeName< T > {          \   783         static std::string namestr() { return #T; } \   784         static const char* name() { return #T; }    \ This is an operator for exclusive or-ing compile-time truth types. 
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:656
 
#define SimTK_SimTKCOMMON_EXPORT
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:218
 
OrOpType< typename IsIntegralType< T >::Result, typename IsFloatingType< T >::Result > Result
This typedef is TrueType if the template type T is one of the integral; or floating point types...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:730
 
This is a small, fixed-size symmetric or Hermitian matrix designed for no-overhead inline computation...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:608
 
TrueType Result
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:646
 
This is a special type used for causing invocation of a particular constructor or method overload tha...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:628
 
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
 
#define SimTK_SPECIALIZE_INTEGRAL_TYPE(T)          
This macro must be invoked once for each of the built-in integral types to specialize the IsIntegralT...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:673
 
std::complex< Real > Complex
This is the default complex type for SimTK, with precision for the real and imaginary parts set to th...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:596
 
Segment()
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:613
 
static std::string namestr()
The default implementation of namestr() attempts to return a nicely demangled type name on all platfo...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:769
 
static const int InvalidIndex
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:399
 
double SimTK_Real
This type is for use in C; in C++ use SimTK::Real instead. 
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:113
 
SimTK_Real Real
This is the default compiled-in floating point type for SimTK, either float or double. 
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:593
 
FalseType Result
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:643
 
TrueType Result
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:722
 
Compile-time type test: is this the void type?. 
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:713
 
TrueType Result
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:652
 
This is a compile-time equivalent of "false", used in compile-time condition checking in templatized ...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:636
 
Is64BitHelper< Is64BitPlatform >::Result Is64BitPlatformType
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:750
 
FalseType Result
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:650
 
Segment(int l, int ofs=0)
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:614
 
static const char * name()
The default implementation of name() here returns the raw result from typeid(T).name() which will be ...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:765
 
This is a fixed-length column vector designed for no-overhead inline computation. ...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:605
 
FalseType Result
This typedef is TrueType if the template type T is "void"; otherwise it is FalseType. 
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:716
 
TrueType Result
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:653
 
This is an operator for or-ing compile-time truth types. 
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:649
 
std::string demangle(const char *name)
Attempt to demangle a type name as returned by typeid.name(), with the result hopefully suitable for ...
 
FalseType Result
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:660
 
TrueType Result
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:658
 
Compile-time test: is this one of the built-in "arithmetic" types, meaning an integral or floating ty...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:726
 
void SimTK_about_SimTKcommon(const char *key, int maxlen, char *value)
Obtain "about" information for the currently-loaded SimTKcommon library. 
 
void SimTK_version_SimTKcommon(int *major, int *minor, int *build)
Obtain version information for the currently-loaded SimTKcommon library. 
 
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:739
 
This is a compile-time equivalent of "true", used in compile-time condition checking in templatized i...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:639
 
This is a special type used for forcing invocation of a particularly dangerous constructor or method ...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:632
 
Compile-time type test: is this one of the built-in integral types?. 
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:663
 
std::complex< double > dComplex
An abbreviation for std::complex<double> for consistency with others. 
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:600
 
FalseType Result
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:743
 
FalseType Result
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:657
 
#define SimTK_NICETYPENAME_LITERAL(T)                          
This specializes the name of a type to be exactly the text you use to specify it, rather than whateve...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:780
 
Compile-time type test: is this one of the built-in floating point types?. 
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:694
 
FalseType Result
This typedef is TrueType if the template type T is an integral type; otherwise it is FalseType...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:666
 
FalseType Result
This typedef is TrueType if the template type T is a floating point type; otherwise it is FalseType...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:697
 
RowVectorBase< typename CNT< ELEM >::TAbs > abs(const RowVectorBase< ELEM > &v)
Definition: VectorMath.h:120
 
FalseType Result
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:644
 
This is a fixed-length row vector designed for no-overhead inline computation. 
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:606
 
bool isNonnegative(unsigned long long)
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:394
 
std::complex< float > fComplex
An abbreviation for std::complex<float> for consistency with others. 
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:598
 
TrueType Result
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:659
 
In case you don't like the name you get from typeid(), you can specialize this class to provide a nic...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:761
 
A convenient struct for anything requiring an offset and length to specify a segment of some larger s...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:612
 
static const bool Is64BitPlatform
Compile-time test: this typedef will be TrueType if this is a 64-bit platform, meaning that the size ...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:749
 
int length
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:618
 
#define SimTK_SPECIALIZE_FLOATING_TYPE(T)          
This macro must be invoked once for each of the built-in floating point types to specialize the IsFlo...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:704
 
This class represents a small matrix whose size is known at compile time, containing elements of any ...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:607
 
bool canStoreInInt(unsigned long long u)
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:325
 
bool isSizeInRange(unsigned long long sz, unsigned long long mx)
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:357
 
This is an operator for and-ing compile-time truth types. 
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:642
 
int offset
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:619
 
bool canStoreInNonnegativeInt(unsigned long long u)
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:340
 
TrueType Result
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:741
 
bool isIndexInRange(unsigned long long ix, unsigned long long sz)
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:376
 
TrueType Result
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:651
 
FalseType Result
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:645