diff options
author | David Robillard <d@drobilla.net> | 2012-03-12 02:28:21 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2012-03-12 02:28:21 +0000 |
commit | e9d9569271ee962c09ab66c6babed1ca5655a6c6 (patch) | |
tree | f77142b08c2bf2488eb382e993da1477c0b94307 /include/ingen/Status.hpp | |
parent | 7835b3d8c9b5b4a6f4959f56083d62826e6f7b8e (diff) | |
download | ingen-e9d9569271ee962c09ab66c6babed1ca5655a6c6.tar.gz ingen-e9d9569271ee962c09ab66c6babed1ca5655a6c6.tar.bz2 ingen-e9d9569271ee962c09ab66c6babed1ca5655a6c6.zip |
Unify event response mechanism and make it more appropriate for wire transmission.
The downside being more cryptic error messages until the client side error reporting stuff gets more fancy, but the important part is that belongs client side.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4053 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'include/ingen/Status.hpp')
-rw-r--r-- | include/ingen/Status.hpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/include/ingen/Status.hpp b/include/ingen/Status.hpp new file mode 100644 index 00000000..0e19435a --- /dev/null +++ b/include/ingen/Status.hpp @@ -0,0 +1,81 @@ +/* This file is part of Ingen. + * Copyright 2012 David Robillard <http://drobilla.net> + * + * Ingen is free software; you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any later + * version. + * + * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef INGEN_STATUS_HPP +#define INGEN_STATUS_HPP + +namespace Ingen { + +enum Status { + SUCCESS, + FAILURE, + + BAD_INDEX, + BAD_OBJECT_TYPE, + BAD_VALUE_TYPE, + CLIENT_NOT_FOUND, + CREATION_FAILED, + DIRECTION_MISMATCH, + EXISTS, + INTERNAL_ERROR, + INVALID_PARENT_PATH, + INVALID_POLY, + NOT_FOUND, + NOT_MOVABLE, + NO_SPACE, + PARENT_DIFFERS, + PARENT_NOT_FOUND, + PLUGIN_NOT_FOUND, + PORT_NOT_FOUND, + TYPE_MISMATCH, + UNKNOWN_TYPE +}; + +static inline const char* +ingen_status_string(Status st) +{ + switch (st) { + case SUCCESS: return "Success"; + case FAILURE: return "Failure"; + + case BAD_INDEX: return "Invalid index"; + case BAD_OBJECT_TYPE: return "Invalid object type"; + case BAD_VALUE_TYPE: return "Invalid value type"; + case CLIENT_NOT_FOUND: return "Client not found"; + case CREATION_FAILED: return "Creation failed"; + case DIRECTION_MISMATCH: return "Direction mismatch"; + case EXISTS: return "Object exists"; + case INTERNAL_ERROR: return "Internal error" ; + case INVALID_PARENT_PATH: return "Invalid parent path"; + case INVALID_POLY: return "Invalid polyphony"; + case NOT_FOUND: return "Object not found"; + case NOT_MOVABLE: return "Object not movable"; + case NO_SPACE: return "Insufficient space"; + case PARENT_DIFFERS: return "Parent differs"; + case PARENT_NOT_FOUND: return "Parent not found"; + case PORT_NOT_FOUND: return "Port not found"; + case PLUGIN_NOT_FOUND: return "Plugin not found"; + case TYPE_MISMATCH: return "Type mismatch"; + case UNKNOWN_TYPE: return "Unknown type"; + } + + return "Unknown error"; +} + +} // namespace Ingen + +#endif // INGEN_STATUS_HPP |