diff --git a/CMakeLists.txt b/CMakeLists.txt index e66d252..b3007c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -116,6 +116,10 @@ if(XYZ_PROTOCOL_IS_NOT_SUBPROJECT) CLASS_NAME C INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/interface_C.h HEADER interface_C.h OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated/protocol_C.h ${OPT_MANUAL_VTABLE}) + xyz_generate_protocol( + CLASS_NAME Demo INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/demo.h + HEADER demo.h + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated/protocol_demo.h ${OPT_MANUAL_VTABLE}) add_custom_target( generate_protocols @@ -123,7 +127,8 @@ if(XYZ_PROTOCOL_IS_NOT_SUBPROJECT) ${CMAKE_CURRENT_BINARY_DIR}/generated/protocol_A_virtual.h ${CMAKE_CURRENT_BINARY_DIR}/generated/protocol_A_manual.h ${CMAKE_CURRENT_BINARY_DIR}/generated/protocol_B.h - ${CMAKE_CURRENT_BINARY_DIR}/generated/protocol_C.h) + ${CMAKE_CURRENT_BINARY_DIR}/generated/protocol_C.h + ${CMAKE_CURRENT_BINARY_DIR}/generated/protocol_demo.h) xyz_add_test( NAME diff --git a/demo.h b/demo.h new file mode 100644 index 0000000..f970e5f --- /dev/null +++ b/demo.h @@ -0,0 +1,12 @@ +#ifndef XYZ_PROTOCOL_DEMO_H +#define XYZ_PROTOCOL_DEMO_H + +namespace xyz { + +struct Demo { + int call(int) const; +}; + +} // namespace xyz + +#endif // XYZ_PROTOCOL_DEMO_H diff --git a/protocol_test.cc b/protocol_test.cc index eae1934..b80437d 100644 --- a/protocol_test.cc +++ b/protocol_test.cc @@ -30,6 +30,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "generated/protocol_A.h" #include "generated/protocol_B.h" #include "generated/protocol_C.h" +#include "generated/protocol_demo.h" #include "tracking_allocator.h" namespace { @@ -626,4 +627,13 @@ TEST(ProtocolViewTest, ViewMoveIsStandard) { EXPECT_EQ(view2.name(), "move_test"); } +struct Demoic { + int call(int x) const { return x * 2; } +}; + +TEST(ProtocolDemoTest, DemoFunction) { + xyz::protocol demo(std::in_place_type); + EXPECT_EQ(demo.call(5), 10); +} + } // namespace