- ccd6a0a Fix a typo in a Doxygen comment. by Marco Poletti · 6 years ago
- ef35710 Merge branch 'master' of github.com:google/fruit by Marco Poletti · 6 years ago
- 3c9c517 Add a PartialComponent::installComponentFunctions() method that allows to install a variable number of components (typically by expanding a template parameter pack). by Marco Poletti · 6 years ago
- ed5ec82 Make PartialComponent non-movable. This catches at compile-time some cases where PartialComponent is used for non-temporary values. See issue 67. by Marco Poletti · 6 years ago
- 1b959ab Add a .clang-format config file and reformat all C++ source code using that. Also added some documentation on the preferred style in CONTRIBUTING.md. by Marco Poletti · 7 years ago
- 94e1d12 Fix compilation under MSVC 2017. by Marco Poletti · 7 years ago
- 7cdc510 Added support for MSVC 14 (VS2015) by Clayton Lemons · 7 years ago
- 735f047 Various improvements to the Doxygen documentation on Fruit classes and their public methods. by Marco Poletti · 7 years ago
- 666ed2a Make install() de-duplication and component replacements work across NormalizedComponent+Component. by Marco Poletti · 7 years ago
- 3a92133 Allow implicit conversions in the arguments passed to PartialComponent's install() and replace().with() methods. by Marco Poletti · 7 years ago
- 418e9bf Allow binding const references in bindInstance. by Marco Poletti · 7 years ago
- c84c7de Allow Component, NormalizedComponent, Injector and Provider to specify that they only require/provide a const T (instead of requiring/providing a T). This is in preparation for allowing const bindings. by Marco Poletti · 7 years ago
- 91ce401 Define PartialComponentWithReplaceInProgress within ParttialComponent, otherwise MSVC chokes on the out-of-class definition. Also rename it to PartialComponentWithReplacementInProgress. by Marco Poletti · 7 years ago
- 508af7c Remove Component's copy constructor, conversion operator and install method. by Marco Poletti · 7 years ago
- eac5509 Document that replacements can be stacked and add tests for this case. by Marco Poletti · 7 years ago
- 102a707 Add a new PartialComponent feature: component replacement. by Marco Poletti · 7 years ago
- 03d9c9f Declare Component's copy constructor explicitly instead of relying on the default implementation, hoping that this will let MSVC report the deprecated warning (it doesn't ATM). by Marco Poletti · 7 years ago
- 1ac6414 Deprecate Component's copy constructor. With the new-style install() syntax Components can be lightweight, so when a copy is desired they can just be re-created instead. This should be a very rare use case anyway. Removing this copy constructor will allow us (in the next major version of Fruit) to remove the code to copy components and lazy component arguments, reducing the object size for code using Fruit. by Marco Poletti · 7 years ago
- c563512 Change the internal representation of Component to use a single vector instead of using separate vector for various kinds of bindings. This reduces the amount of allocation/deallocation done when moving/copying Components. However this changes the order in which multibindings are returned by the injector; that will be fixed in a follow-up commit. by Marco Poletti · 7 years ago
- c3334a5 More class moves/renames in preparation for the upcoming change in the representation of bindings. by Marco Poletti · 7 years ago
- 6103cdb Move binding-related headers from fruit/impl/ to fruit/impl/bindings/, in preparation for more binding-related changes. by Marco Poletti · 7 years ago
- 4018a7b Implement an optimization for the new-style install, in the case when there are no arguments to the getComponent function. by Marco Poletti · 7 years ago
- 716773c First step of the real implementation of the new install method: now lazy components are expanded at normalization time instead of install time; however component de-duplication and loop checking are still missing. by Marco Poletti · 7 years ago
- 3e21dcf Make the Fruit deprecated marker work in Visual Studio. by Marco Poletti · 7 years ago
- 11a9561 Update the example code and doxygen comments to use the new-style install() methods. by Marco Poletti · 7 years ago
- c9e7a0b Mark the old PartialComponent::install() method as deprecated. by Marco Poletti · 7 years ago
- 5de0d4f Simplify the new install() API. by Marco Poletti · 7 years ago
- 09843e0 Add a new PartialComponent#install() method that takes a function + args. This has the potential of being much more efficient than the one that takes a Component; however for now it's just implemented as a wrapper around the old install() method. by Marco Poletti · 7 years ago
- 0acba69 Improve test coverage for bindInstance, and report more user-friendly error messages in some error cases. by Marco Poletti · 8 years ago
- 0316a00 Reimplement the storage for PartialComponent to: by Marco Poletti · 8 years ago
- cf5c9f1 No longer inline some component-related code, to reduce the executable size of client code using Fruit. This yields a ~6x reduction in the benchmark with 100 classes (1.6MB -> 275KB). by Marco Poletti · 8 years ago
- feaed5c Report an error when passing a pointer to bindInstance(), instead of reporting an obscure error later on. by Marco Poletti · 8 years ago
- 4147b40 Forbid copying PartialComponent objects. by Marco Poletti · 8 years ago
- 0109baa Move binding types to fruit::impl. by Marco Poletti · 8 years ago
- 6cf268f Simplify component.defn.h (also getting rid of an "using namespace" that was there). by Marco Poletti · 8 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
- 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
- 1ff06b3 Reduce noise in (most) error messages by delaying the error reporting to the component conversion. by Marco Poletti · 9 years ago
- 3b95a51 Refactor a bit the metaprogramming code, plus some 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
- 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
- a5289cf Shorten error messages even further by including injection_errors.h directly in all public headers. by Marco Poletti · 10 years ago
- c69c8c4 Some small fixes to error-reporting code. Also add more tests. 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
- 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
- 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
- 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
- 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
- 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
- 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
- 1cb7de4 Fix a bug that caused an assertion error when using addMultibinding(). by Marco Poletti · 10 years ago
- a1e9958 Improve Doxygen documentation. by Marco Poletti · 10 years ago
- ff4c8da Make component.h simpler to understand. by Marco Poletti · 10 years ago
- 1d7ef49 Forbid copy construction and move/copy assignment of PartialComponent. by Marco Poletti · 10 years ago
- 7ad3862 Re-organize the files in include/fruit/impl into subdirectories. by Marco Poletti · 10 years ago
- 32381f6 Split the compile-time part of component_impl.h in metaprogramming/component.h, and move the runtime part to component.defn.h. by Marco Poletti · 10 years ago
- bd9e0b3 Change the metaprogramming code to use an mpl-like style. Greatly improves readability, but compile time increaes ~10% in the benchmark. by Marco Poletti · 10 years ago
- 7f35b65 Re-organize the source code. Merge component.utils.h into component_impl.h. Now using .defn files for template/inline definitions. by Marco Poletti · 10 years ago
- 24a6cd2 Document that factories can't return a naked pointer, and add an error/test. Remove legacy code that dealt with pointers (but was no longer called). by Marco Poletti · 10 years ago
- 4f70da2 Minor changes, simplify/remove unreachable or redundant code. by Marco Poletti · 10 years ago
- 5bac985 Drop support for functions as providers (only lambdas are supported now). De-templatize SemistaticMap, store typeInfo + is_created + create/singleton in 2 machine words. Gives a ~10% reduction in injection time. by Marco Poletti · 10 years ago
- 043870b Improve the doxygen documentation for Injector and [Partial]Component. by Marco Poletti · 10 years ago
- 1072a68 Allow lambdas used as providers/factories to be inlined in the create() operation, by pushing down the lambda type in the call hierarchy instead of casting it to a function pointer. by Marco Poletti · 10 years ago
- 4406e32 Simplify the public interface: move PartialComponent into component.h, inline a copy of Provider into Injector, remove unused forward declarations, move method definition out of public headers. by Marco Poletti · 10 years ago
- 103f650 Refactor the implementation of Component: use ConsComp and drop the ComponentImpl class. by Marco Poletti · 10 years ago
- 845a3d4 Revert "Change the representation of compile-time lists.". There is no compile-time performance benefit with Clang, and the compile-time with GCC was ~10% worse. by Marco Poletti · 10 years ago
- 2ccfbbf Change the representation of compile-time lists. by Marco Poletti · 10 years ago
- 130624a Fix performance bug that caused a copy in install() even when a temporary was passed. by Marco Poletti · 10 years ago
- 97e3623 Improve compile-time error messages, and add tests for the improved messages. Also test that all public headers can be included on their own, and add missing includes. by Marco Poletti · 10 years ago
- 4be47fb Move PartialComponent out of component.h, to a separate partial_component.h file. by Marco Poletti · 10 years ago
- b5cadcf Add move constructors and store the ComponentStorage in a unique_ptr, to avoid copies and also keep the move cost low. by Marco Poletti · 10 years ago
- c7a6bfc Remove the second registerFactory() method introduced together with non-movable types support; the pre-existing registerFactory() method is enough. by Marco Poletti · 10 years ago
- 80cfec6 Add injection support for unique_ptr for non-movable types. by Marco Poletti · 10 years ago
- 09fa583 Optimize allocations by allocating a single chunk of memory in the injector. by Marco Poletti · 10 years ago
- 0b28597 Rename MODULE -> COMPONENT in include guards, forgot to do this during the main rename. by Marco Poletti · 10 years ago
- 5bc9876 Minor changes: move code between classes, split PartialComponent out of ComponentImpl, fix Clang warnings, add comments. by Marco Poletti · 10 years ago
- 5d84929 Implement factory bindings. by Marco Poletti · 10 years ago
- f541a6c Improve some comments. by Marco Poletti · 10 years ago
- 65d8eb9 Implement multibindings. by Marco Poletti · 10 years ago
- 9559f6c Allow registerProvider() to deduce the signature from a lambda, no longer requiring the caller to specify it. by Marco Poletti · 10 years ago
- d61b579 Implement injection scopes, plus some other changes: by Marco Poletti · 10 years ago
- 44a987c Complete rename of component->module by renaming related typedefs, type arguments and parameters. by Marco Poletti · 10 years ago
- c0db95e Rename Module->Component, UnsafeModule->ComponentStorage. by Marco Poletti · 10 years ago[Renamed (76%) from include/fruit/module.h]
- cf798fa Initial commit. by Marco Poletti · 10 years ago