#include #include "api.h" void print_stats(enum ps ps) { int procs = SDL_GetCPUCount(); int d ; int L1; char L1suf[6]; char dsuf[3]; SDL_PowerState pwr; int psec;//seconds of battery life left int ppct;//percentage of battery life left char psecsuf[8]; const char*pwrdesc; /*--system RAM--*/ d = SDL_GetSystemRAM(); if(d>1024) { d /= 1024; memcpy(dsuf,"gb",3); } else memcpy(dsuf,"mb",3); /*--L1--*/ L1 = SDL_GetCPUCacheLineSize(); if(L1>1024*1024) { L1 /= 1024 * 1024; memcpy(L1suf,"mb",3); } else if(L1>1024) { L1 /= 1024; memcpy(L1suf,"kb",3); } else { memcpy(L1suf,"bytes",6); } /*--power state--*/ pwr = SDL_GetPowerInfo(&psec, &ppct); if(psec == -1) psec = 60*60; if(psec>=60*60) { psec /= 60*60; memcpy(psecsuf,psec>1?"hours":"hour\0\0",6); } else if(psec>=60) { psec /= 60; memcpy(psecsuf,psec>1?"minutes":"minute\0\0",8); } else { memcpy(psecsuf,psec>1?"seconds":"second\0\0",8); } switch(pwr){ case SDL_POWERSTATE_ON_BATTERY: pwrdesc="not plugged in, running on the battery";break; case SDL_POWERSTATE_NO_BATTERY: pwrdesc="plugged in, no battery available";break; case SDL_POWERSTATE_CHARGING: pwrdesc="plugged in, charging battery";break; case SDL_POWERSTATE_CHARGED: pwrdesc="plugged in, battery charged";break; default: case SDL_POWERSTATE_UNKNOWN: pwrdesc="cannot determine power status"; } /*--print stats--*/ switch(ps){ case ps_shutdown: printf("SDL Quit Battery %d%% (%d%s)\n",ppct,psec,psecsuf); break; default: case ps_startup: printf("SDL %s %d%sRAM %dProc%s (L1align=%d%s) Battery %d%% (%d%s)\n",SDL_GetPlatform(),d,dsuf,procs,procs>1?"s":"",L1,L1suf, ppct,psec,psecsuf); } }