| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- //
- // die.hpp
- // dice-roll
- //
- // Created by Sam Jaffe on 12/1/18.
- // Copyright © 2018 Sam Jaffe. All rights reserved.
- //
- #pragma once
- #include <iosfwd>
- #include <memory>
- #include <vector>
- namespace dice {
- enum sign { PLUS = 1, MINUS = -1, ZERO = 0 };
- template <typename T> static sign sgn(T val) {
- return sign((T(0) < val) - (val < T(0)));
- }
- int sgn(sign);
- std::string str(sign);
- struct die {
- sign sgn;
- int num, sides;
- };
- struct mod {
- operator int() const;
- sign sign;
- int value;
- };
- // Default value: 1{+0}
- struct dice {
- int num{1};
- std::vector<die> of{};
- std::vector<mod> modifier{+0};
- };
- std::ostream & operator<<(std::ostream & out, dice const & d);
- std::istream & operator>>(std::istream & out, dice & d);
- }
|