diff --git a/Memorator.cpp b/Memorator.cpp new file mode 100644 index 0000000..c174711 --- /dev/null +++ b/Memorator.cpp @@ -0,0 +1,101 @@ +/*Ковалев Р.Е. 2021. rekovalev.site*/ + +#include "Memorator.h" + +/*Статическое поле класса Memorator*/ +#ifdef __linux__ +sysinfo Memorator::info; +#endif + +/*Заполняет поле с информацией класса Memorator данными от системы*/ +void Memorator::ask() +{ + #ifdef __linux__ + sysinfo(&info); + #endif +} + +/*Возвращает общее кол-во памяти в байтах*/ +unsigned long Memorator::getTotalRam_B() +{ + #ifdef __linux__ + ask(); + return info.totalram; + #endif +} + +/*Возвращает общее кол-во памяти в килобайтах*/ +unsigned long Memorator::getTotalRam_KB() +{ + return getTotalRam_B()/1000; +} + +/*Возвращает общее кол-во памяти в мегабайтах*/ +unsigned long Memorator::getTotalRam_MB() +{ + return getTotalRam_KB()/1000; +} + +/*Возвращает общее кол-во свободной памяти в байтах*/ +unsigned long Memorator::getFreeRam_B() +{ + #ifdef __linux__ + ask(); + return info.freeram; + #endif +} + +/*Возвращает общее кол-во свободной памяти в килобайтах*/ +unsigned long Memorator::getFreeRam_KB() +{ + return getFreeRam_B()/1000; +} + +/*Возвращает общее кол-во свободной памяти в мегабайтах*/ +unsigned long Memorator::getFreeRam_MB() +{ + return getFreeRam_KB()/1000; +} + +/*Возвращает общее кол-во памяти подкачки в байтах*/ +unsigned long Memorator::getTotalSwap_B() +{ + #ifdef __linux__ + ask(); + return info.totalswap; + #endif +} + +/*Возвращает общее кол-во памяти подкачки в килобайтах*/ +unsigned long Memorator::getTotalSwap_KB() +{ + return getTotalSwap_B()/1000; +} + +/*Возвращает общее кол-во памяти подкачки в мегабайтах*/ +unsigned long Memorator::getTotalSwap_MB() +{ + return getTotalSwap_KB()/1000; +} + +/*Возвращает общее кол-во свободной памяти подкачки в байтах*/ +unsigned long Memorator::getFreeSwap_B() +{ + #ifdef __linux__ + ask(); + return info.freeswap; + #endif +} + +/*Возвращает общее кол-во свободной памяти подкачки в килобайтах*/ +unsigned long Memorator::getFreeSwap_KB() +{ + return getFreeSwap_B()/1000; +} + +/*Возвращает общее кол-во свободной памяти подкачки в мегабайтах*/ +unsigned long Memorator::getFreeSwap_MB() +{ + return getFreeSwap_KB()/1000; +} + diff --git a/Memorator.h b/Memorator.h new file mode 100644 index 0000000..8c5a3ea --- /dev/null +++ b/Memorator.h @@ -0,0 +1,29 @@ +/*Ковалев Р.Е. 2021. rekovalev.site*/ + +#ifdef __linux__ +#include +#endif + +/*Класс для работы с информацией об оперативной памяти*/ +class Memorator +{ + public: + static unsigned long getTotalRam_B(); + static unsigned long getTotalRam_KB(); + static unsigned long getTotalRam_MB(); + static unsigned long getFreeRam_B(); + static unsigned long getFreeRam_KB(); + static unsigned long getFreeRam_MB(); + static unsigned long getTotalSwap_B(); + static unsigned long getTotalSwap_KB(); + static unsigned long getTotalSwap_MB(); + static unsigned long getFreeSwap_B(); + static unsigned long getFreeSwap_KB(); + static unsigned long getFreeSwap_MB(); + + private: + static void ask(); + #ifdef __linux__ + static sysinfo info; + #endif +};