ROOT logo
// @(#)root/reflex:$Id: Tools.h 32228 2010-02-05 16:13:09Z axel $
// Author: Stefan Roiser 2004

// Copyright CERN, CH-1211 Geneva 23, 2004-2010, All rights reserved.
//
// Permission to use, copy, modify, and distribute this software for any
// purpose is hereby granted without fee, provided that this copyright and
// permissions notice appear in all copies and derivatives.
//
// This software is provided "as is" without express or implied warranty.

#ifndef Reflex_Tools
#define Reflex_Tools

// Include files
#include "Reflex/Kernel.h"
#include <vector>
#include <typeinfo>
#include <string>

namespace Reflex {
// forward declarations
class Function;
class Type;

enum EFUNDAMENTALTYPE {
   kCHAR,
   kSIGNED_CHAR,
   kSHORT_INT,
   kINT,
   kLONG_INT,
   kUNSIGNED_CHAR,
   kUNSIGNED_SHORT_INT,
   kUNSIGNED_INT,
   kUNSIGNED_LONG_INT,
   kBOOL,
   kFLOAT,
   kDOUBLE,
   kLONG_DOUBLE,
   kVOID,
   kLONGLONG,
   kULONGLONG,
   kNOTFUNDAMENTAL
};


namespace Tools {
/**
 * GetFundamentalType will return an enum representing the
 * fundamental type which was passed in, or NOFUNDAMENTALTYPE
 * @param typ the type passed into the system
 * @return enum representing kind of fundamental type
 */
RFLX_API EFUNDAMENTALTYPE FundamentalType(const Type& typ);


/**
 * Demangle will call the internal demangling routines and
 * return the demangled string of a At
 * @param ti the mangled At string
 * @return the demangled string
 */
RFLX_API std::string Demangle(const std::type_info& ti);


/**
 * StringSplit will return a vector of splitted strings
 * @param  splitValues returns the vector with splitted strings
 * @param  str the input string
 * @param  delim the delimiter on which to split
 */
RFLX_API void StringSplit(std::vector<std::string>& splitValues,
                          const std::string& str,
                          const std::string& delim = ",");


/**
 * StringSplitPair will return two values which are split
 * @param  val1 returns the first value
 * @param  val2 returns the second value
 * @param  str the string to be split
 * @param  delim the delimiter on which to split
 */
RFLX_API void StringSplitPair(std::string& val1,
                              std::string& val2,
                              const std::string& str,
                              const std::string& delim = ",");


/**
 * StringStrip will strip off Empty spaces of a string
 * @param str a reference to a string to be stripped
 */
RFLX_API void StringStrip(std::string& str);


/**
 * StringVec2String will take a vector of strings and return the
 * vector containees concatenated by commas
 * @param vec the vector to be converted
 * @return string of comma concatenated containees
 */
RFLX_API std::string StringVec2String(const std::vector<std::string>& vec);


RFLX_API std::string BuildTypeName(Type& t,
                                   unsigned int modifiers);


RFLX_API std::vector<std::string> GenTemplateArgVec(const std::string& name);

/**
 * GetTemplateComponents extract from 'Name' a template name and a vector containing its argument.
 *
 */
RFLX_API void GetTemplateComponents(const std::string& Name,
                                    std::string& templatename,
                                    std::vector<std::string>& args);

/**
 * GetBasePosition will return the position in a
 * string where the unscoped At begins
 */
RFLX_API size_t GetBasePosition(const std::string& name);


RFLX_API size_t GetFirstScopePosition(const std::string& name, size_t& start);


/**
 * Get the At part of a given At/member Name
 */
RFLX_API std::string GetScopeName(const std::string& name,
                                  bool startFromLeft = false);


/**
 * Get the BaseAt (unscoped) Name of a At/member Name
 */
RFLX_API std::string GetBaseName(const std::string& name,
                                 bool startFromLeft = false);


/**
 * IsTemplated returns true if the At (class) is templated
 * @param Name the At Name
 * @return true if At is templated
 */
RFLX_API bool IsTemplated(const char* name);


/**
 * templateArguments returns a string containing the template arguments
 * of a templated At (including outer angular brackets)
 * @param Name the Name of the templated At
 * @return template arguments of the templated At
 */
RFLX_API std::string GetTemplateArguments(const char* name);


/**
 * GetTemplateName returns the Name of the template At (without arguments)
 * @param Name the Name of the template At
 * @return template Name
 */
RFLX_API std::string GetTemplateName(const char* name);


RFLX_API std::string NormalizeName(const std::string& name);


RFLX_API std::string NormalizeName(const char* name);


/**
 * MakeVector is a utility function to create and initialize a std::vector of
 * number of items
 * @param t1 vector element
 * @return output vector
 */
template <typename T>
inline std::vector<T>
MakeVector(T t0) {
   std::vector<T> v;
   v.reserve(1);
   v.push_back(t0);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1) {
   std::vector<T> v;
   v.reserve(2);
   v.push_back(t0); v.push_back(t1);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2) {
   std::vector<T> v;
   v.reserve(3);
   v.push_back(t0); v.push_back(t1); v.push_back(t2);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3) {
   std::vector<T> v;
   v.reserve(4);
   v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4) {
   std::vector<T> v;
   v.reserve(5);
   v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5) {
   std::vector<T> v;
   v.reserve(6);
   v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
   v.push_back(t5);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6) {
   std::vector<T> v;
   v.reserve(7);
   v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
   v.push_back(t5); v.push_back(t6);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7) {
   std::vector<T> v;
   v.reserve(8);
   v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
   v.push_back(t5); v.push_back(t6); v.push_back(t7);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8) {
   std::vector<T> v;
   v.reserve(9);
   v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
   v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9) {
   std::vector<T> v;
   v.reserve(10);
   v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
   v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10) {
   std::vector<T> v;
   v.reserve(11);
   v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
   v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
   v.push_back(t10);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11) {
   std::vector<T> v;
   v.reserve(12);
   v.push_back(t0);  v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
   v.push_back(t5);  v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
   v.push_back(t10); v.push_back(t11);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12) {
   std::vector<T> v;
   v.reserve(13);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2); v.push_back(t3); v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8); v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13) {
   std::vector<T> v;
   v.reserve(14);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3); v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8); v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14) {
   std::vector<T> v;
   v.reserve(15);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15) {
   std::vector<T> v;
   v.reserve(16);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16) {
   std::vector<T> v;
   v.reserve(17);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16,
           T t17) {
   std::vector<T> v;
   v.reserve(18);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16); v.push_back(t17);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16,
           T t17,
           T t18) {
   std::vector<T> v;
   v.reserve(19);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16,
           T t17,
           T t18,
           T t19) {
   std::vector<T> v;
   v.reserve(20);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16,
           T t17,
           T t18,
           T t19,
           T t20) {
   std::vector<T> v;
   v.reserve(21);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
   v.push_back(t20);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16,
           T t17,
           T t18,
           T t19,
           T t20,
           T t21) {
   std::vector<T> v;
   v.reserve(22);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
   v.push_back(t20); v.push_back(t21);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16,
           T t17,
           T t18,
           T t19,
           T t20,
           T t21,
           T t22) {
   std::vector<T> v;
   v.reserve(23);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
   v.push_back(t20); v.push_back(t21); v.push_back(t22);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16,
           T t17,
           T t18,
           T t19,
           T t20,
           T t21,
           T t22,
           T t23) {
   std::vector<T> v;
   v.reserve(24);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
   v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16,
           T t17,
           T t18,
           T t19,
           T t20,
           T t21,
           T t22,
           T t23,
           T t24) {
   std::vector<T> v;
   v.reserve(25);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
   v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16,
           T t17,
           T t18,
           T t19,
           T t20,
           T t21,
           T t22,
           T t23,
           T t24,
           T t25) {
   std::vector<T> v;
   v.reserve(26);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
   v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
   v.push_back(t25);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16,
           T t17,
           T t18,
           T t19,
           T t20,
           T t21,
           T t22,
           T t23,
           T t24,
           T t25,
           T t26) {
   std::vector<T> v;
   v.reserve(27);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
   v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
   v.push_back(t25); v.push_back(t26);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16,
           T t17,
           T t18,
           T t19,
           T t20,
           T t21,
           T t22,
           T t23,
           T t24,
           T t25,
           T t26,
           T t27) {
   std::vector<T> v;
   v.reserve(28);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
   v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
   v.push_back(t25); v.push_back(t26); v.push_back(t27);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16,
           T t17,
           T t18,
           T t19,
           T t20,
           T t21,
           T t22,
           T t23,
           T t24,
           T t25,
           T t26,
           T t27,
           T t28) {
   std::vector<T> v;
   v.reserve(29);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
   v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
   v.push_back(t25); v.push_back(t26); v.push_back(t27); v.push_back(t28);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16,
           T t17,
           T t18,
           T t19,
           T t20,
           T t21,
           T t22,
           T t23,
           T t24,
           T t25,
           T t26,
           T t27,
           T t28,
           T t29) {
   std::vector<T> v;
   v.reserve(30);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
   v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
   v.push_back(t25); v.push_back(t26); v.push_back(t27); v.push_back(t28); v.push_back(t29);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16,
           T t17,
           T t18,
           T t19,
           T t20,
           T t21,
           T t22,
           T t23,
           T t24,
           T t25,
           T t26,
           T t27,
           T t28,
           T t29,
           T t30) {
   std::vector<T> v;
   v.reserve(31);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
   v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
   v.push_back(t25); v.push_back(t26); v.push_back(t27); v.push_back(t28); v.push_back(t29);
   v.push_back(t30);
   return v;
}


