+#ifndef COUNTING_H
+#define COUNTING_H
+
+#include "util.qh"
+
// ===============================================
// Time processing and counting functions/macros
// ===============================================
ZCTX(_("CI_SEC^%d seconds")), /* second */ \
ZCTX(_("CI_THI^%d seconds")), /* third */ \
ZCTX(_("CI_MUL^%d seconds"))) /* multi */
-
-string count_ordinal(float interval)
+
+string count_ordinal(int interval)
{
// This function is designed primarily for the English language, it's impossible
// to accomodate all languages unless we do a specific function for each one...
// Basically, it just allows you to represent a number or count in different ways
// depending on the number... like, with count_ordinal you can provide integers
// and retrieve 1st, 2nd, 3rd, nth ordinal numbers in a clean and simple way.
- if(floor((mod(interval, 100))/10) * 10 != 10) // examples: 12th, 111th, 213th will not execute this block
+ if(floor((interval % 100)/10) * 10 != 10) // examples: 12th, 111th, 213th will not execute this block
{
// otherwise, check normally for 1st,2nd,3rd insertions
- switch(mod(interval, 10))
+ switch(interval % 10)
{
case 1: return sprintf(_("%dst"), interval);
case 2: return sprintf(_("%dnd"), interval);
}
}
else { return sprintf(_("%dth"), interval); }
-
+
return "";
}
// 1 second
// 2 seconds
// 3 seconds
- // etc... minutes, hours, days, etc.
+ // etc... minutes, hours, days, etc.
switch(floor(interval))
{
{
float tmp_hours = 0, tmp_minutes = 0, tmp_seconds = 0;
float tmp_years = 0, tmp_weeks = 0, tmp_days = 0;
-
+
tmp_seconds = floor(seconds);
if(tmp_seconds)
{
tmp_minutes = floor(tmp_seconds / 60);
-
+
if(tmp_minutes)
{
tmp_seconds -= (tmp_minutes * 60);
tmp_hours = floor(tmp_minutes / 60);
-
+
if(tmp_hours)
{
tmp_minutes -= (tmp_hours * 60);
tmp_days = floor(tmp_hours / 24);
-
+
if(tmp_days)
{
tmp_hours -= (tmp_days * 24);
tmp_weeks = floor(tmp_days / 7);
-
+
if(tmp_weeks)
{
tmp_days -= (tmp_weeks * 7);
((output != "") ? sprintf(", %s", output) : ""));
}
+ return output;
+ }
+ case 3:
+ {
+ string output = "";
+
+ output = count_hours(tmp_hours);
+
+ if(tmp_weeks) { tmp_days += (tmp_weeks * 7); }
+ if(tmp_years) { tmp_days += (tmp_years * 365); }
+ if(tmp_days)
+ {
+ output = sprintf(
+ "%s%s",
+ count_days(tmp_days),
+ ((output != "") ? sprintf(", %s", output) : ""));
+ }
+
return output;
}
}
return "";
}
+#endif