1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 6ecb81d Fix the error reported when there is a dependency loop to not contain fruit::Vector<>. by Marco Poletti · 9 years ago
  9. 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 · 9 years ago
  10. a5289cf Shorten error messages even further by including injection_errors.h directly in all public headers. by Marco Poletti · 9 years ago
  11. 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 · 9 years ago
  12. 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 · 9 years ago
  13. 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 · 9 years ago
  14. fa279f1 Replace CheckIfError with a debug-only static_assert in places where no error is ever reported. by Marco Poletti · 9 years ago
  15. 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 · 9 years ago
  16. c69c8c4 Some small fixes to error-reporting code. Also add more tests. by Marco Poletti · 9 years ago
  17. 6757da7 Fix one remaining instance of old-style error reporting, add test. by Marco Poletti · 9 years ago
  18. 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 · 9 years ago
  19. 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 · 9 years ago
  20. bfcb7ed Rename the non-templated getPtr() to getPtrInternal(). by Marco Poletti · 9 years ago
  21. c4fbcb1 Inline ensureConstructed() into getPtr(). Saves ~2% of injection time. by Marco Poletti · 9 years ago
  22. 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 · 9 years ago
  23. c54a093 Store pre-multiplied IDs in SemistaticGraphInternalNodeId to save one instruction per edge at injection time. by Marco Poletti · 9 years ago
  24. 80c7bb4 Some performance optimizations in SemistaticGraph and InjectorStorage, saving ~10% of injection time. by Marco Poletti · 9 years ago
  25. 9e0c6de Inline the non-templated InjectorStorage::lazyGetPtr into the templated one. by Marco Poletti · 9 years ago
  26. ab49a96 Revert "Fix a Clang warning in type_info.h (class vs struct)." by Marco Poletti · 9 years ago
  27. 598a0b3 Fix a Clang warning in type_info.h (class vs struct). by Marco Poletti · 9 years ago
  28. da1bc0c Remove a specialization of AutoRegisterFactoryHelper that is never used. by Marco Poletti · 9 years ago
  29. eddc549 Remove some unused (private) getPtr() methods of InjectorStorage. by Marco Poletti · 9 years ago
  30. 1a97c80 Remove SemistaticGraph::size(), it's never used. by Marco Poletti · 9 years ago
  31. 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 · 9 years ago
  32. 9bb46a3 Remove {Normalized,}BindingData::operator<(), they're no longer used. by Marco Poletti · 9 years ago
  33. 0c56617 Fix compile error in hybrid_vector that only occurred in release mode. by Marco Poletti · 9 years ago
  34. 53f867e Remove unused constructor of NormalizedComponentStorage, inline the now-redundant init() method. by Marco Poletti · 10 years ago
  35. cbd708f Fix typo in comment in lambda_invoker.h. by Marco Poletti · 10 years ago
  36. 7e3052d Add unit tests for HybridVector. by Marco Poletti · 10 years ago
  37. 36e63ef Use the static_assert from injection_errors instead of writing the check inline. by Marco Poletti · 10 years ago
  38. 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
  39. c067655 Move some implementations of inline functions/methods to .defn.h files from .h files. by Marco Poletti · 10 years ago
  40. 4a2ac2e Add unit tests for FixedSizeAllocator. by Marco Poletti · 10 years ago
  41. 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
  42. 9a65db6 Make the Op~=RealOp checks in component_functors.defn.h debug-only. by Marco Poletti · 10 years ago
  43. 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
  44. 7363e1c Remove dummy definition of ProcessRegisterConstructor, it's no longer needed due to deferred bindings. by Marco Poletti · 10 years ago
  45. 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
  46. 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
  47. f6335ae Rename AddToVector->PushFront, swap the order of the two arguments. by Marco Poletti · 10 years ago
  48. 956cb5b Merge RegisterConstructorAsPointerFactoryHelper into RegisterConstructorAsPointerFactory and add consistency check. by Marco Poletti · 10 years ago
  49. 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
  50. 2edd866 Rename Binding->InterfaceBinding in the Component implementation, as Binding is used with a more general sense in e.g. BindingData, InjectorStorage. Also some other related renames. by Marco Poletti · 10 years ago
  51. d83763e Rename fruit::impl::Vector to HybridVector, use it for ComponentStorage.compressed_bindings instead for std::vector. by Marco Poletti · 10 years ago
  52. 145223b Make the 'allocator' field of InjectorStoorage private, passing it as parameter to functions that need it instead. by Marco Poletti · 10 years ago
  53. 91d998d Remove unnecessary #include. by Marco Poletti · 10 years ago
  54. 215fc19 Use FixedSizeVector instead of std::vector in Semistatic{Map,Graph}. by Marco Poletti · 10 years ago
  55. 79f65cb Implement more methods of std::vector in FixedSizeVector. by Marco Poletti · 10 years ago
  56. 4ac469a Move FixedSize{Vector,Allocator} from storage/ to data_structures/. by Marco Poletti · 10 years ago
  57. 979c940 Add a FixedSizeVector class and use it in FixedSizeAllocator to keep track of allocations. Avoids 1 branch per injection for types that are not trivially destructible and not externally allocated. by Marco Poletti · 10 years ago
  58. a85fc03 Keep track of what bindings need an allocation, to reduce the space estimate for the fixed-size allocator. by Marco Poletti · 10 years ago
  59. 1b2a208 Refactor the allocator construction, making the interface more high-level and adding more checks when FRUIT_EXTRA_DEBUG is enabled. by Marco Poletti · 10 years ago
  60. b6ef0ad Improve the debug output, remove obsolete debug prints. by Marco Poletti · 10 years ago
  61. bb7442f Fix bug in binding compression in a corner case where the binding compression I->C must be undone when C is in the late bindings together with a non-I type depending on C. by Marco Poletti · 10 years ago
  62. 0c35fac Rename fruit::impl::meta::List to fruit::impl::meta::Vector. by Marco Poletti · 10 years ago
  63. 6070c7c Move fruit/impl/metaprogramming->fruit/impl/meta, and move all metaprogramming facilities into the fruit::impl::meta namespace. by Marco Poletti · 10 years ago
  64. 9754d5a Inline GetAssistedArg into the caller, rename GetAssistedArgHelper->GetAssistedArg. by Marco Poletti · 10 years ago
  65. 978c9f3 Replace InvokeAssistedFactory with a stateful lambda. by Marco Poletti · 10 years ago
  66. 1b51db8 Minor changes. by Marco Poletti · 10 years ago
  67. 4d39c58 Move the functors to manipulate PartialComponent objects from component.defn.h to a new component_functors.defn.h file. by Marco Poletti · 10 years ago
  68. ed4d62b Assisted injection is just a convenience feature, it can be implemented using registerProvider(). Do so, and move the assisted injection code out of InjectorStorage into component.defn.h. by Marco Poletti · 10 years ago
  69. a82a444 Minor cleanups. by Marco Poletti · 10 years ago
  70. 0bfbe05 Reorganize the code, notably move BindingDataNodeIter to InjectorStorage. by Marco Poletti · 10 years ago
  71. 2a1a581 Factor out a Vector class from ComponentStorage. by Marco Poletti · 10 years ago
  72. 433257c Remove the unused SemistaticGraph::getOrAllocateNodeId() method. by Marco Poletti · 10 years ago
  73. 9491d65 Switch to the lowercase_with_underscores style for variables and fields (before some used the lowerCamel case instead). by Marco Poletti · 10 years ago
  74. 6c13003 Rename createObjectVector->createMultibindingVector for clarity. by Marco Poletti · 10 years ago
  75. 7eab28b When a lambda used as provider returns a pointer to a derived class with virtual methods, let the compiler emit a warning if there's no virtual destructor. by Marco Poletti · 10 years ago
  76. 207597b Minor code simplifications in InjectorStorage. by Marco Poletti · 10 years ago
  77. 1cb7de4 Fix a bug that caused an assertion error when using addMultibinding(). by Marco Poletti · 10 years ago
  78. 9a93cda Rename BindAssistedFactoryHelper->InvokeAssistedFactory, remove BindAssistedFactory. by Marco Poletti · 10 years ago
  79. b829323 Rename singleton->object throughout, plus other minor comment fixes. by Marco Poletti · 10 years ago
  80. 85aea00 Rename typeRegistry->bindings, typeRegistryForMultibindings->multibindings throughout. by Marco Poletti · 10 years ago
  81. eedc2a5 Remove the multibindingDeps vector from ComponentStorage. Each MultibindingData stores the deps anyway. by Marco Poletti · 10 years ago
  82. 93372ce Inline trivial methods of ComponentStorage into component.defn.h. by Marco Poletti · 10 years ago
  83. 224bd9c First part of the refactoring of ComponentStorage, mostly moving logic into InjectorStorage. by Marco Poletti · 10 years ago
  84. 4ac3c8e Factor common code in individual bindings in component_storage.defn.h into a new constructObject() method in InjectorStorage. Now the allocator can be private. by Marco Poletti · 10 years ago
  85. 5c913af Split out the allocator part of InjectorStorage into a separate FixedSizeAllocator class. by Marco Poletti · 10 years ago
  86. 1e3b61a Fix a bug in HasReverseBinding that produced a compile error in some cases. by Marco Poletti · 10 years ago
  87. 542ce42 Update documentation of unsafeGet() due to binding compression. by Marco Poletti · 10 years ago
  88. 94dd821 Change the signature of the 'create' operation of various bindings to only return the created object, and to set any deleter itself if needed instead of returning it. Saves ~20% of injection time. by Marco Poletti · 10 years ago
  89. b723538 Use a CandidateValuesRange struct instead of a std::pair, in SemistaticMap. by Marco Poletti · 10 years ago
  90. 58e2ec2 First implementation of binding compression; reduces injection time by ~35% when using virtual destructors. by Marco Poletti · 10 years ago
  91. 934689f Optimize injection of Provider<> objects. by Marco Poletti · 10 years ago
  92. b6e6c09 Fix compilation warnings/errors that only appear with Clang or when in release mode. by Marco Poletti · 10 years ago
  93. f928a00 Optimize SemistaticMap using shallow copy semantics to share data with the NormalizedComponent. Decreases injection time by ~5%. by Marco Poletti · 10 years ago
  94. 050d600 Optimize SemistaticGraph using shallow copy semantics to share data with the NormalizedComponent. Decreases injection time by ~15%. by Marco Poletti · 10 years ago
  95. 5c1bf6d SemistaticGraph now stores internal IDs using a SemistaticGraphInternalNodeId struct. This is in preparation of the upcoming SemistaticGraph optimization. by Marco Poletti · 10 years ago
  96. 181cbe2 Changes in preparation of making SemistaticGraph non-copyable. by Marco Poletti · 10 years ago
  97. 5200558 Make InjectorStorage and NormalizedComponentStorage non-movable/copyable, in preparation of future optimizations. by Marco Poletti · 10 years ago
  98. 8fb03fa Move the component normalization logic into InjectorStorage, and refactor InjectorStorage to prepare for the StaticMap optimization. by Marco Poletti · 10 years ago
  99. 4e9594b InjectorStorage now stores the type registry (for bindings and multibindings) separately, instead of storing a NormalizedComponentStorage. This is in preparation for future optimizations. by Marco Poletti · 10 years ago
  100. a4cf126 Rename normalized_component_storage.defn.h -> binding_data.defn.h. by Marco Poletti · 10 years ago