+#include "libubus.h"
+
+// Ensure UBUS_* macros can be used from C++
+
+static int handler(ubus_context *, ubus_object *, ubus_request_data *, const char *, blob_attr *)
+{
+ return 0;
+}
+
+enum {
+ HELLO_ID,
+ HELLO_MSG,
+};
+
+constexpr blobmsg_policy hello_policy[] = {
+ [HELLO_ID] = { .name = "id", .type = BLOBMSG_TYPE_INT32 },
+ [HELLO_MSG] = { .name = "msg", .type = BLOBMSG_TYPE_STRING },
+};
+
+constexpr ubus_method test_methods[] = {
+ UBUS_METHOD("hello1", handler, hello_policy),
+ UBUS_METHOD_TAG("hello2", handler, hello_policy, UBUS_TAG_ADMIN | UBUS_TAG_PRIVATE),
+ UBUS_METHOD_MASK("hello3", handler, hello_policy, 0),
+ UBUS_METHOD_NOARG("hello4", handler),
+ UBUS_METHOD_TAG_NOARG("hello5", handler, UBUS_TAG_STATUS),
+};
+
+constexpr ubus_object_type test_object_type = UBUS_OBJECT_TYPE("test", test_methods);
+
+int main()
+{
+ (void) test_object_type;
+ return 0;
+}