Git Product home page Git Product logo

raberu's Introduction

⚡ Short Intro ⚡

I am Joel Falcou, Destroyer of World, Terror of the Compilers.

In my spare time, I am an associated professor at the University Paris-Saclay and researcher at the Laboratoire de Recherche d’Informatique in Orsay, France. My research focuses on studying generative programming idioms and techniques to design tools for parallel software development.

I also have a rather personal take on humor as you may have noticed already.

❓ Research Activities ❓

The main parts of my research topic are:

  • the exploration of Embedded Domain Specific Language design for parallel computing on various architectures;
  • the definition of a formal framework for reasoning about meta-programs.

As I need something to pad my academic paper up to at least eight pages, I usually play around with various application fields like real-time image processing on embedded architectures or HPC on multi-core clusters.

👯C++ Community 👯

I am the co-host of the C++FRUG Meetup, president of the C++FRUG Association and I co-organize the CPPP Conference.

You can find me on Mastodon or on the #include Discord

raberu's People

Contributors

jfalcou avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

raberu's Issues

[FEATURE] Extract type list of keyword/stored_value from settings

A scenario like

  template<typename... Opts>
  constexpr auto validate(rbr::settings<Opts...> const& env) const
  {
    std::size_t sz = 1;
    ((sz = std::max(sz, size(env[typename Opts::keyword_type{}]))),...);
    using out_t = std::common_type_t<typename value_type<typename Opts::stored_value_type>::type...>;

    assert(   (is_valid(env[typename Opts::keyword_type{}], sz) && ...)
          &&  "Size mismatch in vector parameters"
          );
  }

happens a lot. Having a rbr::keywords<Settings> and a rbr::values<Settings> traits would be nice

[BUG] Custom keyword + | interaction

If we just inherits from any_weyword to simply make a new keyword, opts[ kw | v ] doesn't work because it erases the type of kw to any_keyword.

We need a as_keyword struct to serve as a proper base class for custom keyword.
Kiwaku as a local implementation for this

[BUG] Internal ID may miss a character AND dont compare properly with string

Fix:

  namespace literal
  {
    template<std::size_t N> struct str_
    {
      std::array<char,N> data;

      template <std::size_t... Is>
      constexpr str_(const char (&str)[N], std::index_sequence<Is...>) :data{str[Is]...} {}
      constexpr str_(const char (&str)[N]) : str_{str, std::make_index_sequence<N>{}} {}

                        std::string value() const { return std::string(&data[0],strlen(&data[0])); }
      static constexpr  auto        size()        { return N; }
    };

    template<std::size_t N> str_(const char (&str)[N]) -> str_<N>;
  }

  template<literal::str_ ID> struct id_
  {
    friend std::ostream& operator<<(std::ostream& os, id_ const& id)
    {
      return os << '\'' << id.value() << '\'';
    }
  };

provide a mechanism to pass references to keywords

I don't currently see a great way to pass a reference using a named keyword. When I use a reference typed keyword I get compilation errors, and if I use an untyped keyword and use std::ref it just copies the ref without decay. I feel like I should be able to use a reference typed keyword successfully, and I also feel like there is a small argument for implicit decay for reference_wrappers in both typed and untyped settings (like tuple).

[FEATURE] Allow keywords to extract their argument from a pack

Now that we have the rbr::keyword_parameter we can write code that takes rbr::keyword_parameter auto [const&,&&]... params. These are normally collected via rbr::settings and extracted using the keyword value. There are cases, like initializer lists, where this is a little bit inconvenient though, due mainly to its verbosity.

inline constexpr auto foo_keyword = ...;
constexpr Foo(rbr::keyword_parameter auto... params)
      : foo(rbr::settings{params...}[ foo_keyword | 0])])
      ...

In such cases it would be great to extend the rbr::keyword class with an operator()([T], rbr::keyword_parameter auto...) that can directly extract its value from a pack (possibly with the default option T).

inline constexpr auto foo_keyword = ...;
constexpr Foo(rbr::keyword_parameter auto... params)
     : foo(foo_keyword(0, ..., params))
     ...

If there is some meta-magic that allows the default to be provided as the last argument that would be even more amazing.

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.