00001 // memory.hpp -*- C++ -*- 00002 // Copyright (C) 2011 Martin Trenkmann 00003 #ifndef AITOOLS_UTIL_MEMORY_HPP 00004 #define AITOOLS_UTIL_MEMORY_HPP 00005 00006 #include <stdint.h> 00007 #include <string> 00008 00009 namespace aitools { 00010 namespace util { 00011 00012 enum class memory_type 00013 { 00014 min_required, mb512, mb1024, mb2048, mb4096, 00015 mb8192, mb16384, mb32768, mb65536 00016 }; 00017 00018 inline uint64_t 00019 to_bytes(memory_type memory) 00020 { 00021 uint64_t bytes(1024 * 1024); // 1 MiB 00022 switch (memory) 00023 { 00024 case memory_type::mb512: 00025 return bytes * 512; 00026 case memory_type::mb1024: 00027 return bytes * 1024; 00028 case memory_type::mb2048: 00029 return bytes * 2048; 00030 case memory_type::mb4096: 00031 return bytes * 4096; 00032 case memory_type::mb8192: 00033 return bytes * 8192; 00034 case memory_type::mb16384: 00035 return bytes * 16384; 00036 case memory_type::mb32768: 00037 return bytes * 32768; 00038 case memory_type::mb65536: 00039 return bytes * 65536; 00040 default: 00041 return 0; 00042 } 00043 } 00044 00045 inline std::string 00046 to_string(memory_type memory) 00047 { 00048 switch (memory) 00049 { 00050 case memory_type::mb512: 00051 return "mb512"; 00052 case memory_type::mb1024: 00053 return "mb1024"; 00054 case memory_type::mb2048: 00055 return "mb2048"; 00056 case memory_type::mb4096: 00057 return "mb4096"; 00058 case memory_type::mb8192: 00059 return "mb8192"; 00060 case memory_type::mb16384: 00061 return "mb16384"; 00062 case memory_type::mb32768: 00063 return "mb32768"; 00064 case memory_type::mb65536: 00065 return "mb65536"; 00066 default: 00067 return "min_required"; 00068 } 00069 } 00070 00071 } // namespace util 00072 00073 using aitools::util::memory_type; 00074 00075 } // namespace aitools 00076 00077 #endif // AITOOLS_UTIL_MEMORY_HPP