Libbarrett  1.2.4
include/barrett/math/traits.h
00001 /*
00002  * traits.h
00003  *
00004  *  Created on: Feb 17, 2010
00005  *      Author: dc
00006  */
00007 
00008 #ifndef BARRETT_MATH_TRAITS_H_
00009 #define BARRETT_MATH_TRAITS_H_
00010 
00011 
00012 namespace barrett {
00013 namespace math {
00014 
00015 
00016 // TODO(dc): test!
00017 
00018 // Default designed for built-in arithmetic types.
00019 template<typename T> struct Traits {
00020         typedef T unitless_type;
00021         static const bool RequiresAlignment = false;
00022 
00023 
00024         static T zero() {
00025                 return T();
00026         }
00027 
00028         static void zero(T& t) {
00029                 t = 0;
00030         }
00031 
00032         static T add(T l, T r) {
00033                 return l + r;
00034         }
00035 
00036         static T sub(T l, T r) {
00037                 return l - r;
00038         }
00039 
00040         static T neg(T t) {
00041                 return -t;
00042         }
00043 
00044         static T mult(T l, T r) {
00045                 return l * r;
00046         }
00047 
00048         static T div(T l, T r) {
00049                 return l / r;
00050         }
00051 };
00052 
00053 
00054 }
00055 }
00056 
00057 
00058 #endif /* BARRETT_MATH_TRAITS_H_ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Defines