template <typename T>
inline std::vector<T>
MakeVector(T t0,
           T t1,
           T t2,
           T t3,
           T t4,
           T t5,
           T t6,
           T t7,
           T t8,
           T t9,
           T t10,
           T t11,
           T t12,
           T t13,
           T t14,
           T t15,
           T t16,
           T t17,
           T t18,
           T t19,
           T t20,
           T t21,
           T t22,
           T t23,
           T t24,
           T t25,
           T t26,
           T t27,
           T t28,
           T t29,
           T t30,
           T t31) {
   std::vector<T> v;
   v.reserve(32);
   v.push_back(t0);  v.push_back(t1);  v.push_back(t2);  v.push_back(t3);  v.push_back(t4);
   v.push_back(t5);  v.push_back(t6);  v.push_back(t7), v.push_back(t8);  v.push_back(t9);
   v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
   v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
   v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
   v.push_back(t25); v.push_back(t26); v.push_back(t27); v.push_back(t28); v.push_back(t29);
   v.push_back(t30); v.push_back(t31);
   return v;
}


template <typename T> class CheckPointer {
public:
   static void*
   Get(const T& value) { return (void*) &value; }

};

template <typename T> class CheckPointer<T*> {
public:
   static void*
   Get(const T& value) { return (void*) value; }

};

}    // namespace Tools
} // namespace Reflex

