diff options
Diffstat (limited to '')
| -rw-r--r-- | cpp/nissy.cpp | 14 | ||||
| -rw-r--r-- | cpp/nissy.h | 10 |
2 files changed, 24 insertions, 0 deletions
diff --git a/cpp/nissy.cpp b/cpp/nissy.cpp index 2c290a6..90fcf20 100644 --- a/cpp/nissy.cpp +++ b/cpp/nissy.cpp | |||
| @@ -24,6 +24,7 @@ extern "C" { | |||
| 24 | const unsigned char *, unsigned, char *, long long *, | 24 | const unsigned char *, unsigned, char *, long long *, |
| 25 | int (*)(void *), void *); | 25 | int (*)(void *), void *); |
| 26 | long long nissy_countmoves(const char *); | 26 | long long nissy_countmoves(const char *); |
| 27 | long long nissy_comparemoves(const char *, const char *); | ||
| 27 | long long nissy_setlogger(void (*)(const char *, void *), void *); | 28 | long long nissy_setlogger(void (*)(const char *, void *), void *); |
| 28 | } | 29 | } |
| 29 | 30 | ||
| @@ -53,6 +54,9 @@ namespace nissy { | |||
| 53 | const status status::STOP{1}; | 54 | const status status::STOP{1}; |
| 54 | const status status::PAUSE{2}; | 55 | const status status::PAUSE{2}; |
| 55 | 56 | ||
| 57 | const compare_result compare_result::EQUAL{0}; | ||
| 58 | const compare_result compare_result::DIFFERENT{99}; | ||
| 59 | |||
| 56 | namespace size { | 60 | namespace size { |
| 57 | constexpr size_t CUBE = 24; | 61 | constexpr size_t CUBE = 24; |
| 58 | constexpr size_t TRANSFORMATION = 12; | 62 | constexpr size_t TRANSFORMATION = 12; |
| @@ -210,6 +214,16 @@ namespace nissy { | |||
| 210 | return error{err}; | 214 | return error{err}; |
| 211 | } | 215 | } |
| 212 | 216 | ||
| 217 | std::variant<error, compare_result> | ||
| 218 | compare_moves(const std::string& m1, const std::string& m2) | ||
| 219 | { | ||
| 220 | auto cmp = nissy_comparemoves(m1.c_str(), m2.c_str()); | ||
| 221 | if (cmp < 0) | ||
| 222 | return error{cmp}; | ||
| 223 | else | ||
| 224 | return compare_result{cmp}; | ||
| 225 | } | ||
| 226 | |||
| 213 | void set_logger(void (*log)(const char *, void *), void *data) | 227 | void set_logger(void (*log)(const char *, void *), void *data) |
| 214 | { | 228 | { |
| 215 | nissy_setlogger(log, data); | 229 | nissy_setlogger(log, data); |
diff --git a/cpp/nissy.h b/cpp/nissy.h index 817307c..199af10 100644 --- a/cpp/nissy.h +++ b/cpp/nissy.h | |||
| @@ -55,6 +55,14 @@ namespace nissy { | |||
| 55 | static const status PAUSE; | 55 | static const status PAUSE; |
| 56 | }; | 56 | }; |
| 57 | 57 | ||
| 58 | class compare_result { | ||
| 59 | public: | ||
| 60 | long long value; | ||
| 61 | |||
| 62 | static const compare_result EQUAL; | ||
| 63 | static const compare_result DIFFERENT; | ||
| 64 | }; | ||
| 65 | |||
| 58 | class cube { | 66 | class cube { |
| 59 | public: | 67 | public: |
| 60 | cube(); | 68 | cube(); |
| @@ -103,6 +111,8 @@ namespace nissy { | |||
| 103 | }; | 111 | }; |
| 104 | 112 | ||
| 105 | error count_moves(const std::string&); | 113 | error count_moves(const std::string&); |
| 114 | std::variant<error, compare_result> compare_moves( | ||
| 115 | const std::string&, const std::string&); | ||
| 106 | void set_logger(void (*)(const char *, void *), void *); | 116 | void set_logger(void (*)(const char *, void *), void *); |
| 107 | } | 117 | } |
| 108 | 118 | ||
