- static char const * const ones[9] = {
- "I", "II", "III", "IV", "V",
- "VI", "VII", "VIII", "IX"
- };
-
- static char const * const tens[9] = {
- "X", "XX", "XXX", "XL", "L",
- "LX", "LXX", "LXXX", "XC"
- };
-
- static char const * const hunds[9] = {
- "C", "CC", "CCC", "CD", "D",
- "DC", "DCC", "DCCC", "CM"
- };
-
- if (n >= 1000 || n < 1)
- return from_ascii("??");
-
- int val = n;
- string roman;
- switch (n) {
- //special cases
- case 900:
- roman = "CM";
- break;
- case 400:
- roman = "CD";
- break;
- default:
- if (val >= 100) {
- int hundreds = val / 100;
- roman = hunds[hundreds - 1];
- val = val % 100;
- }
- if (val >= 10) {
- switch (val) {
- //special case
- case 90:
- roman = roman + "XC";
- val = 0; //skip next
- break;
- default:
- int tensnum = val / 10;
- roman = roman + tens[tensnum - 1];
- val = val % 10;
- } // end switch
- } // end tens
- if (val > 0)
- roman = roman + ones[val -1];
- }
- return from_ascii(roman);
+ appendix_ = false;
+ subfloat_ = false;
+ current_float_.erase();
+ for (auto & ctr : counterList_)
+ ctr.second.reset();
+ counter_stack_.clear();
+ counter_stack_.push_back(from_ascii(""));
+ layout_stack_.clear();
+ layout_stack_.push_back(nullptr);