| 50 | |
| 51 | template <class T> |
| 52 | std::string compute_command_name() |
| 53 | { |
| 54 | static const std::string& tname = get_type_name<T>(); |
| 55 | auto name = tname.substr(tname.rfind("::") + 2); |
| 56 | if(ends_with(name, "_command")) |
| 57 | name = name.substr(0, name.size() - 8); |
| 58 | if(ends_with(name, "_cmd")) |
| 59 | name = name.substr(0, name.size() - 4); |
| 60 | return name; |
| 61 | } |
| 62 | |
| 63 | template <class T> |
| 64 | const std::string& command_name() |