- 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 · 9 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 · 9 years ago
- a5289cf Shorten error messages even further by including injection_errors.h directly in all public headers. by Marco Poletti · 9 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 · 9 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 · 9 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 · 9 years ago
- fa279f1 Replace CheckIfError with a debug-only static_assert in places where no error is ever reported. by Marco Poletti · 9 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 · 9 years ago
- c69c8c4 Some small fixes to error-reporting code. Also add more tests. by Marco Poletti · 9 years ago
- 6757da7 Fix one remaining instance of old-style error reporting, add test. by Marco Poletti · 9 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 · 9 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 · 9 years ago
- bfcb7ed Rename the non-templated getPtr() to getPtrInternal(). by Marco Poletti · 9 years ago
- c4fbcb1 Inline ensureConstructed() into getPtr(). Saves ~2% of injection time. by Marco Poletti · 9 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 · 9 years ago
- c54a093 Store pre-multiplied IDs in SemistaticGraphInternalNodeId to save one instruction per edge at injection time. by Marco Poletti · 9 years ago
- 80c7bb4 Some performance optimizations in SemistaticGraph and InjectorStorage, saving ~10% of injection time. by Marco Poletti · 9 years ago
- 9e0c6de Inline the non-templated InjectorStorage::lazyGetPtr into the templated one. by Marco Poletti · 9 years ago
- ab49a96 Revert "Fix a Clang warning in type_info.h (class vs struct)." by Marco Poletti · 9 years ago
- 598a0b3 Fix a Clang warning in type_info.h (class vs struct). by Marco Poletti · 9 years ago
- da1bc0c Remove a specialization of AutoRegisterFactoryHelper that is never used. by Marco Poletti · 9 years ago
- eddc549 Remove some unused (private) getPtr() methods of InjectorStorage. by Marco Poletti · 9 years ago
- 1a97c80 Remove SemistaticGraph::size(), it's never used. by Marco Poletti · 9 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 · 9 years ago
- 9bb46a3 Remove {Normalized,}BindingData::operator<(), they're no longer used. by Marco Poletti · 9 years ago
- 0c56617 Fix compile error in hybrid_vector that only occurred in release mode. by Marco Poletti · 9 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
- 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
- d83763e Rename fruit::impl::Vector to HybridVector, use it for ComponentStorage.compressed_bindings instead for std::vector. by Marco Poletti · 10 years ago
- 145223b Make the 'allocator' field of InjectorStoorage private, passing it as parameter to functions that need it instead. by Marco Poletti · 10 years ago
- 91d998d Remove unnecessary #include. by Marco Poletti · 10 years ago
- 215fc19 Use FixedSizeVector instead of std::vector in Semistatic{Map,Graph}. by Marco Poletti · 10 years ago
- 79f65cb Implement more methods of std::vector in FixedSizeVector. by Marco Poletti · 10 years ago
- 4ac469a Move FixedSize{Vector,Allocator} from storage/ to data_structures/. by Marco Poletti · 10 years ago
- 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
- 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
- 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
- b6ef0ad Improve the debug output, remove obsolete debug prints. by Marco Poletti · 10 years ago
- 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
- 0c35fac Rename fruit::impl::meta::List to fruit::impl::meta::Vector. by Marco Poletti · 10 years ago
- 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
- 9754d5a Inline GetAssistedArg into the caller, rename GetAssistedArgHelper->GetAssistedArg. by Marco Poletti · 10 years ago
- 978c9f3 Replace InvokeAssistedFactory with a stateful lambda. by Marco Poletti · 10 years ago
- 1b51db8 Minor changes. by Marco Poletti · 10 years ago
- 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
- 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
- a82a444 Minor cleanups. by Marco Poletti · 10 years ago
- 0bfbe05 Reorganize the code, notably move BindingDataNodeIter to InjectorStorage. by Marco Poletti · 10 years ago
- 2a1a581 Factor out a Vector class from ComponentStorage. by Marco Poletti · 10 years ago
- 433257c Remove the unused SemistaticGraph::getOrAllocateNodeId() method. by Marco Poletti · 10 years ago
- 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
- 6c13003 Rename createObjectVector->createMultibindingVector for clarity. by Marco Poletti · 10 years ago
- 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
- 207597b Minor code simplifications in InjectorStorage. by Marco Poletti · 10 years ago
- 1cb7de4 Fix a bug that caused an assertion error when using addMultibinding(). by Marco Poletti · 10 years ago
- 9a93cda Rename BindAssistedFactoryHelper->InvokeAssistedFactory, remove BindAssistedFactory. by Marco Poletti · 10 years ago
- b829323 Rename singleton->object throughout, plus other minor comment fixes. by Marco Poletti · 10 years ago
- 85aea00 Rename typeRegistry->bindings, typeRegistryForMultibindings->multibindings throughout. by Marco Poletti · 10 years ago
- eedc2a5 Remove the multibindingDeps vector from ComponentStorage. Each MultibindingData stores the deps anyway. by Marco Poletti · 10 years ago
- 93372ce Inline trivial methods of ComponentStorage into component.defn.h. by Marco Poletti · 10 years ago
- 224bd9c First part of the refactoring of ComponentStorage, mostly moving logic into InjectorStorage. by Marco Poletti · 10 years ago
- 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
- 5c913af Split out the allocator part of InjectorStorage into a separate FixedSizeAllocator class. by Marco Poletti · 10 years ago
- 1e3b61a Fix a bug in HasReverseBinding that produced a compile error in some cases. by Marco Poletti · 10 years ago
- 542ce42 Update documentation of unsafeGet() due to binding compression. by Marco Poletti · 10 years ago
- 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
- b723538 Use a CandidateValuesRange struct instead of a std::pair, in SemistaticMap. by Marco Poletti · 10 years ago
- 58e2ec2 First implementation of binding compression; reduces injection time by ~35% when using virtual destructors. by Marco Poletti · 10 years ago
- 934689f Optimize injection of Provider<> objects. by Marco Poletti · 10 years ago
- b6e6c09 Fix compilation warnings/errors that only appear with Clang or when in release mode. by Marco Poletti · 10 years ago
- f928a00 Optimize SemistaticMap using shallow copy semantics to share data with the NormalizedComponent. Decreases injection time by ~5%. by Marco Poletti · 10 years ago
- 050d600 Optimize SemistaticGraph using shallow copy semantics to share data with the NormalizedComponent. Decreases injection time by ~15%. by Marco Poletti · 10 years ago
- 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
- 181cbe2 Changes in preparation of making SemistaticGraph non-copyable. by Marco Poletti · 10 years ago
- 5200558 Make InjectorStorage and NormalizedComponentStorage non-movable/copyable, in preparation of future optimizations. by Marco Poletti · 10 years ago
- 8fb03fa Move the component normalization logic into InjectorStorage, and refactor InjectorStorage to prepare for the StaticMap optimization. by Marco Poletti · 10 years ago
- 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
- a4cf126 Rename normalized_component_storage.defn.h -> binding_data.defn.h. by Marco Poletti · 10 years ago