#ifndef __COSMOTOOL_CONFIG_HPP #define __COSMOTOOL_CONFIG_HPP #include #include #include namespace CosmoTool { #define NUMDIMS 3 #define NUMCUBES 8 /** * Base type to specity at what precision we * must achieve computations. */ typedef double ComputePrecision; /** * Coordinate type (should be a 3-array). */ typedef double Coordinates[NUMDIMS]; /* * Single precision coordinates. */ typedef float FCoordinates[NUMDIMS]; /** * This function is used whenever one needs a general * conversion between mass and luminosity (or the opposite). * It should take a "mass" (or luminosity) in input, a unit is * given to convert this mass into solar units. The output should * be the "luminosity" (or mass), in solar units. */ typedef double (*BiasFunction)(double mass, double unit); /** * Function to copy the coordinates "a" into "b". */ inline void copyCoordinates(const Coordinates& a, Coordinates& b) { memcpy(b, a, sizeof(a)); } /** * Base exception class for all exceptions handled by * this library. */ class Exception : public std::exception { public: Exception(const char *mess = 0) : msg(mess) {} const char *getMessage() const { return msg != 0 ? msg : "No message"; }; virtual const char *what() const throw () { return msg != 0 ? msg : "What 'what' ?"; }; private: const char *msg; }; /** * Exception raised when an invalid argument has been * passed to a function of the library. */ class InvalidArgumentException : public Exception { public: InvalidArgumentException(const char *mess = 0) : Exception(mess) {} }; /** */ class InvalidRangeException : public Exception { public: InvalidRangeException(const char *mess = 0) : Exception(mess) {} }; /** */ class NoSuchFileException : public Exception { public: NoSuchFileException(const char *mess = 0) : Exception(mess) {} }; /** */ class InvalidFileFormatException : public Exception { public: InvalidFileFormatException(const char *mess = 0) : Exception(mess) {} }; class EndOfFileException: public Exception { public: EndOfFileException(const char *mess = 0) : Exception(mess) {} }; class FilesystemFullException: public Exception { public: FilesystemFullException(const char *mess = 0) : Exception(mess) {} }; }; #endif