Giter Club home page Giter Club logo

struct-members's Introduction

struct::members

本项目为c++提供现在还比较弱的静态反射能力, 基于cppast, 为习作项目.

编译后可以得到可执行文件struct_members

在你的文件中(假设叫neko.cpp)写如下代码

#include "inspect.hpp"

// ...
namespace some_namespace{
    template<typename NotTooComplexArg>
    struct [[reflectable]] some_templated_class{};

    template<>
    struct [[reflectable]] some_templated_class<some_template_args>{
        int some_member_variable;
    };
}
// ...

#ifndef analysis
#define analysis
namespace inspect{
#include "neko.reflect"
}
#endif

并执行

./struct_members neko.cpp -D analysis > neko.reflect

即可愉快使用以下语法

some_namespace::some_templated_class<some_template_args> v;
auto c = inspect::type(v);
std::any u = c.get(v, "some_member_variable");

template <typename T>
struct getter {
    static void get(T *t) {}
};
template <>
struct getter<char> {
    static void get(char *t) {
        std::cout << *t << "\n";
    }
};
c.get<getter>(v, "some_member_variable");

struct-members's People

Contributors

hamiltonhuaji avatar

Stargazers

 avatar

Watchers

 avatar

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.