1. ccd6a0a Fix a typo in a Doxygen comment. by Marco Poletti · 6 years ago
  2. ef35710 Merge branch 'master' of github.com:google/fruit by Marco Poletti · 6 years ago
  3. 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
  4. 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
  5. 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
  6. 94e1d12 Fix compilation under MSVC 2017. by Marco Poletti · 7 years ago
  7. 7cdc510 Added support for MSVC 14 (VS2015) by Clayton Lemons · 7 years ago
  8. 735f047 Various improvements to the Doxygen documentation on Fruit classes and their public methods. by Marco Poletti · 7 years ago
  9. 666ed2a Make install() de-duplication and component replacements work across NormalizedComponent+Component. by Marco Poletti · 7 years ago
  10. 3a92133 Allow implicit conversions in the arguments passed to PartialComponent's install() and replace().with() methods. by Marco Poletti · 7 years ago
  11. 418e9bf Allow binding const references in bindInstance. by Marco Poletti · 7 years ago
  12. 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
  13. 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
  14. 508af7c Remove Component's copy constructor, conversion operator and install method. by Marco Poletti · 7 years ago
  15. eac5509 Document that replacements can be stacked and add tests for this case. by Marco Poletti · 7 years ago
  16. 102a707 Add a new PartialComponent feature: component replacement. by Marco Poletti · 7 years ago
  17. 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
  18. 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
  19. 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
  20. c3334a5 More class moves/renames in preparation for the upcoming change in the representation of bindings. by Marco Poletti · 7 years ago
  21. 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
  22. 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
  23. 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
  24. 3e21dcf Make the Fruit deprecated marker work in Visual Studio. by Marco Poletti · 7 years ago
  25. 11a9561 Update the example code and doxygen comments to use the new-style install() methods. by Marco Poletti · 7 years ago
  26. c9e7a0b Mark the old PartialComponent::install() method as deprecated. by Marco Poletti · 7 years ago
  27. 5de0d4f Simplify the new install() API. by Marco Poletti · 7 years ago
  28. 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
  29. 0acba69 Improve test coverage for bindInstance, and report more user-friendly error messages in some error cases. by Marco Poletti · 8 years ago
  30. 0316a00 Reimplement the storage for PartialComponent to: by Marco Poletti · 8 years ago
  31. 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
  32. feaed5c Report an error when passing a pointer to bindInstance(), instead of reporting an obscure error later on. by Marco Poletti · 8 years ago
  33. 4147b40 Forbid copying PartialComponent objects. by Marco Poletti · 8 years ago
  34. 0109baa Move binding types to fruit::impl. by Marco Poletti · 8 years ago
  35. 6cf268f Simplify component.defn.h (also getting rid of an "using namespace" that was there). by Marco Poletti · 8 years ago
  36. 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
  37. cbe3c7a Now PartialComponent is parameterized on human-readable binding types, instead of metaprogramming types. by Marco Poletti · 9 years ago
  38. 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
  39. 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
  40. 1ff06b3 Reduce noise in (most) error messages by delaying the error reporting to the component conversion. by Marco Poletti · 9 years ago
  41. 3b95a51 Refactor a bit the metaprogramming code, plus some small optimizations. by Marco Poletti · 9 years ago
  42. 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
  43. 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
  44. a5289cf Shorten error messages even further by including injection_errors.h directly in all public headers. by Marco Poletti · 10 years ago
  45. c69c8c4 Some small fixes to error-reporting code. Also add more tests. by Marco Poletti · 10 years ago
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. 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
  55. 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
  56. 1cb7de4 Fix a bug that caused an assertion error when using addMultibinding(). by Marco Poletti · 10 years ago
  57. a1e9958 Improve Doxygen documentation. by Marco Poletti · 10 years ago
  58. ff4c8da Make component.h simpler to understand. by Marco Poletti · 10 years ago
  59. 1d7ef49 Forbid copy construction and move/copy assignment of PartialComponent. by Marco Poletti · 10 years ago
  60. 7ad3862 Re-organize the files in include/fruit/impl into subdirectories. by Marco Poletti · 10 years ago
  61. 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
  62. 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
  63. 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
  64. 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
  65. 4f70da2 Minor changes, simplify/remove unreachable or redundant code. by Marco Poletti · 10 years ago
  66. 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
  67. 043870b Improve the doxygen documentation for Injector and [Partial]Component. by Marco Poletti · 10 years ago
  68. 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
  69. 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
  70. 103f650 Refactor the implementation of Component: use ConsComp and drop the ComponentImpl class. by Marco Poletti · 10 years ago
  71. 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
  72. 2ccfbbf Change the representation of compile-time lists. by Marco Poletti · 10 years ago
  73. 130624a Fix performance bug that caused a copy in install() even when a temporary was passed. by Marco Poletti · 10 years ago
  74. 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
  75. 4be47fb Move PartialComponent out of component.h, to a separate partial_component.h file. by Marco Poletti · 10 years ago
  76. 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
  77. 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
  78. 80cfec6 Add injection support for unique_ptr for non-movable types. by Marco Poletti · 10 years ago
  79. 09fa583 Optimize allocations by allocating a single chunk of memory in the injector. by Marco Poletti · 10 years ago
  80. 0b28597 Rename MODULE -> COMPONENT in include guards, forgot to do this during the main rename. by Marco Poletti · 10 years ago
  81. 5bc9876 Minor changes: move code between classes, split PartialComponent out of ComponentImpl, fix Clang warnings, add comments. by Marco Poletti · 10 years ago
  82. 5d84929 Implement factory bindings. by Marco Poletti · 10 years ago
  83. f541a6c Improve some comments. by Marco Poletti · 10 years ago
  84. 65d8eb9 Implement multibindings. by Marco Poletti · 10 years ago
  85. 9559f6c Allow registerProvider() to deduce the signature from a lambda, no longer requiring the caller to specify it. by Marco Poletti · 10 years ago
  86. d61b579 Implement injection scopes, plus some other changes: by Marco Poletti · 10 years ago
  87. 44a987c Complete rename of component->module by renaming related typedefs, type arguments and parameters. by Marco Poletti · 10 years ago
  88. c0db95e Rename Module->Component, UnsafeModule->ComponentStorage. by Marco Poletti · 10 years ago[Renamed (76%) from include/fruit/module.h]
  89. cf798fa Initial commit. by Marco Poletti · 10 years ago