- a198dbd Add assertions to help diagnose an error caught by Asan when using libc++ and Clang 3.8. by Marco Poletti · 9 years ago
- ea234f7 Use the default constructor for NormalizedComponentStorage instead of defining one explicitly. by Marco Poletti · 9 years ago
- f8cb4bc Rename Argz->Args in several places. This was used to work-around an old GCC bug, but it's not needed anymore. by Marco Poletti · 9 years ago
- 3b8e91a When FRUIT_DEEP_TEMPLATE_INSTANTIATION_STACKTRACES_FOR_ERRORS is enabled (only for debugging) unwrap the error arguments so that the correct Error is instantiated. by Marco Poletti · 9 years ago
- ebe1225 Remove a couple of old debug-only hacks that are no longer needed. by Marco Poletti · 9 years ago
- cd6625f No longer handle the merge of interface bindings when installing a component, it can't happen anymore. by Marco Poletti · 9 years ago
- 4147b40 Forbid copying PartialComponent objects. by Marco Poletti · 9 years ago
- dff7748 Report an error when binding a type twice, once with a bind<I, C>() and once with another kind of binding. by Marco Poletti · 9 years ago
- f10c67e Shift a size_t instead of shifting an int and then converting to size_t. by Marco Poletti · 9 years ago
- 40aaab1 Add a script to check that each defn.h header includes the main header and vice versa, fix current violations. by Marco Poletti · 9 years ago
- 0109baa Move binding types to fruit::impl. by Marco Poletti · 9 years ago
- 79b01d6 Get rid of remaining "using namespace" directives in header files. by Marco Poletti · 9 years ago
- 6cf268f Simplify component.defn.h (also getting rid of an "using namespace" that was there). by Marco Poletti · 9 years ago
- 169e50f When autoinjecting an annotated type, expect no annotation in the Inject typedef, instead of expecting the currently-required annotation. by Marco Poletti · 9 years ago
- 6026b75 Report a specific error when a type is bound to itself. by Marco Poletti · 9 years ago
- 5852508 Filter out None elements in ConstructErrorWithArgVector. by Marco Poletti · 9 years ago
- df07a49 Change the implementation of LambdaInvoker to avoid what was technically still undefined behavior (even though both GCC and Clang under Linux compiled fine). by Marco Poletti · 9 years ago
- b5ae785 Give up supporting AppleClang and clang 3.5 on OS X, they don't work due to compiler bugs (at least in the versions provided by Travis CI + brew). by Marco Poletti · 9 years ago
- 2a1d5c7 Some tweaks trying to make Fruit tests work on OS X. by Marco Poletti · 9 years ago
- 227bef1 Fix a few OS X-only issues, and blacklist Travis CI tests on OSX that use libstdc++ since they'll never work (the libstdc++ STL on OSX is very old, not C++11 compliant). by Marco Poletti · 9 years ago
- 370e4ff When the compiler/STL feature detection fails, fall back to the standard-compliant option and raise a warning, instead of raising unconditional errors later, during the build. by Marco Poletti · 9 years ago
- d5fa227 Print more compiler-related information in the Travis CI postsubmits. by Marco Poletti · 9 years ago
- e02d055 Workaround a bug in the STL shipped with GCC <4.8.2, where calling data() on an empty vector causes undefined behavior (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59829). by Marco Poletti · 9 years ago
- b9a4bec Fix compile error that appeared only with -DFRUIT_EXTRA_DEBUG. by Marco Poletti · 9 years ago
- e844355 Revert to the previous behavior of reporting errors early (as before the last commit), but maintaining the conciseness of instantiation traces. by Marco Poletti · 9 years ago
- cbe3c7a Now PartialComponent is parameterized on human-readable binding types, instead of metaprogramming types. by Marco Poletti · 9 years ago
- 0d5e069 Get rid of the last per-compiler check, introducing a new FRUIT_HAS_CXA_DEMANGLE configure macro. by Marco Poletti · 9 years ago
- 66906ac Some changes towards support of additional compilers/platforms (notably Intel C++ on Linux, Apple Clang on OS X and MSVC on Windows). by Marco Poletti · 9 years ago
- f289510 Add configure-time checks on compiler and STL features, and use the results of those in macros in Fruit code, instead of checking for specific compilers and/or versions. by Marco Poletti · 9 years ago
- 7e8b15a Change the metaprogramming library so that errors are now builtin and propagated by default (instead of having to be propagated manually which is very error-prone). by Marco Poletti · 9 years ago
- f41d236 Remove code that was (technically) undefined behavior in LambdaInvoker (it broke strict aliasing rules). by Marco Poletti · 9 years ago
- d3aa8f0 Avoid calling memcpy(0,0,0) in some cases, it's technically undefined behavior (even if it doesn't cause issues with GCC and Clang). by Marco Poletti · 9 years ago
- 3c54483 Report more informative errors when an abstract class is used instead of a concrete class. by Marco Poletti · 9 years ago
- a67d7f6 Add a Clang-only workaround for the Clang bug: https://llvm.org/bugs/show_bug.cgi?id=25669 by Marco Poletti · 9 years ago
- 05ad808 Fix compile errors in tests that appear only in release mode, by defining the relevant test-only macros in release mode too. by Marco Poletti · 9 years ago
- f9d58c1 Fix compile errors that happened in some cases when using assisted autoinjection, caused by two off by one error that were hiding each other in tests. by Marco Poletti · 9 years ago
- 661837a Improve testing coverage. Also fix a few bugs that in some cases caused compile-time errors (or internal errors instead of more user-friendly errors). by Marco Poletti · 9 years ago
- ec5c520 Use Set-specific operations (forwarding to Vector operations where appropriate) instead of using Vector operations directly on Sets. by Marco Poletti · 9 years ago
- 0954754 Minor optimizations to the compile-time code. by Marco Poletti · 9 years ago
- e5c936b Replace a MapContainsKey with an IsInSet check where possible. This slightly improves compile-time performance. by Marco Poletti · 9 years ago
- 38b8df4 Optimize the Fold() operator, slightly increasing compile-time performance. by Marco Poletti · 9 years ago
- 1ff06b3 Reduce noise in (most) error messages by delaying the error reporting to the component conversion. by Marco Poletti · 9 years ago
- 36253c9 Major changes to the metaprogramming code. Now using a DFS search to find dependency loops instead of transitive closure of the edges (at compile time), expressing more operations as Fold/Transform for conciseness, added ImmutableSet/ImmutableMap (compile-time data structures), now calculating the exact dep loop (if any), and many other small changes. by Marco Poletti · 9 years ago
- daf6222 Add a PartialCall metafunction and use it so that vector transforms now can use normal metafunctions. by Marco Poletti · 9 years ago
- ebc3312 Add a TransformVector meta-operation and use instead of doing transforms explicitly everywhere. by Marco Poletti · 9 years ago
- 3b95a51 Refactor a bit the metaprogramming code, plus some small optimizations. by Marco Poletti · 9 years ago
- 603c252 Improve compile-time performance by ~5% with a few small optimizations. by Marco Poletti · 9 years ago
- 010daa6 Rewrite all metaprogramming code to use a more readable style. What was Apply<F, X, Y> before can now be written as F(X, Y). After this commit all code uses the new style and passes existing tests, but there is a ~60% compile-time performance hit that still needs to be investigated/addressed. by Marco Poletti · 9 years ago
- 1188cfc Fix compile error occurring only with GCC5 (which does a stricter check on prototype/definition signature consistency). by Marco Poletti · 9 years ago
- 2197297 Make a field of InjectorStorage private again (was temporarily turned into public). by Marco Poletti · 9 years ago
- 4fe2e72 Avoid duplication in the implementation of GetHelper by calling GetHelper recursively. by Marco Poletti · 9 years ago
- 16810cb Wrap in #ifdefs some typedefs that were used only in debug mode (fixing some GCC-only warnings in release mode). by Marco Poletti · 9 years ago
- b9c9cef Avoid using non-fully-qualified namespace qualifiers (e.g. meta::Something to refer to fruit::impl::meta::Something), use local using declarations instead (when possible). by Marco Poletti · 9 years ago
- 46e8c87 Return the constructed factory by value in AutoRegisterFactoryHelper, to save an allocation/deallocation per injection of a factory. by Marco Poletti · 9 years ago
- e464713 Complete support for annotated types, with tests (and fixes for bugs that slipped in the previous commit due to lack of tests). by Marco Poletti · 9 years ago
- b9aca3f Add a FRUIT_DEEP_TEMPLATE_INSTANTIATION_STACKTRACES_FOR_ERRORS switch that allows to get the full instantiation trace for Fruit errors (useful for debugging Fruit internals, not meant for general use). by Marco Poletti · 9 years ago
- 31f638a Add support for annotated types. This commit contains the implementation only, tests for the new functionality are still TODO. by Marco Poletti · 9 years ago
- cc97a16 Add support for injection of annotated types in {Component,Injector}Storage. This is the first step towards support of annotated types. by Marco Poletti · 9 years ago
- 6ecb81d Fix the error reported when there is a dependency loop to not contain fruit::Vector<>. by Marco Poletti · 10 years ago
- b0894fa When a std::function<std::unique_ptr<X>(Args...)> is not bound, report an error about that type instead of std::function<X(Args...)> (but keep auto-binding to that if we find that binding). by Marco Poletti · 10 years ago
- a5289cf Shorten error messages even further by including injection_errors.h directly in all public headers. by Marco Poletti · 10 years ago
- 80bca58 Turn the error reporting in LambdaInvoker into a debug-only asserts. Users of this class have the duty to check, when LambdaInvoker is called it's too late to report the error. by Marco Poletti · 10 years ago
- 7663626 Improve the error message for the LambdaWithCapturesError, move the note that this is not guaranteed by the standard to a comment. by Marco Poletti · 10 years ago
- 3d8db87 Report a proper user-visible error when a lambda with some captures is used in registerFactory(), instead of an obscure error. by Marco Poletti · 10 years ago
- fa279f1 Replace CheckIfError with a debug-only static_assert in places where no error is ever reported. by Marco Poletti · 10 years ago
- e9c143b When a registerProvider() or a registerConstructor() is processed, now some checks happen right away instead of being delayed to the time the PartialComponent is casted to a Component. This results in a better error message in cases where a duplicate-bindings error is reported. by Marco Poletti · 10 years ago
- c69c8c4 Some small fixes to error-reporting code. Also add more tests. by Marco Poletti · 10 years ago
- 6757da7 Fix one remaining instance of old-style error reporting, add test. by Marco Poletti · 10 years ago
- 43637ba Further reduce the depth of the template instantiation trace shown when reporting errors. Now it's the bare minimum for errors detected in method calls (static_assert location, operation that reported the error, caller code) and 1 more level for errors reported during instantiation of a type. by Marco Poletti · 10 years ago
- a19fd1e Rewrite the error-reporting code. Now errors are always reported with O(1) lines of template instantiation traces, no matter how deep in the instantiation they were discovered. by Marco Poletti · 10 years ago
- bfcb7ed Rename the non-templated getPtr() to getPtrInternal(). by Marco Poletti · 10 years ago
- c4fbcb1 Inline ensureConstructed() into getPtr(). Saves ~2% of injection time. by Marco Poletti · 10 years ago
- 0fbf774 Pass a node_iterator instead of an edge_iterator to {,Normalized}BindingData, to save some instructions (the create operation is only 1, while ensureConstructed() is inlined at each use of the class). by Marco Poletti · 10 years ago
- c54a093 Store pre-multiplied IDs in SemistaticGraphInternalNodeId to save one instruction per edge at injection time. by Marco Poletti · 10 years ago
- 80c7bb4 Some performance optimizations in SemistaticGraph and InjectorStorage, saving ~10% of injection time. by Marco Poletti · 10 years ago
- 9e0c6de Inline the non-templated InjectorStorage::lazyGetPtr into the templated one. by Marco Poletti · 10 years ago
- ab49a96 Revert "Fix a Clang warning in type_info.h (class vs struct)." by Marco Poletti · 10 years ago
- 598a0b3 Fix a Clang warning in type_info.h (class vs struct). by Marco Poletti · 10 years ago
- da1bc0c Remove a specialization of AutoRegisterFactoryHelper that is never used. by Marco Poletti · 10 years ago
- eddc549 Remove some unused (private) getPtr() methods of InjectorStorage. by Marco Poletti · 10 years ago
- 1a97c80 Remove SemistaticGraph::size(), it's never used. by Marco Poletti · 10 years ago
- 3d3b717 Add comments for methods/function that are covered by tests, but that don't show up as covered in the lcov report. by Marco Poletti · 10 years ago
- 9bb46a3 Remove {Normalized,}BindingData::operator<(), they're no longer used. by Marco Poletti · 10 years ago
- 0c56617 Fix compile error in hybrid_vector that only occurred in release mode. by Marco Poletti · 10 years ago
- 53f867e Remove unused constructor of NormalizedComponentStorage, inline the now-redundant init() method. by Marco Poletti · 10 years ago
- cbd708f Fix typo in comment in lambda_invoker.h. by Marco Poletti · 10 years ago
- 7e3052d Add unit tests for HybridVector. by Marco Poletti · 10 years ago
- 36e63ef Use the static_assert from injection_errors instead of writing the check inline. by Marco Poletti · 10 years ago
- 5c354a6 No longer consider fruit::Requirements<...> as one of the exposed types when determining what binding compressions to perform. Pass the list of exposed types as an std::vector instead of an std::initializer_list, allowing getTypeIdsForList to work. by Marco Poletti · 10 years ago
- c067655 Move some implementations of inline functions/methods to .defn.h files from .h files. by Marco Poletti · 10 years ago
- 4a2ac2e Add unit tests for FixedSizeAllocator. by Marco Poletti · 10 years ago
- e53b79e Add an addInstanceMultibindings() method to PartialComponent, allowing to add multibindings for a type whose number is only known at runtime (e.g. a list of plugins to load dynamically). by Marco Poletti · 10 years ago
- 9a65db6 Make the Op~=RealOp checks in component_functors.defn.h debug-only. by Marco Poletti · 10 years ago
- b438a1e AddProvidedType,AddRequirements now take a set of deps instead of taking a list of types and converting those to a set of deps themselves. by Marco Poletti · 10 years ago
- 7363e1c Remove dummy definition of ProcessRegisterConstructor, it's no longer needed due to deferred bindings. by Marco Poletti · 10 years ago
- b9f19bf Turn the component functors into standard metafunctions (the result struct changes from Op::apply<Comp> to Op::apply<Comp>::type). Use meta::Apply instead of ApplyFunctor. by Marco Poletti · 10 years ago
- d8943a8 Implement deferred binding processing for constructor/provider bindings so that binding compression is now used even if the corresponding bind<I,C>() was after the registerProvider()/registerConstructor() call. by Marco Poletti · 10 years ago
- f6335ae Rename AddToVector->PushFront, swap the order of the two arguments. by Marco Poletti · 10 years ago
- 956cb5b Merge RegisterConstructorAsPointerFactoryHelper into RegisterConstructorAsPointerFactory and add consistency check. by Marco Poletti · 10 years ago
- ca50c3a Major refactoring of Component->Component functors. Now each functor takes the Component afterwards and separately from other parameters. E.g. F<A, B>::apply<Comp> instead of F<Comp, A, B>. by Marco Poletti · 10 years ago