GeNN  4.9.0
GPU enhanced Neuronal Networks (GeNN)
gennUtils.h File Reference
#include <array>
#include <iomanip>
#include <limits>
#include <sstream>
#include <string>
#include <type_traits>
#include <vector>
#include <cstring>
#include <sha1.hpp>
#include "gennExport.h"

Go to the source code of this file.

Classes

struct  Utils::SHA1Hash
 Functor for generating a hash suitable for use in std::unordered_map etc (i.e. size_t size) from a SHA1 digests. More...
 

Namespaces

 Models
 Base class for all models - in addition to the parameters snippets have, models can have state variables.
 
 Utils
 

Functions

GENN_EXPORT bool Utils::isRNGRequired (const std::string &code)
 Does the code string contain any functions requiring random number generator. More...
 
GENN_EXPORT bool Utils::isRNGRequired (const std::vector< Models::VarInit > &varInitialisers)
 Does the model with the vectors of variable initialisers and modes require an RNG for the specified init location i.e. host or device. More...
 
GENN_EXPORT bool Utils::isTypePointer (const std::string &type)
 Function to determine whether a string containing a type is a pointer. More...
 
GENN_EXPORT bool Utils::isTypePointerToPointer (const std::string &type)
 Function to determine whether a string containing a type is a pointer to a pointer. More...
 
GENN_EXPORT bool Utils::isTypeFloatingPoint (const std::string &type)
 Function to determine whether a string containing a type is floating point. More...
 
GENN_EXPORT std::string Utils::getUnderlyingType (const std::string &type)
 Assuming type is a string containing a pointer type, function to return the underlying type. More...
 
GENN_EXPORT void Utils::validateVarName (const std::string &name, const std::string &description)
 Is the variable name valid? GeNN variable names must obey C variable naming rules. More...
 
GENN_EXPORT void Utils::validatePopName (const std::string &name, const std::string &description)
 Is the population name valid? GeNN population names obey C variable naming rules but can start with a number. More...
 
GENN_EXPORT void Utils::validateParamNames (const std::vector< std::string > &paramNames)
 Are all the parameter names in vector valid? GeNN variables and population names must obey C variable naming rules. More...
 
template<typename T >
void Utils::validateVecNames (const std::vector< T > &vec, const std::string &description)
 Are the 'name' fields of all structs in vector valid? GeNN variables and population names must obey C variable naming rules. More...
 
template<class T , typename std::enable_if< std::is_floating_point< T >::value >::type * = nullptr>
void Utils::writePreciseString (std::ostream &os, T value)
 This function writes a floating point value to a stream -setting the precision so no digits are lost. More...
 
template<class T , typename std::enable_if< std::is_floating_point< T >::value >::type * = nullptr>
std::string Utils::writePreciseString (T value)
 This function writes a floating point value to a string - setting the precision so no digits are lost. More...
 
template<typename T , typename std::enable_if< std::is_arithmetic< T >::value||std::is_enum< T >::value >::type * = nullptr>
void Utils::updateHash (const T &value, boost::uuids::detail::sha1 &hash)
 Hash arithmetic types and enums. More...
 
void Utils::updateHash (const std::string &string, boost::uuids::detail::sha1 &hash)
 Hash strings. More...
 
template<typename T , size_t N>
void Utils::updateHash (const std::array< T, N > &array, boost::uuids::detail::sha1 &hash)
 Hash arrays of types which can, themselves, be hashed. More...
 
template<typename T >
void Utils::updateHash (const std::vector< T > &vector, boost::uuids::detail::sha1 &hash)
 Hash vectors of types which can, themselves, be hashed. More...
 
void Utils::updateHash (const std::vector< bool > &vector, boost::uuids::detail::sha1 &hash)
 Hash vectors of bools. More...