Git Product home page Git Product logo

Comments (5)

klemens-morgenstern avatar klemens-morgenstern commented on June 9, 2024 1

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.

denzor200 avatar denzor200 commented on June 9, 2024

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.

klemens-morgenstern avatar klemens-morgenstern commented on June 9, 2024

How's that different from a function on the language level?

from describe.

denzor200 avatar denzor200 commented on June 9, 2024

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.

denzor200 avatar denzor200 commented on June 9, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.