Giter Site home page Giter Site logo

ghassanpl / reflector Goto Github PK

View Code? Open in Web Editor NEW
11.0 1.0 4.0 671 KB

A small tool to create reflection information for C++ projects, ala Unreal's UHT

License: Other

C++ 99.94% C 0.06%
cpp reflection game-development gamedev gamedev-tool cpp20 cpp20-library

reflector's People

Contributors

ghassanpl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

reflector's Issues

Split the code into better files

Right now a lot of the .h and .cpp files in the project have a lot of shared stuff in it, we need to break them up into smaller files with fewer responsibilities.

Add `FullCompileTimeReflection` option

If true, will generate static constexpr methods, in the bodies of classes, for each reflected member

Maybe instead we should have an option like GeneratedReflectionData=Minimal | Normal | Full

More annotation types

This is a general issue that describes ideas for new annotation types

  • RConstructor() ?
  • RAlias()/RUsing(); - for commenting using X = ...; declarations, so that generated documentation is better (probably other things too)
  • RConstant(); - for constexprs
  • ROperator();
  • RNamespace() ?
  • RTest() ? - for marking static methods as tests
  • RVersion() ? - or should we get that information from, in order: git tags, git commit, datetime
  • RContext() ?
  • RDoc();
  • RCategory(Name, ...attributes); - for grouping together class members; attributes like Order = Declaration/Alphabetic or Order = {Documentation = Alphabetic, Editor = Declaration }, Collapsed = true; stuff like Document applies to all members, etc.

Custom attributes

It would be great to have user-definable attributes, perhaps even with behaviors attached to them.

Something like C# attributes.

Figure out BaseResolvable

The class right now probably doesn't work, and if it does, it probably doesn't belong in that header

Proper testing

This project needs proper testing:

  • all options and option combinations
  • all attributes and attribute combinations
  • which field/parameter/return types don't work
  • and more

More configurable documentation

Specifically, two issues:

  1. The ability to change the output format, or use multiple output formats, like .md
  2. The ability to change the programming language the documentation uses to display types, namespace, and code (e.g. if we want to output documentation only for scriptable entities), or output separate documentation for scripting

Support disabling annotations in #if/#endif blocks

Currently, reflector does not respect #if/#endif blocks and will treat annotations inside them as valid. This should be fixed with a high priority, but needs to be able to handle macros and such, and that's a massive pain.

How does doxygen do it?

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.