summaryrefslogtreecommitdiffstats
path: root/include/ingen/Status.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-03-12 02:28:21 +0000
committerDavid Robillard <d@drobilla.net>2012-03-12 02:28:21 +0000
commite9d9569271ee962c09ab66c6babed1ca5655a6c6 (patch)
treef77142b08c2bf2488eb382e993da1477c0b94307 /include/ingen/Status.hpp
parent7835b3d8c9b5b4a6f4959f56083d62826e6f7b8e (diff)
downloadingen-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.hpp81
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