1. a102cab Fix a compilation warning that started appearing with Clang 8. by Marco Poletti · 5 years ago
  2. bc7a2df Revert part of commit f06151, that part actually made Fruit slightly slower now that the hash table is bigger. by Marco Poletti · 6 years ago
  3. f061517 Some small optimizations when constructing a SemistaticMap. by Marco Poletti · 6 years ago
  4. c41eb97 Double the size of SemistaticMap's hash table, with the previous size there can be many collisions when the number of elements is just under a power of 2. by Marco Poletti · 6 years ago
  5. 25f6341 Remove a friend declaration that's no longer used. by Marco Poletti · 6 years ago
  6. 8c79fba Make componentFunction() work with MSVC 2015. by Marco Poletti · 6 years ago
  7. 6794aa7 (try to) workaround a MSVC 2015 bug on overload resolution with a variadic type list that can be empty. by Marco Poletti · 6 years ago
  8. 5fbea5b Another attempt at improving the error messages for componentFunction() misuse when using MSVC. by Marco Poletti · 6 years ago
  9. 7a0a167 Revert "Slight change to componentFunction() so that the user gets a better error in MSVC when they try to pass a param type that's not movable." by Marco Poletti · 6 years ago
  10. dc2acf5 Slight change to componentFunction() so that the user gets a better error in MSVC when they try to pass a param type that's not movable. by Marco Poletti · 6 years ago
  11. 893f655 Move the RemoveAnnotation<> helper out of Injector<> to fix a compiler crash in recent versions of MSVC 2017. by Marco Poletti · 6 years ago
  12. ccd6a0a Fix a typo in a Doxygen comment. by Marco Poletti · 6 years ago
  13. 2a24a06 Fix some macro issues introduced by the previous commit. by Marco Poletti · 6 years ago
  14. 066d689 Use #if instead of #ifdef for Fruit macros (apart from include guards). by Marco Poletti · 6 years ago
  15. ecd9c29 Minor change in installComponentFunctions(), hoping to workaround a MSVC bug that causes a compilation error when dealing with initializer lists. by Marco Poletti · 6 years ago
  16. 4cd88f0 Fix a compile error with old versions of the STL where std::tuple's constructor is marked as explicit. by Marco Poletti · 6 years ago
  17. b1af2be Fix a method overload ambiguity error (Clang-only) when using installComponentFunctions(). by Marco Poletti · 6 years ago
  18. 58ad0a4 Use 'class' instead of 'struct' in a friend declaration to be consistent with the definition. by Marco Poletti · 6 years ago
  19. 5397682 Remove an extra semicolon that was causing a warning in pedantic mode. by Marco Poletti · 6 years ago
  20. ef35710 Merge branch 'master' of github.com:google/fruit by Marco Poletti · 6 years ago
  21. 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
  22. 58040a5 Include <thread> in injector_storage.h for std::recursive_mutex, trying to fix a compile error on Windows with old versions of GCC. by Marco Poletti · 6 years ago
  23. 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
  24. c62fb68 Cast explicitly from node_iterator to const_node_iterator (otherwise MSVC chokes on code comparing the two). by Marco Poletti · 6 years ago
  25. 7187fbb Add a SemistaticGraph::node_iterator -> SemistaticGraph::const_node_iterator conversion, now needed in an assertion. by Marco Poletti · 6 years ago
  26. d81f3dc Make Fruit injectors accessible concurrently from multiple threads. This commit is probably backwards-incompatible on some platforms (e.g. OS X), so I expect CI errors in some configurations. I'll add a CMake flag to allow switching this off in a separate commit. by Marco Poletti · 6 years ago
  27. 11728df Add another workaround for the MSVC 2017 bug. by Marco Poletti · 6 years ago
  28. 93c195c Workaround a regression in the MSVC 2017 15.5 compiler. by Marco Poletti · 6 years ago
  29. 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 · 6 years ago
  30. dad7ba8 Try to workaround some Visual Studio ICEs that appeared in the last Appveyor build. by Marco Poletti · 6 years ago
  31. 59fe3a2 A few more fixes to make Fruit work under MSVC 2015 and 2017 in Appveyor. by Marco Poletti · 7 years ago
  32. 680c75a Another attempt to make Fruit work with MSVC (2015 and 2017) in Appveyor. by Marco Poletti · 7 years ago
  33. 94e1d12 Fix compilation under MSVC 2017. by Marco Poletti · 7 years ago
  34. 23a4495 Fix compilation on Linux. by Marco Poletti · 7 years ago
  35. 7cdc510 Added support for MSVC 14 (VS2015) by Clayton Lemons · 7 years ago
  36. 4d26bed Report a compile time error when an class must have a virtual destructor but doesn't have one. by Marco Poletti · 7 years ago
  37. bdb151a Fix a bug in FixedSizeVector where std::allocator::deallocate() was called with an incorrect size after swapping vectors. When using a malloc-based std:allocator this was not an issue (since free doesn't take the size as a parameter), but it can cause problems with other STL implementations. by Marco Poletti · 7 years ago
  38. aa95150 Only call std::allocator::deallocate() in FixedSizeVector for non-empty vectors. When using a malloc-based std:allocator this was not an issue (since free(0) is a no-op), but it can cause problems with other STL implementations. by Marco Poletti · 7 years ago
  39. 735f047 Various improvements to the Doxygen documentation on Fruit classes and their public methods. by Marco Poletti · 7 years ago
  40. 872de45 Add an #include to fix a compile error when fruit/normalized_component.h is included on its own. by Marco Poletti · 7 years ago
  41. 666ed2a Make install() de-duplication and component replacements work across NormalizedComponent+Component. by Marco Poletti · 7 years ago
  42. 6ae9208 Change Injector's and NormalizedComponent's constructors to take a component function + args (like the new PartialComponent::install) instead of taking a Component<> directly. by Marco Poletti · 7 years ago
  43. 3a92133 Allow implicit conversions in the arguments passed to PartialComponent's install() and replace().with() methods. by Marco Poletti · 7 years ago
  44. 95cb811 Allow bind<I,C> when C was bound as a constant (and I is only needed as a constant). by Marco Poletti · 7 years ago
  45. 418e9bf Allow binding const references in bindInstance. by Marco Poletti · 7 years ago
  46. 0d55521 Remove Injector::unsafeGet. Also change Fruit tests to use a Fruit-internal version of that (that returns a const pointer, in preparation for supporting const-only bindings). by Marco Poletti · 7 years ago
  47. 6da3f8d Workaround a (different) MSVC bug that was causing compilation failures. by Marco Poletti · 7 years ago
  48. 9719f73 Add another workaround for the MSVC bug that affects some metafunctions. by Marco Poletti · 7 years ago
  49. 3016ee2 Workaround a MSVC bug that was causing compile errors in the ConvertComponent metafunction. by Marco Poletti · 7 years ago
  50. 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
  51. b95efcc Report better errors when attempting to bind/inject a type that can't be bound/injected. Also add more thorough tests for these cases, in preparation for supporting const bindings. by Marco Poletti · 7 years ago
  52. 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
  53. 508af7c Remove Component's copy constructor, conversion operator and install method. by Marco Poletti · 7 years ago
  54. eac5509 Document that replacements can be stacked and add tests for this case. by Marco Poletti · 7 years ago
  55. f810408 Remove workarounds for GCC 4.8.x bugs now that it's no longer supported. by Marco Poletti · 7 years ago
  56. 2012b39 Fix a memory leak introduced with the replacement component feature. This was detected by Asan and Valgrind. by Marco Poletti · 7 years ago
  57. a5e1db0 Fix a compile error encountered when building Fruit without boost. by Marco Poletti · 7 years ago
  58. 5d549fa Remove a couple of unnecessary semicolons that were causing compilation warnings. by Marco Poletti · 7 years ago
  59. 102a707 Add a new PartialComponent feature: component replacement. by Marco Poletti · 7 years ago
  60. 46b3d22 Add LCOV_* comments to suppress line/branch coverage for unreachable lines/branches. by Marco Poletti · 7 years ago
  61. 629be9d Delete dead code (found in the coerage report). by Marco Poletti · 7 years ago
  62. a0228a2 Workaround a GCC 4.8 bug causing FixedSizeAllocator's move-assignment operator to misbehave (but only in release mode). This issue was caught by Valgrind. by Marco Poletti · 7 years ago
  63. 4511c4e Remove a few superfluous FRUIT_UNREACHABLEs. These were causing warning C4702 with MSVC (and that was treated as an error due to /WX). by Marco Poletti · 7 years ago
  64. e2b3cc9 Use FRUIT_UNREACHABLE in places where we report an irrecoverable error. by Marco Poletti · 7 years ago
  65. 3486f49 Introduce a FRUIT_UNREACHABLE macro and use it instead of FruitAssert(false) in places that are known to be unreachable, to help the compiler optimize out those branches. by Marco Poletti · 7 years ago
  66. f862062 Avoid a Clang warning when using FruitStaticAssert at class/struct level in release mode. by Marco Poletti · 7 years ago
  67. 14db200 Fix a Windows-only compile error caused by a type mismatch. by Marco Poletti · 7 years ago
  68. f966c50 Fix a couple of compile warnings (that were considered as errors due to -Werror). by Marco Poletti · 7 years ago
  69. dcf7e03 Fix a debug-only compile error. by Marco Poletti · 7 years ago
  70. 76f2649 Don't calculate BindingCompressionInfoMap when constructing an injector directly from a Component. We'll never need to undo binding compression in that case. by Marco Poletti · 7 years ago
  71. fc8a232 Always inline MemoryPool::allocate. In the common case where n==1, when this method is inlined the compiler can significantly simplify the code. by Marco Poletti · 7 years ago
  72. ac054f0 Avoid excessive re-sizing in MemoryPool. This should (marginally) improve performance. by Marco Poletti · 7 years ago
  73. 3e12b3d Use arena allocation for BindingCompressionInfoMap too. by Marco Poletti · 7 years ago
  74. a8c2964 Use arena allocation for temporary collections created when normalizing a component and when initializing an injector, to improve performance. by Marco Poletti · 7 years ago
  75. 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
  76. 69e5748 Fix 2 memory leaks when dealing with lazy component with arguments. These were detected by Valgrind and ASan during CI tests. by Marco Poletti · 7 years ago
  77. 589fdbc Fix the order of multibindings (that was knowingly broken in commit c563512e), and add tests to make sure all corner-cases wrt lazy components are covered. by Marco Poletti · 7 years ago
  78. d757cd1 Move the 'NormalizedComponent + Component' merging logic from injector_storage.cpp to binding_normalization.*. Also refactor the code to avoid a double pass on the entries array when a single pass is enough. by Marco Poletti · 7 years ago
  79. 8ff8ec6 No longer collect binding compressions when they're not needed (i.e. when constructing an Injector from a NormalizedComponent + a Component). by Marco Poletti · 7 years ago
  80. 8f9720e Simplify/optimize binding splitting: now we no longer need the intermediate vectors for bindings and compressed bindings. by Marco Poletti · 7 years ago
  81. 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
  82. f2bec68 Use a FixedSizeVector instead of an std::vector in ComponentStorage, so that we'll do at most 1 allocation per ComponentStorage (and we don't need the size checks on push_back anymore). by Marco Poletti · 7 years ago
  83. 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
  84. c3334a5 More class moves/renames in preparation for the upcoming change in the representation of bindings. by Marco Poletti · 7 years ago
  85. 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
  86. 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
  87. 6ea962d Remove superfluous param names in defaulted constructors/methods. For some reason, Apple Clang considers the first (at least) as an unused parameter and emits a warning about that. by Marco Poletti · 7 years ago
  88. c6fea76 Implement de-duping and loop checking for the new-style install() method. by Marco Poletti · 7 years ago
  89. 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
  90. 3e21dcf Make the Fruit deprecated marker work in Visual Studio. by Marco Poletti · 7 years ago
  91. 11a9561 Update the example code and doxygen comments to use the new-style install() methods. by Marco Poletti · 7 years ago
  92. c9e7a0b Mark the old PartialComponent::install() method as deprecated. by Marco Poletti · 7 years ago
  93. a636283 Make HasDuplicatesHelper compile on MSVC again. by Marco Poletti · 7 years ago
  94. f67a5bc Extract a 'constant' in HasDuplicates, trying to help MSVC parse that code (while GCC and Clang can parse it just fine already). by Marco Poletti · 7 years ago
  95. 55b5410 Add a wrapping Id<> in HasDuplicates, to (try to) fix compilation in Visual Studio. by Marco Poletti · 7 years ago
  96. 5de0d4f Simplify the new install() API. by Marco Poletti · 7 years ago
  97. 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
  98. fef4823 Use a SumAll metafunction instead of a staticSum constexpr function, since constexpr functions are slower in GCC (at least in GCC 6). by Marco Poletti · 7 years ago
  99. 0a1436f Remove the constexpr-based staticOr, use the StaticOr metafunction instead. staticOr is significantly slower under GCC. by Marco Poletti · 7 years ago
  100. fdc7990 When injecting shared_ptr<>s dependencies for an object, first inject (pointers to) all dependencies and then construct all the shared_ptr<>s at the end, before calling the constructor/provider. This helps the optimizer optimize out increments/decrements/checks of the shared_ptr<> reference count (this is useful at least for GCC 6; e.g. Clang 4 already optimized those out without this re-organization of the code). by Marco Poletti · 7 years ago