Util.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include <cstdlib>
  2. #include <cmath>
  3. #include <cstring>
  4. #include <fstream>
  5. #include "anki/util/Util.h"
  6. #include "anki/util/Exception.h"
  7. namespace anki {
  8. //==============================================================================
  9. int Util::randRange(int min, int max)
  10. {
  11. return (rand() % (max-min+1)) + min ;
  12. }
  13. //==============================================================================
  14. uint Util::randRange(uint min, uint max)
  15. {
  16. return (rand() % (max-min+1)) + min ;
  17. }
  18. //==============================================================================
  19. float Util::randRange(float min, float max)
  20. {
  21. float r = (float)rand() / (float)RAND_MAX;
  22. return min + r * (max - min);
  23. }
  24. //==============================================================================
  25. double Util::randRange(double min, double max)
  26. {
  27. double r = (double)rand() / (double)RAND_MAX;
  28. return min + r * (max - min);
  29. }
  30. //==============================================================================
  31. std::string Util::readFile(const char* filename)
  32. {
  33. std::ifstream file(filename);
  34. if (!file.is_open())
  35. {
  36. throw ANKI_EXCEPTION("Cannot open file \"" + filename + "\"");
  37. }
  38. return std::string((std::istreambuf_iterator<char>(file)),
  39. std::istreambuf_iterator<char>());
  40. }
  41. //==============================================================================
  42. std::vector<std::string> Util::getFileLines(const char* filename)
  43. {
  44. std::vector<std::string> lines;
  45. std::ifstream ifs(filename);
  46. if(!ifs.is_open())
  47. {
  48. throw ANKI_EXCEPTION("Cannot open file \"" + filename + "\"");
  49. }
  50. std::string temp;
  51. while(getline(ifs, temp))
  52. {
  53. lines.push_back(temp);
  54. }
  55. return lines;
  56. }
  57. //==============================================================================
  58. float Util::randFloat(float max)
  59. {
  60. float r = float(rand()) / float(RAND_MAX);
  61. return r * max;
  62. }
  63. } // end namespace