| // Part of the Crubit project, under the Apache License v2.0 with LLVM | |
| // Exceptions. See /LICENSE for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| #ifndef CRUBIT_RS_BINDINGS_FROM_CC_TEST_STRUCT_METHODS_METHODS_H_ | |
| #define CRUBIT_RS_BINDINGS_FROM_CC_TEST_STRUCT_METHODS_METHODS_H_ | |
| #pragma clang lifetime_elision | |
| class SomeClass final { | |
| public: | |
| static SomeClass static_factory_method(int int_var_initial_value); | |
| static int static_method_that_multiplies_its_args(int x, int y); | |
| int int_var; | |
| // Using an `inline` method forces generation of a C++ thunk in | |
| // methods_rs_api_impl.cc (helping add test coverage for such thunks). | |
| static inline int static_inline_method(int arg) { return arg * 42; } | |
| protected: | |
| static inline int protected_static_inline_method(int arg) { return arg * 42; } | |
| private: | |
| static inline int private_static_inline_method(int arg) { return arg * 42; } | |
| }; | |
| struct InstanceMethods final { | |
| int get_int_field() const; | |
| void set_int_field(int new_value); | |
| inline int inline_get_int_field() const { return int_field; } | |
| inline void inline_set_int_field(int new_value) { int_field = new_value; } | |
| int int_field; | |
| }; | |
| #endif // CRUBIT_RS_BINDINGS_FROM_CC_TEST_STRUCT_METHODS_METHODS_H_ |