Memorator/Memorator.cpp

123 lines
2.9 KiB
C++
Raw Normal View History

2021-07-16 09:46:40 +00:00
/*Ковалев Р.Е. 2021. rekovalev.site*/
#include "Memorator.h"
/*Статическое поле класса Memorator*/
#ifdef __linux__
struct sysinfo Memorator::info;
#elif _WIN32
MEMORYSTATUSEX Memorator::statex;
2021-07-16 09:46:40 +00:00
#endif
/*Заполняет поле с информацией класса Memorator данными от системы*/
void Memorator::ask()
{
#ifdef __linux__
sysinfo(&info);
#elif _WIN32
statex.dwLength = sizeof (statex);
GlobalMemoryStatusEx(&statex);
2021-07-16 09:46:40 +00:00
#endif
}
/*Возвращает общее кол-во памяти в байтах*/
unsigned long Memorator::getTotalRam_B()
{
ask();
#ifdef __linux__
return info.totalram;
#elif _WIN32
return statex.ullTotalPhys;
#else
return 0;
2021-07-16 09:46:40 +00:00
#endif
}
/*Возвращает общее кол-во памяти в килобайтах*/
unsigned long Memorator::getTotalRam_KB()
{
return getTotalRam_B()/1000;
}
/*Возвращает общее кол-во памяти в мегабайтах*/
unsigned long Memorator::getTotalRam_MB()
{
return getTotalRam_KB()/1000;
}
/*Возвращает общее кол-во свободной памяти в байтах*/
unsigned long Memorator::getFreeRam_B()
{
ask();
#ifdef __linux__
2021-07-16 09:46:40 +00:00
return info.freeram;
#elif _WIN32
return statex.ullAvailPhys;
#else
return 0;
2021-07-16 09:46:40 +00:00
#endif
}
/*Возвращает общее кол-во свободной памяти в килобайтах*/
unsigned long Memorator::getFreeRam_KB()
{
return getFreeRam_B()/1000;
}
/*Возвращает общее кол-во свободной памяти в мегабайтах*/
unsigned long Memorator::getFreeRam_MB()
{
return getFreeRam_KB()/1000;
}
/*Возвращает общее кол-во памяти подкачки в байтах*/
unsigned long Memorator::getTotalSwap_B()
{
ask();
#ifdef __linux__
2021-07-16 09:46:40 +00:00
return info.totalswap;
#elif _WIN32
return statex.ullTotalPageFile;
#else
return 0;
2021-07-16 09:46:40 +00:00
#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;
#elif _WIN32
return statex.ullAvailPageFile - getFreeRam_B();
#else
return 0;
2021-07-16 09:46:40 +00:00
#endif
}
/*Возвращает общее кол-во свободной памяти подкачки в килобайтах*/
unsigned long Memorator::getFreeSwap_KB()
{
return getFreeSwap_B()/1000;
}
/*Возвращает общее кол-во свободной памяти подкачки в мегабайтах*/
unsigned long Memorator::getFreeSwap_MB()
{
return getFreeSwap_KB()/1000;
}