#endif // Reflex_Tools
 Tools.h:1
 Tools.h:2
 Tools.h:3
 Tools.h:4
 Tools.h:5
 Tools.h:6
 Tools.h:7
 Tools.h:8
 Tools.h:9
 Tools.h:10
 Tools.h:11
 Tools.h:12
 Tools.h:13
 Tools.h:14
 Tools.h:15
 Tools.h:16
 Tools.h:17
 Tools.h:18
 Tools.h:19
 Tools.h:20
 Tools.h:21
 Tools.h:22
 Tools.h:23
 Tools.h:24
 Tools.h:25
 Tools.h:26
 Tools.h:27
 Tools.h:28
 Tools.h:29
 Tools.h:30
 Tools.h:31
 Tools.h:32
 Tools.h:33
 Tools.h:34
 Tools.h:35
 Tools.h:36
 Tools.h:37
 Tools.h:38
 Tools.h:39
 Tools.h:40
 Tools.h:41
 Tools.h:42
 Tools.h:43
 Tools.h:44
 Tools.h:45
 Tools.h:46
 Tools.h:47
 Tools.h:48
 Tools.h:49
 Tools.h:50
 Tools.h:51
 Tools.h:52
 Tools.h:53
 Tools.h:54
 Tools.h:55
 Tools.h:56
 Tools.h:57
 Tools.h:58
 Tools.h:59
 Tools.h:60
 Tools.h:61
 Tools.h:62
 Tools.h:63
 Tools.h:64
 Tools.h:65
 Tools.h:66
 Tools.h:67
 Tools.h:68
 Tools.h:69
 Tools.h:70
 Tools.h:71
 Tools.h:72
 Tools.h:73
 Tools.h:74
 Tools.h:75
 Tools.h:76
 Tools.h:77
 Tools.h:78
 Tools.h:79
 Tools.h:80
 Tools.h:81
 Tools.h:82
 Tools.h:83
 Tools.h:84
 Tools.h:85
 Tools.h:86
 Tools.h:87
 Tools.h:88
 Tools.h:89
 Tools.h:90
 Tools.h:91
 Tools.h:92
 Tools.h:93
 Tools.h:94
 Tools.h:95
 Tools.h:96
 Tools.h:97
 Tools.h:98
 Tools.h:99
 Tools.h:100
 Tools.h:101
 Tools.h:102
 Tools.h:103
 Tools.h:104
 Tools.h:105
 Tools.h:106
 Tools.h:107
 Tools.h:108
 Tools.h:109
 Tools.h:110
 Tools.h:111
 Tools.h:112
 Tools.h:113
 Tools.h:114
 Tools.h:115
 Tools.h:116
 Tools.h:117
 Tools.h:118
 Tools.h:119
 Tools.h:120
 Tools.h:121
 Tools.h:122
 Tools.h:123
 Tools.h:124
 Tools.h:125
 Tools.h:126
 Tools.h:127
 Tools.h:128
 Tools.h:129
 Tools.h:130
 Tools.h:131
 Tools.h:132
 Tools.h:133
 Tools.h:134
 Tools.h:135
 Tools.h:136
 Tools.h:137
 Tools.h:138
 Tools.h:139
 Tools.h:140
 Tools.h:141
 Tools.h:142
 Tools.h:143
 Tools.h:144
 Tools.h:145
 Tools.h:146
 Tools.h:147
 Tools.h:148
 Tools.h:149
 Tools.h:150
 Tools.h:151
 Tools.h:152
 Tools.h:153
 Tools.h:154
 Tools.h:155
 Tools.h:156
 Tools.h:157
 Tools.h:158
 Tools.h:159
 Tools.h:160
 Tools.h:161
 Tools.h:162
 Tools.h:163
 Tools.h:164
 Tools.h:165
 Tools.h:166
 Tools.h:167
 Tools.h:168
 Tools.h:169
 Tools.h:170
 Tools.h:171
 Tools.h:172
 Tools.h:173
 Tools.h:174
 Tools.h:175
 Tools.h:176
 Tools.h:177
 Tools.h:178
 Tools.h:179
 Tools.h:180
 Tools.h:181
 Tools.h:182
 Tools.h:183
 Tools.h:184
 Tools.h:185
 Tools.h:186
 Tools.h:187
 Tools.h:188
 Tools.h:189
 Tools.h:190
 Tools.h:191
 Tools.h:192
 Tools.h:193
 Tools.h:194
 Tools.h:195
 Tools.h:196
 Tools.h:197
 Tools.h:198
 Tools.h:199
 Tools.h:200
 Tools.h:201
 Tools.h:202
 Tools.h:203
 Tools.h:204
 Tools.h:205
 Tools.h:206
 Tools.h:207
 Tools.h:208
 Tools.h:209
 Tools.h:210
 Tools.h:211
 Tools.h:212
 Tools.h:213
 Tools.h:214
 Tools.h:215
 Tools.h:216
 Tools.h:217
 Tools.h:218
 Tools.h:219
 Tools.h:220
 Tools.h:221
 Tools.h:222
 Tools.h:223
 Tools.h:224
 Tools.h:225
 Tools.h:226
 Tools.h:227
 Tools.h:228
 Tools.h:229
 Tools.h:230
 Tools.h:231
 Tools.h:232
 Tools.h:233
 Tools.h:234
 Tools.h:235
 Tools.h:236
 Tools.h:237
 Tools.h:238
 Tools.h:239
 Tools.h:240
 Tools.h:241
 Tools.h:242
 Tools.h:243
 Tools.h:244
 Tools.h:245
 Tools.h:246
 Tools.h:247
 Tools.h:248
 Tools.h:249
 Tools.h:250
 Tools.h:251
 Tools.h:252
 Tools.h:253
 Tools.h:254
 Tools.h:255
 Tools.h:256
 Tools.h:257
 Tools.h:258
 Tools.h:259
 Tools.h:260
 Tools.h:261
 Tools.h:262
 Tools.h:263
 Tools.h:264
 Tools.h:265
 Tools.h:266
 Tools.h:267
 Tools.h:268
 Tools.h:269
 Tools.h:270
 Tools.h:271
 Tools.h:272
 Tools.h:273
 Tools.h:274
 Tools.h:275
 Tools.h:276
 Tools.h:277
 Tools.h:278
 Tools.h:279
 Tools.h:280
 Tools.h:281
 Tools.h:282
 Tools.h:283
 Tools.h:284
 Tools.h:285
 Tools.h:286
 Tools.h:287
 Tools.h:288
 Tools.h:289
 Tools.h:290
 Tools.h:291
 Tools.h:292
 Tools.h:293
 Tools.h:294
 Tools.h:295
 Tools.h:296
 Tools.h:297
 Tools.h:298
 Tools.h:299
 Tools.h:300
 Tools.h:301
 Tools.h:302
 Tools.h:303
 Tools.h:304
 Tools.h:305
 Tools.h:306
 Tools.h:307
 Tools.h:308
 Tools.h:309
 Tools.h:310
 Tools.h:311
 Tools.h:312
 Tools.h:313
 Tools.h:314
 Tools.h:315
 Tools.h:316
 Tools.h:317
 Tools.h:318
 Tools.h:319
 Tools.h:320
 Tools.h:321
 Tools.h:322
 Tools.h:323
 Tools.h:324
 Tools.h:325
 Tools.h:326
 Tools.h:327
 Tools.h:328
 Tools.h:329
 Tools.h:330
 Tools.h:331
 Tools.h:332
 Tools.h:333
 Tools.h:334
 Tools.h:335
 Tools.h:336
 Tools.h:337
 Tools.h:338
 Tools.h:339
 Tools.h:340
 Tools.h:341
 Tools.h:342
 Tools.h:343
 Tools.h:344
 Tools.h:345
 Tools.h:346
 Tools.h:347
 Tools.h:348
 Tools.h:349
 Tools.h:350
 Tools.h:351
 Tools.h:352
 Tools.h:353
 Tools.h:354
 Tools.h:355
 Tools.h:356
 Tools.h:357
 Tools.h:358
 Tools.h:359
 Tools.h:360
 Tools.h:361
 Tools.h:362
 Tools.h:363
 Tools.h:364
 Tools.h:365
 Tools.h:366
 Tools.h:367
 Tools.h:368
 Tools.h:369
 Tools.h:370
 Tools.h:371
 Tools.h:372
 Tools.h:373
 Tools.h:374
 Tools.h:375
 Tools.h:376
 Tools.h:377
 Tools.h:378
 Tools.h:379
 Tools.h:380
 Tools.h:381
 Tools.h:382
 Tools.h:383
 Tools.h:384
 Tools.h:385
 Tools.h:386
 Tools.h:387
 Tools.h:388
 Tools.h:389
 Tools.h:390
 Tools.h:391
 Tools.h:392
 Tools.h:393
 Tools.h:394
 Tools.h:395
 Tools.h:396
 Tools.h:397
 Tools.h:398
 Tools.h:399
 Tools.h:400
 Tools.h:401
 Tools.h:402
 Tools.h:403
 Tools.h:404
 Tools.h:405
 Tools.h:406
 Tools.h:407
 Tools.h:408
 Tools.h:409
 Tools.h:410
 Tools.h:411
 Tools.h:412
 Tools.h:413
 Tools.h:414
 Tools.h:415
 Tools.h:416
 Tools.h:417
 Tools.h:418
 Tools.h:419
 Tools.h:420
 Tools.h:421
 Tools.h:422
 Tools.h:423
 Tools.h:424
 Tools.h:425
 Tools.h:426
 Tools.h:427
 Tools.h:428
 Tools.h:429
 Tools.h:430
 Tools.h:431
 Tools.h:432
 Tools.h:433
 Tools.h:434
 Tools.h:435
 Tools.h:436
 Tools.h:437
 Tools.h:438
 Tools.h:439
 Tools.h:440
 Tools.h:441
 Tools.h:442
 Tools.h:443
 Tools.h:444
 Tools.h:445
 Tools.h:446
 Tools.h:447
 Tools.h:448
 Tools.h:449
 Tools.h:450
 Tools.h:451
 Tools.h:452
 Tools.h:453
 Tools.h:454
 Tools.h:455
 Tools.h:456
 Tools.h:457
 Tools.h:458
 Tools.h:459
 Tools.h:460
 Tools.h:461
 Tools.h:462
 Tools.h:463
 Tools.h:464
 Tools.h:465
 Tools.h:466
 Tools.h:467
 Tools.h:468
 Tools.h:469
 Tools.h:470
 Tools.h:471
 Tools.h:472
 Tools.h:473
 Tools.h:474
 Tools.h:475
 Tools.h:476
 Tools.h:477
 Tools.h:478
 Tools.h:479
 Tools.h:480
 Tools.h:481
 Tools.h:482
 Tools.h:483
 Tools.h:484
 Tools.h:485
 Tools.h:486
 Tools.h:487
 Tools.h:488
 Tools.h:489
 Tools.h:490
 Tools.h:491
 Tools.h:492
 Tools.h:493
 Tools.h:494
 Tools.h:495
 Tools.h:496
 Tools.h:497
 Tools.h:498
 Tools.h:499
 Tools.h:500
 Tools.h:501
 Tools.h:502
 Tools.h:503
 Tools.h:504
 Tools.h:505
 Tools.h:506
 Tools.h:507
 Tools.h:508
 Tools.h:509
 Tools.h:510
 Tools.h:511
 Tools.h:512
 Tools.h:513
 Tools.h:514
 Tools.h:515
 Tools.h:516
 Tools.h:517
 Tools.h:518
 Tools.h:519
 Tools.h:520
 Tools.h:521
 Tools.h:522
 Tools.h:523
 Tools.h:524
 Tools.h:525
 Tools.h:526
 Tools.h:527
 Tools.h:528
 Tools.h:529
 Tools.h:530
 Tools.h:531
 Tools.h:532
 Tools.h:533
 Tools.h:534
 Tools.h:535
 Tools.h:536
 Tools.h:537
 Tools.h:538
 Tools.h:539
 Tools.h:540
 Tools.h:541
 Tools.h:542
 Tools.h:543
 Tools.h:544
 Tools.h:545
 Tools.h:546
 Tools.h:547
 Tools.h:548
 Tools.h:549
 Tools.h:550
 Tools.h:551
 Tools.h:552
 Tools.h:553
 Tools.h:554
 Tools.h:555
 Tools.h:556
 Tools.h:557
 Tools.h:558
 Tools.h:559
 Tools.h:560
 Tools.h:561
 Tools.h:562
 Tools.h:563
 Tools.h:564
 Tools.h:565
 Tools.h:566
 Tools.h:567
 Tools.h:568
 Tools.h:569
 Tools.h:570
 Tools.h:571
 Tools.h:572
 Tools.h:573
 Tools.h:574
 Tools.h:575
 Tools.h:576
 Tools.h:577
 Tools.h:578
 Tools.h:579
 Tools.h:580
 Tools.h:581
 Tools.h:582
 Tools.h:583
 Tools.h:584
 Tools.h:585
 Tools.h:586
 Tools.h:587
 Tools.h:588
 Tools.h:589
 Tools.h:590
 Tools.h:591
 Tools.h:592
 Tools.h:593
 Tools.h:594
 Tools.h:595
 Tools.h:596
 Tools.h:597
 Tools.h:598
 Tools.h:599
 Tools.h:600
 Tools.h:601
 Tools.h:602
 Tools.h:603
 Tools.h:604
 Tools.h:605
 Tools.h:606
 Tools.h:607
 Tools.h:608
 Tools.h:609
 Tools.h:610
 Tools.h:611
 Tools.h:612
 Tools.h:613
 Tools.h:614
 Tools.h:615
 Tools.h:616
 Tools.h:617
 Tools.h:618
 Tools.h:619
 Tools.h:620
 Tools.h:621
 Tools.h:622
 Tools.h:623
 Tools.h:624
 Tools.h:625
 Tools.h:626
 Tools.h:627
 Tools.h:628
 Tools.h:629
 Tools.h:630
 Tools.h:631
 Tools.h:632
 Tools.h:633
 Tools.h:634
 Tools.h:635
 Tools.h:636
 Tools.h:637
 Tools.h:638
 Tools.h:639
 Tools.h:640
 Tools.h:641
 Tools.h:642
 Tools.h:643
 Tools.h:644
 Tools.h:645
 Tools.h:646
 Tools.h:647
 Tools.h:648
 Tools.h:649
 Tools.h:650
 Tools.h:651
 Tools.h:652
 Tools.h:653
 Tools.h:654
 Tools.h:655
 Tools.h:656
 Tools.h:657
 Tools.h:658
 Tools.h:659
 Tools.h:660
 Tools.h:661
 Tools.h:662
 Tools.h:663
 Tools.h:664
 Tools.h:665
 Tools.h:666
 Tools.h:667
 Tools.h:668
 Tools.h:669
 Tools.h:670
 Tools.h:671
 Tools.h:672
 Tools.h:673
 Tools.h:674
 Tools.h:675
 Tools.h:676
 Tools.h:677
 Tools.h:678
 Tools.h:679
 Tools.h:680
 Tools.h:681
 Tools.h:682
 Tools.h:683
 Tools.h:684
 Tools.h:685
 Tools.h:686
 Tools.h:687
 Tools.h:688
 Tools.h:689
 Tools.h:690
 Tools.h:691
 Tools.h:692
 Tools.h:693
 Tools.h:694
 Tools.h:695
 Tools.h:696
 Tools.h:697
 Tools.h:698
 Tools.h:699
 Tools.h:700
 Tools.h:701
 Tools.h:702
 Tools.h:703
 Tools.h:704
 Tools.h:705
 Tools.h:706
 Tools.h:707
 Tools.h:708
 Tools.h:709
 Tools.h:710
 Tools.h:711
 Tools.h:712
 Tools.h:713
 Tools.h:714
 Tools.h:715
 Tools.h:716
 Tools.h:717
 Tools.h:718
 Tools.h:719
 Tools.h:720
 Tools.h:721
 Tools.h:722
 Tools.h:723
 Tools.h:724
 Tools.h:725
 Tools.h:726
 Tools.h:727
 Tools.h:728
 Tools.h:729
 Tools.h:730
 Tools.h:731
 Tools.h:732
 Tools.h:733
 Tools.h:734
 Tools.h:735
 Tools.h:736
 Tools.h:737
 Tools.h:738
 Tools.h:739
 Tools.h:740
 Tools.h:741
 Tools.h:742
 Tools.h:743
 Tools.h:744
 Tools.h:745
 Tools.h:746
 Tools.h:747
 Tools.h:748
 Tools.h:749
 Tools.h:750
 Tools.h:751
 Tools.h:752
 Tools.h:753
 Tools.h:754
 Tools.h:755
 Tools.h:756
 Tools.h:757
 Tools.h:758
 Tools.h:759
 Tools.h:760
 Tools.h:761
 Tools.h:762
 Tools.h:763
 Tools.h:764
 Tools.h:765
 Tools.h:766
 Tools.h:767
 Tools.h:768
 Tools.h:769
 Tools.h:770
 Tools.h:771
 Tools.h:772
 Tools.h:773
 Tools.h:774
 Tools.h:775
 Tools.h:776
 Tools.h:777
 Tools.h:778
 Tools.h:779
 Tools.h:780
 Tools.h:781
 Tools.h:782
 Tools.h:783
 Tools.h:784
 Tools.h:785
 Tools.h:786
 Tools.h:787
 Tools.h:788
 Tools.h:789
 Tools.h:790
 Tools.h:791
 Tools.h:792
 Tools.h:793
 Tools.h:794
 Tools.h:795
 Tools.h:796
 Tools.h:797
 Tools.h:798
 Tools.h:799
 Tools.h:800
 Tools.h:801
 Tools.h:802
 Tools.h:803
 Tools.h:804
 Tools.h:805
 Tools.h:806
 Tools.h:807
 Tools.h:808
 Tools.h:809
 Tools.h:810
 Tools.h:811
 Tools.h:812
 Tools.h:813
 Tools.h:814
 Tools.h:815
 Tools.h:816
 Tools.h:817
 Tools.h:818
 Tools.h:819
 Tools.h:820
 Tools.h:821
 Tools.h:822
 Tools.h:823
 Tools.h:824
 Tools.h:825
 Tools.h:826
 Tools.h:827
 Tools.h:828
 Tools.h:829
 Tools.h:830
 Tools.h:831
 Tools.h:832
 Tools.h:833
 Tools.h:834
 Tools.h:835
 Tools.h:836
 Tools.h:837
 Tools.h:838
 Tools.h:839
 Tools.h:840
 Tools.h:841
 Tools.h:842
 Tools.h:843
 Tools.h:844
 Tools.h:845
 Tools.h:846
 Tools.h:847
 Tools.h:848
 Tools.h:849
 Tools.h:850
 Tools.h:851
 Tools.h:852
 Tools.h:853
 Tools.h:854
 Tools.h:855
 Tools.h:856
 Tools.h:857
 Tools.h:858
 Tools.h:859
 Tools.h:860
 Tools.h:861
 Tools.h:862
 Tools.h:863
 Tools.h:864
 Tools.h:865
 Tools.h:866
 Tools.h:867
 Tools.h:868
 Tools.h:869
 Tools.h:870
 Tools.h:871
 Tools.h:872
 Tools.h:873
 Tools.h:874
 Tools.h:875
 Tools.h:876
 Tools.h:877
 Tools.h:878
 Tools.h:879
 Tools.h:880
 Tools.h:881
 Tools.h:882
 Tools.h:883
 Tools.h:884
 Tools.h:885
 Tools.h:886
 Tools.h:887
 Tools.h:888
 Tools.h:889
 Tools.h:890
 Tools.h:891
 Tools.h:892
 Tools.h:893
 Tools.h:894
 Tools.h:895
 Tools.h:896
 Tools.h:897
 Tools.h:898
 Tools.h:899
 Tools.h:900
 Tools.h:901
 Tools.h:902
 Tools.h:903
 Tools.h:904
 Tools.h:905
 Tools.h:906
 Tools.h:907
 Tools.h:908
 Tools.h:909
 Tools.h:910
 Tools.h:911
 Tools.h:912
 Tools.h:913
 Tools.h:914
 Tools.h:915
 Tools.h:916
 Tools.h:917
 Tools.h:918
 Tools.h:919
 Tools.h:920
 Tools.h:921
 Tools.h:922
 Tools.h:923
 Tools.h:924
 Tools.h:925
 Tools.h:926
 Tools.h:927
 Tools.h:928
 Tools.h:929
 Tools.h:930
 Tools.h:931
 Tools.h:932
 Tools.h:933
 Tools.h:934
 Tools.h:935
 Tools.h:936
 Tools.h:937
 Tools.h:938
 Tools.h:939
 Tools.h:940
 Tools.h:941
 Tools.h:942
 Tools.h:943
 Tools.h:944
 Tools.h:945
 Tools.h:946
 Tools.h:947
 Tools.h:948
 Tools.h:949
 Tools.h:950
 Tools.h:951
 Tools.h:952
 Tools.h:953
 Tools.h:954
 Tools.h:955
 Tools.h:956
 Tools.h:957
 Tools.h:958
 Tools.h:959
 Tools.h:960
 Tools.h:961
 Tools.h:962
 Tools.h:963
 Tools.h:964
 Tools.h:965
 Tools.h:966
 Tools.h:967
 Tools.h:968
 Tools.h:969
 Tools.h:970
 Tools.h:971
 Tools.h:972
 Tools.h:973
 Tools.h:974
 Tools.h:975
 Tools.h:976
 Tools.h:977
 Tools.h:978
 Tools.h:979
 Tools.h:980
 Tools.h:981
 Tools.h:982
 Tools.h:983
 Tools.h:984
 Tools.h:985
 Tools.h:986
 Tools.h:987
 Tools.h:988
 Tools.h:989
 Tools.h:990
 Tools.h:991
 Tools.h:992
 Tools.h:993
 Tools.h:994
 Tools.h:995
 Tools.h:996
 Tools.h:997
 Tools.h:998
 Tools.h:999
 Tools.h:1000
 Tools.h:1001
 Tools.h:1002
 Tools.h:1003
 Tools.h:1004
 Tools.h:1005
 Tools.h:1006
 Tools.h:1007
 Tools.h:1008
 Tools.h:1009
 Tools.h:1010
 Tools.h:1011
 Tools.h:1012
 Tools.h:1013
 Tools.h:1014
 Tools.h:1015
 Tools.h:1016
 Tools.h:1017
 Tools.h:1018
 Tools.h:1019
 Tools.h:1020
 Tools.h:1021
 Tools.h:1022
 Tools.h:1023
 Tools.h:1024
 Tools.h:1025
 Tools.h:1026
 Tools.h:1027
 Tools.h:1028
 Tools.h:1029
 Tools.h:1030
 Tools.h:1031
 Tools.h:1032
 Tools.h:1033
 Tools.h:1034
 Tools.h:1035
 Tools.h:1036
 Tools.h:1037
 Tools.h:1038
 Tools.h:1039
 Tools.h:1040
 Tools.h:1041
 Tools.h:1042
 Tools.h:1043
 Tools.h:1044
 Tools.h:1045
 Tools.h:1046
 Tools.h:1047
 Tools.h:1048
 Tools.h:1049
 Tools.h:1050
 Tools.h:1051
 Tools.h:1052
 Tools.h:1053
 Tools.h:1054
 Tools.h:1055
 Tools.h:1056
 Tools.h:1057
 Tools.h:1058
 Tools.h:1059
 Tools.h:1060
 Tools.h:1061
 Tools.h:1062
 Tools.h:1063
 Tools.h:1064
 Tools.h:1065
 Tools.h:1066
 Tools.h:1067
 Tools.h:1068
 Tools.h:1069
 Tools.h:1070
 Tools.h:1071
 Tools.h:1072
 Tools.h:1073
 Tools.h:1074
 Tools.h:1075
 Tools.h:1076
 Tools.h:1077
 Tools.h:1078
 Tools.h:1079
 Tools.h:1080
 Tools.h:1081
 Tools.h:1082
 Tools.h:1083
 Tools.h:1084
 Tools.h:1085
 Tools.h:1086
 Tools.h:1087
 Tools.h:1088
 Tools.h:1089
 Tools.h:1090
 Tools.h:1091
 Tools.h:1092
 Tools.h:1093
 Tools.h:1094
 Tools.h:1095
 Tools.h:1096
 Tools.h:1097
 Tools.h:1098
 Tools.h:1099
 Tools.h:1100
 Tools.h:1101