| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- //
- // 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);
- }
|