Memorator/Memorator.cpp

123 lines
3.0 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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