Comments (5)
Getters and setter don't exist in C++, this isn't C# or python. You're trying to describe functions, which you already can do with boost.describe.
from describe.
I found a better way to do this:
struct employee
{
void set_name (std::string name) ;
void set_age (int age) ;
const std::string& get_name () const ;
int get_age () const ;
struct employee_data& data () ;
};
BOOST_DESCRIBE_STRUCT(employee, (), (
(set_name, (setter, "name")),
(set_age, (setter, "age")),
(get_name, (getter, "name")),
(get_age, (getter, "age")),
(data), (accessor, "data")
))
int main()
{
using boost::describe::describe_members;
using boost::describe::mod_getters;
using boost::describe::mod_accessors;
using boost::describe::is_setter;
using boost::describe::get_encapsulated_field_name;
employee emp;
emp.set_name("John");
emp.set_age(20);
emp.data() = employee_data();
boost::mp11::mp_for_each<describe_members<decltype(emp), mod_getters | mod_accessors>>([&](auto D){
const auto pointer = D.pointer;
std::cout << get_encapsulated_field_name(D) << " = " << (emp.*pointer)() << std::endl;
});
// Will print:
// name = John
// age = 20
// data = employee_data
return 0;
}
Also, its compatible with #13. We can start by making #13 and then separately declare the setter
, getter
and accessor
as service attributes.
from describe.
How's that different from a function on the language level?
from describe.
How's that different from a function on the language level?
I'm not getting your question. Please reword or submit a little better example.
from describe.
Getters and setter don't exist in C++, this isn't C# or python. You're trying to describe functions, which you already can do with boost.describe.
I'm trying to suggest alternative for BOOST_HANA_ADAPT_ADT. I haven't thought about C# or Python getters and setters.
It's useful for #32
from describe.
Related Issues (20)
- Support for unions HOT 1
- describe_members shouldn't work for non-described classes derived from described ones
- Clang warnings for described internal types HOT 1
- Describe and json serialization with containers HOT 1
- describe_bases should probably support mod_inherited HOT 2
- Support for constructors HOT 2
- Provide integration with formatting libraries HOT 2
- How to build the tests? HOT 2
- How to use name of the member with Boost Hana? HOT 2
- Add `name` to base class descriptors HOT 2
- Add `BOOST_DEFINE_STRUCT`
- using hash_value() for in different namespace HOT 2
- Pretty print struct without BOOST_DESCRIBE_STRUCT? HOT 1
- Add BOOST_DEFINE_NESTED_ENUM et al HOT 1
- Maybe support `(enumerator, initializer)` in BOOST_DEFINE_ENUM in addition to `enumerator` HOT 1
- Add enum_from_string overload that doesn't require the string to be null-terminated
- Automatic Conversion to JSON with base struct HOT 1
- BOOST_DESCRIBE_STRUCT causing warning -Wgnu-zero-variadic-macro-arguments HOT 1
- Make manual macro annotation unnecessary for simple aggregates, integrating Boost PFR HOT 8
- Modular Boost C++ Libraries Request HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from describe.