diff --git a/fastrpc/include/libhexagonrpc/interface.h b/fastrpc/include/libhexagonrpc/interface.h new file mode 100644 index 0000000..e3eca4d --- /dev/null +++ b/fastrpc/include/libhexagonrpc/interface.h @@ -0,0 +1,54 @@ +/* + * FastRPC interface method definition macros + * + * Copyright (C) 2023 Richard Acayan + * + * This file is part of sensh. + * + * Sensh 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 3 of the License, or + * (at your option) any later version. + * + * This program 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 more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef LIBHEXAGONRPC_INTERFACE_H +#define LIBHEXAGONRPC_INTERFACE_H + +#include + +/* + * We want to declare method definitions as external by default so we only need + * special flags when compiling the interfaces. Otherwise, everything that uses + * the interfaces would need to define a macro. + */ +#if !HEXAGONRPC_BUILD_METHOD_DEFINITIONS + +#define HEXAGONRPC_DEFINE_REMOTE_METHOD(mid, name, \ + innums, inbufs, \ + outnums, outbufs) \ + extern const struct fastrpc_function_def_interp2 name##_def; + +#else /* HEXAGONRPC_BUILD_METHOD_DEFINITIONS */ + +#define HEXAGONRPC_DEFINE_REMOTE_METHOD(mid, name, \ + innums, inbufs, \ + outnums, outbufs) \ + const struct fastrpc_function_def_interp2 name##_def = { \ + .msg_id = mid, \ + .in_nums = innums, \ + .in_bufs = inbufs, \ + .out_nums = outnums, \ + .out_bufs = outbufs, \ + }; + +#endif /* HEXAGONRPC_BUILD_METHOD_DEFINITIONS */ + +#endif /* LIBHEXAGONRPC_INTERFACE_H */