1. a198dbd Add assertions to help diagnose an error caught by Asan when using libc++ and Clang 3.8. by Marco Poletti · 9 years ago
  2. ea234f7 Use the default constructor for NormalizedComponentStorage instead of defining one explicitly. by Marco Poletti · 9 years ago
  3. 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
  4. 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
  5. ebe1225 Remove a couple of old debug-only hacks that are no longer needed. by Marco Poletti · 9 years ago
  6. cd6625f No longer handle the merge of interface bindings when installing a component, it can't happen anymore. by Marco Poletti · 9 years ago
  7. 4147b40 Forbid copying PartialComponent objects. by Marco Poletti · 9 years ago
  8. 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
  9. f10c67e Shift a size_t instead of shifting an int and then converting to size_t. by Marco Poletti · 9 years ago
  10. 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
  11. 0109baa Move binding types to fruit::impl. by Marco Poletti · 9 years ago
  12. 79b01d6 Get rid of remaining "using namespace" directives in header files. by Marco Poletti · 9 years ago
  13. 6cf268f Simplify component.defn.h (also getting rid of an "using namespace" that was there). by Marco Poletti · 9 years ago
  14. 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
  15. 6026b75 Report a specific error when a type is bound to itself. by Marco Poletti · 9 years ago
  16. 5852508 Filter out None elements in ConstructErrorWithArgVector. by Marco Poletti · 9 years ago
  17. 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
  18. 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
  19. 2a1d5c7 Some tweaks trying to make Fruit tests work on OS X. by Marco Poletti · 9 years ago
  20. 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
  21. 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
  22. d5fa227 Print more compiler-related information in the Travis CI postsubmits. by Marco Poletti · 9 years ago
  23. 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
  24. b9a4bec Fix compile error that appeared only with -DFRUIT_EXTRA_DEBUG. by Marco Poletti · 9 years ago
  25. 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
  26. cbe3c7a Now PartialComponent is parameterized on human-readable binding types, instead of metaprogramming types. by Marco Poletti · 9 years ago
  27. 0d5e069 Get rid of the last per-compiler check, introducing a new FRUIT_HAS_CXA_DEMANGLE configure macro. by Marco Poletti · 9 years ago
  28. 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
  29. 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
  30. 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
  31. f41d236 Remove code that was (technically) undefined behavior in LambdaInvoker (it broke strict aliasing rules). by Marco Poletti · 9 years ago
  32. 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
  33. 3c54483 Report more informative errors when an abstract class is used instead of a concrete class. by Marco Poletti · 9 years ago
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. 0954754 Minor optimizations to the compile-time code. by Marco Poletti · 9 years ago
  40. e5c936b Replace a MapContainsKey with an IsInSet check where possible. This slightly improves compile-time performance. by Marco Poletti · 9 years ago
  41. 38b8df4 Optimize the Fold() operator, slightly increasing compile-time performance. by Marco Poletti · 9 years ago
  42. 1ff06b3 Reduce noise in (most) error messages by delaying the error reporting to the component conversion. by Marco Poletti · 9 years ago
  43. 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
  44. daf6222 Add a PartialCall metafunction and use it so that vector transforms now can use normal metafunctions. by Marco Poletti · 9 years ago
  45. ebc3312 Add a TransformVector meta-operation and use instead of doing transforms explicitly everywhere. by Marco Poletti · 9 years ago
  46. 3b95a51 Refactor a bit the metaprogramming code, plus some small optimizations. by Marco Poletti · 9 years ago
  47. 603c252 Improve compile-time performance by ~5% with a few small optimizations. by Marco Poletti · 9 years ago
  48. 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
  49. 1188cfc Fix compile error occurring only with GCC5 (which does a stricter check on prototype/definition signature consistency). by Marco Poletti · 9 years ago
  50. 2197297 Make a field of InjectorStorage private again (was temporarily turned into public). by Marco Poletti · 9 years ago
  51. 4fe2e72 Avoid duplication in the implementation of GetHelper by calling GetHelper recursively. by Marco Poletti · 9 years ago
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. 6ecb81d Fix the error reported when there is a dependency loop to not contain fruit::Vector<>. by Marco Poletti · 10 years ago
  60. 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
  61. a5289cf Shorten error messages even further by including injection_errors.h directly in all public headers. by Marco Poletti · 10 years ago
  62. 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
  63. 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
  64. 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
  65. fa279f1 Replace CheckIfError with a debug-only static_assert in places where no error is ever reported. by Marco Poletti · 10 years ago
  66. 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
  67. c69c8c4 Some small fixes to error-reporting code. Also add more tests. by Marco Poletti · 10 years ago
  68. 6757da7 Fix one remaining instance of old-style error reporting, add test. by Marco Poletti · 10 years ago
  69. 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
  70. 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
  71. bfcb7ed Rename the non-templated getPtr() to getPtrInternal(). by Marco Poletti · 10 years ago
  72. c4fbcb1 Inline ensureConstructed() into getPtr(). Saves ~2% of injection time. by Marco Poletti · 10 years ago
  73. 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
  74. c54a093 Store pre-multiplied IDs in SemistaticGraphInternalNodeId to save one instruction per edge at injection time. by Marco Poletti · 10 years ago
  75. 80c7bb4 Some performance optimizations in SemistaticGraph and InjectorStorage, saving ~10% of injection time. by Marco Poletti · 10 years ago
  76. 9e0c6de Inline the non-templated InjectorStorage::lazyGetPtr into the templated one. by Marco Poletti · 10 years ago
  77. ab49a96 Revert "Fix a Clang warning in type_info.h (class vs struct)." by Marco Poletti · 10 years ago
  78. 598a0b3 Fix a Clang warning in type_info.h (class vs struct). by Marco Poletti · 10 years ago
  79. da1bc0c Remove a specialization of AutoRegisterFactoryHelper that is never used. by Marco Poletti · 10 years ago
  80. eddc549 Remove some unused (private) getPtr() methods of InjectorStorage. by Marco Poletti · 10 years ago
  81. 1a97c80 Remove SemistaticGraph::size(), it's never used. by Marco Poletti · 10 years ago
  82. 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
  83. 9bb46a3 Remove {Normalized,}BindingData::operator<(), they're no longer used. by Marco Poletti · 10 years ago
  84. 0c56617 Fix compile error in hybrid_vector that only occurred in release mode. by Marco Poletti · 10 years ago
  85. 53f867e Remove unused constructor of NormalizedComponentStorage, inline the now-redundant init() method. by Marco Poletti · 10 years ago
  86. cbd708f Fix typo in comment in lambda_invoker.h. by Marco Poletti · 10 years ago
  87. 7e3052d Add unit tests for HybridVector. by Marco Poletti · 10 years ago
  88. 36e63ef Use the static_assert from injection_errors instead of writing the check inline. by Marco Poletti · 10 years ago
  89. 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
  90. c067655 Move some implementations of inline functions/methods to .defn.h files from .h files. by Marco Poletti · 10 years ago
  91. 4a2ac2e Add unit tests for FixedSizeAllocator. by Marco Poletti · 10 years ago
  92. 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
  93. 9a65db6 Make the Op~=RealOp checks in component_functors.defn.h debug-only. by Marco Poletti · 10 years ago
  94. 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
  95. 7363e1c Remove dummy definition of ProcessRegisterConstructor, it's no longer needed due to deferred bindings. by Marco Poletti · 10 years ago
  96. 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
  97. 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
  98. f6335ae Rename AddToVector->PushFront, swap the order of the two arguments. by Marco Poletti · 10 years ago
  99. 956cb5b Merge RegisterConstructorAsPointerFactoryHelper into RegisterConstructorAsPointerFactory and add consistency check. by Marco Poletti · 10 years ago
  100. 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