Update the example code and doxygen comments to use the new-style install() methods.
diff --git a/examples/annotated_injection/car.cpp b/examples/annotated_injection/car.cpp
index ad7595b..53d4ce1 100644
--- a/examples/annotated_injection/car.cpp
+++ b/examples/annotated_injection/car.cpp
@@ -39,10 +39,9 @@
}
};
-const fruit::Component<Car>& getCarComponent() {
- static const fruit::Component<Car> comp = fruit::createComponent()
+fruit::Component<Car> getCarComponent() {
+ return fruit::createComponent()
.bind<Car, CarImpl>()
- .install(getMainBrakeComponent())
- .install(getEmergencyBrakeComponent());
- return comp;
+ .install(getMainBrakeComponent)
+ .install(getEmergencyBrakeComponent);
}
diff --git a/examples/annotated_injection/car.h b/examples/annotated_injection/car.h
index f0d66ac..45a9662 100644
--- a/examples/annotated_injection/car.h
+++ b/examples/annotated_injection/car.h
@@ -24,6 +24,6 @@
virtual void brake() = 0;
};
-const fruit::Component<Car>& getCarComponent();
+fruit::Component<Car> getCarComponent();
#endif // CAR_H
diff --git a/examples/annotated_injection/emergency_brake.cpp b/examples/annotated_injection/emergency_brake.cpp
index 977e921..8fe69aa 100644
--- a/examples/annotated_injection/emergency_brake.cpp
+++ b/examples/annotated_injection/emergency_brake.cpp
@@ -25,8 +25,7 @@
}
};
-const fruit::Component<fruit::Annotated<EmergencyBrake, Brake>>& getEmergencyBrakeComponent() {
- static const fruit::Component<fruit::Annotated<EmergencyBrake, Brake>> comp = fruit::createComponent()
+fruit::Component<fruit::Annotated<EmergencyBrake, Brake>> getEmergencyBrakeComponent() {
+ return fruit::createComponent()
.bind<fruit::Annotated<EmergencyBrake, Brake>, EmergencyBrakeImpl>();
- return comp;
}
diff --git a/examples/annotated_injection/emergency_brake.h b/examples/annotated_injection/emergency_brake.h
index 7400d2e..335d9f1 100644
--- a/examples/annotated_injection/emergency_brake.h
+++ b/examples/annotated_injection/emergency_brake.h
@@ -25,6 +25,6 @@
// This marks a the Brake instance that represents the main brake.
struct EmergencyBrake {};
-const fruit::Component<fruit::Annotated<EmergencyBrake, Brake>>& getEmergencyBrakeComponent();
+fruit::Component<fruit::Annotated<EmergencyBrake, Brake>> getEmergencyBrakeComponent();
#endif // EMERGENCY_BRAKE_H
diff --git a/examples/annotated_injection/main_brake.cpp b/examples/annotated_injection/main_brake.cpp
index 1bd62cb..9383305 100644
--- a/examples/annotated_injection/main_brake.cpp
+++ b/examples/annotated_injection/main_brake.cpp
@@ -25,8 +25,7 @@
}
};
-const fruit::Component<fruit::Annotated<MainBrake, Brake>>& getMainBrakeComponent() {
- static const fruit::Component<fruit::Annotated<MainBrake, Brake>> comp = fruit::createComponent()
+fruit::Component<fruit::Annotated<MainBrake, Brake>> getMainBrakeComponent() {
+ return fruit::createComponent()
.bind<fruit::Annotated<MainBrake, Brake>, MainBrakeImpl>();
- return comp;
}
diff --git a/examples/annotated_injection/main_brake.h b/examples/annotated_injection/main_brake.h
index ee8beda..6b96f10 100644
--- a/examples/annotated_injection/main_brake.h
+++ b/examples/annotated_injection/main_brake.h
@@ -25,6 +25,6 @@
// This marks a the Brake instance that represents the main brake.
struct MainBrake {};
-const fruit::Component<fruit::Annotated<MainBrake, Brake>>& getMainBrakeComponent();
+fruit::Component<fruit::Annotated<MainBrake, Brake>> getMainBrakeComponent();
#endif // MAIN_BRAKE_H
diff --git a/examples/hello_world/main.cpp b/examples/hello_world/main.cpp
index b31ca8e..de1ac91 100644
--- a/examples/hello_world/main.cpp
+++ b/examples/hello_world/main.cpp
@@ -42,11 +42,10 @@
}
};
-const Component<Greeter>& getGreeterComponent() {
- static const Component<Greeter> comp = fruit::createComponent()
+Component<Greeter> getGreeterComponent() {
+ return fruit::createComponent()
.bind<Writer, StdoutWriter>()
.bind<Greeter, GreeterImpl>();
- return comp;
}
int main() {
diff --git a/examples/multibindings/main.cpp b/examples/multibindings/main.cpp
index 578f89c..2621d09 100644
--- a/examples/multibindings/main.cpp
+++ b/examples/multibindings/main.cpp
@@ -63,13 +63,12 @@
}
};
-const Component<>& getListenersComponent() {
+Component<> getListenersComponent() {
// Here they are in the same component to keep it simple, but Fruit collects all multibindings in installed components.
- static const Component<> comp = fruit::createComponent()
+ return fruit::createComponent()
.bind<Writer, StdoutWriter>()
.addMultibinding<Listener, Listener1>()
.addMultibinding<Listener, Listener2>();
- return comp;
}
int main() {
diff --git a/examples/scaling_doubles/multiplier.cpp b/examples/scaling_doubles/multiplier.cpp
index 6b063ad..24b2d2a 100644
--- a/examples/scaling_doubles/multiplier.cpp
+++ b/examples/scaling_doubles/multiplier.cpp
@@ -23,9 +23,8 @@
}
};
-const fruit::Component<Multiplier>& getMultiplierComponent() {
- static const fruit::Component<Multiplier> comp = fruit::createComponent()
+fruit::Component<Multiplier> getMultiplierComponent() {
+ return fruit::createComponent()
.bind<Multiplier, MultiplierImpl>()
.registerConstructor<MultiplierImpl()>();
- return comp;
}
diff --git a/examples/scaling_doubles/multiplier.h b/examples/scaling_doubles/multiplier.h
index a312e4f..9baeb28 100644
--- a/examples/scaling_doubles/multiplier.h
+++ b/examples/scaling_doubles/multiplier.h
@@ -25,6 +25,6 @@
virtual double multiply(double x, double y) = 0;
};
-const fruit::Component<Multiplier>& getMultiplierComponent();
+fruit::Component<Multiplier> getMultiplierComponent();
#endif // MULTIPLIER_H
diff --git a/examples/scaling_doubles/scaler.cpp b/examples/scaling_doubles/scaler.cpp
index bd2863f..da27794 100644
--- a/examples/scaling_doubles/scaler.cpp
+++ b/examples/scaling_doubles/scaler.cpp
@@ -37,9 +37,8 @@
};
-const Component<ScalerFactory>& getScalerComponent() {
- static const Component<ScalerFactory> comp = createComponent()
+Component<ScalerFactory> getScalerComponent() {
+ return createComponent()
.bind<Scaler, ScalerImpl>()
- .install(getMultiplierComponent());
- return comp;
+ .install(getMultiplierComponent);
}
diff --git a/examples/scaling_doubles/scaler.h b/examples/scaling_doubles/scaler.h
index 5261a26..036b8e6 100644
--- a/examples/scaling_doubles/scaler.h
+++ b/examples/scaling_doubles/scaler.h
@@ -26,6 +26,6 @@
using ScalerFactory = std::function<std::unique_ptr<Scaler>(double)>;
-const fruit::Component<ScalerFactory>& getScalerComponent();
+fruit::Component<ScalerFactory> getScalerComponent();
#endif // SCALER_H
diff --git a/examples/server/bar_handler.cpp b/examples/server/bar_handler.cpp
index 4c743d3..0644492 100644
--- a/examples/server/bar_handler.cpp
+++ b/examples/server/bar_handler.cpp
@@ -36,9 +36,8 @@
}
};
-const Component<Required<Request, ServerContext>, BarHandler>& getBarHandlerComponent() {
- static const Component<Required<Request, ServerContext>, BarHandler> comp = fruit::createComponent()
+Component<Required<Request, ServerContext>, BarHandler> getBarHandlerComponent() {
+ return fruit::createComponent()
.bind<BarHandler, BarHandlerImpl>();
- return comp;
}
diff --git a/examples/server/bar_handler.h b/examples/server/bar_handler.h
index a1220d8..e86ec58 100644
--- a/examples/server/bar_handler.h
+++ b/examples/server/bar_handler.h
@@ -29,6 +29,6 @@
virtual void handleRequest() = 0;
};
-const fruit::Component<fruit::Required<Request, ServerContext>, BarHandler>& getBarHandlerComponent();
+fruit::Component<fruit::Required<Request, ServerContext>, BarHandler> getBarHandlerComponent();
#endif // BAR_HANDLER_H
diff --git a/examples/server/foo_handler.cpp b/examples/server/foo_handler.cpp
index cff388a..e2aabb3 100644
--- a/examples/server/foo_handler.cpp
+++ b/examples/server/foo_handler.cpp
@@ -36,9 +36,8 @@
}
};
-const Component<Required<Request, ServerContext>, FooHandler>& getFooHandlerComponent() {
- static const Component<Required<Request, ServerContext>, FooHandler> comp = fruit::createComponent()
+Component<Required<Request, ServerContext>, FooHandler> getFooHandlerComponent() {
+ return fruit::createComponent()
.bind<FooHandler, FooHandlerImpl>();
- return comp;
}
diff --git a/examples/server/foo_handler.h b/examples/server/foo_handler.h
index 0fbbc53..6d85bdd 100644
--- a/examples/server/foo_handler.h
+++ b/examples/server/foo_handler.h
@@ -29,6 +29,6 @@
virtual void handleRequest() = 0;
};
-const fruit::Component<fruit::Required<Request, ServerContext>, FooHandler>& getFooHandlerComponent();
+fruit::Component<fruit::Required<Request, ServerContext>, FooHandler> getFooHandlerComponent();
#endif // FOO_HANDLER_H
diff --git a/examples/server/main.cpp b/examples/server/main.cpp
index c6e637c..633ab2e 100644
--- a/examples/server/main.cpp
+++ b/examples/server/main.cpp
@@ -25,7 +25,7 @@
Injector<Server> injector(getServerComponent());
Server* server(injector);
- server->run(getRequestDispatcherComponent());
+ server->run(getRequestDispatcherComponent);
return 0;
}
diff --git a/examples/server/request_dispatcher.cpp b/examples/server/request_dispatcher.cpp
index 061bf88..2901a3b 100644
--- a/examples/server/request_dispatcher.cpp
+++ b/examples/server/request_dispatcher.cpp
@@ -58,10 +58,9 @@
}
};
-const Component<Required<Request, ServerContext>, RequestDispatcher>& getRequestDispatcherComponent() {
- static const Component<Required<Request, ServerContext>, RequestDispatcher> comp = createComponent()
+Component<Required<Request, ServerContext>, RequestDispatcher> getRequestDispatcherComponent() {
+ return createComponent()
.bind<RequestDispatcher, RequestDispatcherImpl>()
- .install(getFooHandlerComponent())
- .install(getBarHandlerComponent());
- return comp;
+ .install(getFooHandlerComponent)
+ .install(getBarHandlerComponent);
}
diff --git a/examples/server/request_dispatcher.h b/examples/server/request_dispatcher.h
index ecfe936..7cb0214 100644
--- a/examples/server/request_dispatcher.h
+++ b/examples/server/request_dispatcher.h
@@ -29,6 +29,6 @@
virtual void handleRequest() = 0;
};
-const fruit::Component<fruit::Required<Request, ServerContext>, RequestDispatcher>& getRequestDispatcherComponent();
+fruit::Component<fruit::Required<Request, ServerContext>, RequestDispatcher> getRequestDispatcherComponent();
#endif // REQUEST_DISPATCHER_H
diff --git a/examples/server/server.cpp b/examples/server/server.cpp
index 4edc3f6..8702492 100644
--- a/examples/server/server.cpp
+++ b/examples/server/server.cpp
@@ -37,13 +37,13 @@
}
}
- void run(Component<Required<Request, ServerContext>, RequestDispatcher> requestDispatcherComponent) override {
+ void run(Component<Required<Request, ServerContext>, RequestDispatcher>(*getRequestDispatcherComponent)()) override {
ServerContext serverContext;
serverContext.startupTime = getTime();
const NormalizedComponent<Required<Request>, RequestDispatcher> requestDispatcherNormalizedComponent(
createComponent()
- .install(std::move(requestDispatcherComponent))
+ .install(getRequestDispatcherComponent)
.bindInstance(serverContext));
cerr << "Server started." << endl;
@@ -90,8 +90,7 @@
}
};
-const fruit::Component<Server>& getServerComponent() {
- static const fruit::Component<Server> comp = fruit::createComponent()
+fruit::Component<Server> getServerComponent() {
+ return fruit::createComponent()
.bind<Server, ServerImpl>();
- return comp;
}
diff --git a/examples/server/server.h b/examples/server/server.h
index 2ecee62..be3ae2b 100644
--- a/examples/server/server.h
+++ b/examples/server/server.h
@@ -26,9 +26,9 @@
class Server {
public:
- virtual void run(fruit::Component<fruit::Required<Request, ServerContext>, RequestDispatcher> requestDispatcherComponent) = 0;
+ virtual void run(fruit::Component<fruit::Required<Request, ServerContext>, RequestDispatcher>(*getrequestDispatcherComponent)()) = 0;
};
-const fruit::Component<Server>& getServerComponent();
+fruit::Component<Server> getServerComponent();
#endif // SERVER_H
diff --git a/examples/simple_injection/checked_adder.cpp b/examples/simple_injection/checked_adder.cpp
index f184aca..ff50d56 100644
--- a/examples/simple_injection/checked_adder.cpp
+++ b/examples/simple_injection/checked_adder.cpp
@@ -70,8 +70,7 @@
}
};
-const fruit::Component<Adder>& getCheckedAdderComponent() {
- static const fruit::Component<Adder> comp = fruit::createComponent()
+fruit::Component<Adder> getCheckedAdderComponent() {
+ return fruit::createComponent()
.bind<Adder, CheckedAdder>();
- return comp;
}
diff --git a/examples/simple_injection/checked_adder.h b/examples/simple_injection/checked_adder.h
index 240a898..c18ed0b 100644
--- a/examples/simple_injection/checked_adder.h
+++ b/examples/simple_injection/checked_adder.h
@@ -20,6 +20,6 @@
#include <fruit/fruit.h>
#include "adder.h"
-const fruit::Component<Adder>& getCheckedAdderComponent();
+fruit::Component<Adder> getCheckedAdderComponent();
#endif // CHECKED_ADDER_H
diff --git a/examples/simple_injection/checked_incrementer.cpp b/examples/simple_injection/checked_incrementer.cpp
index 647715d..7f27a35 100644
--- a/examples/simple_injection/checked_incrementer.cpp
+++ b/examples/simple_injection/checked_incrementer.cpp
@@ -19,9 +19,8 @@
#include "incrementer_impl.h"
#include "checked_adder.h"
-const fruit::Component<Incrementer>& getCheckedIncrementerComponent() {
- static const fruit::Component<Incrementer> comp = fruit::createComponent()
- .install(getIncrementerImplComponent())
- .install(getCheckedAdderComponent());
- return comp;
+fruit::Component<Incrementer> getCheckedIncrementerComponent() {
+ return fruit::createComponent()
+ .install(getIncrementerImplComponent)
+ .install(getCheckedAdderComponent);
}
diff --git a/examples/simple_injection/checked_incrementer.h b/examples/simple_injection/checked_incrementer.h
index 6097ce2..3efccdd 100644
--- a/examples/simple_injection/checked_incrementer.h
+++ b/examples/simple_injection/checked_incrementer.h
@@ -20,6 +20,6 @@
#include <fruit/fruit.h>
#include "incrementer.h"
-const fruit::Component<Incrementer>& getCheckedIncrementerComponent();
+fruit::Component<Incrementer> getCheckedIncrementerComponent();
#endif // CHECKED_INCREMENTER_H
diff --git a/examples/simple_injection/incrementer_component.cpp b/examples/simple_injection/incrementer_component.cpp
index 4939145..603f3fb 100644
--- a/examples/simple_injection/incrementer_component.cpp
+++ b/examples/simple_injection/incrementer_component.cpp
@@ -19,7 +19,7 @@
#include "simple_incrementer.h"
#include "checked_incrementer.h"
-const fruit::Component<Incrementer>& getIncrementerComponent(bool checked) {
+fruit::Component<Incrementer> getIncrementerComponent(bool checked) {
if (checked)
return getCheckedIncrementerComponent();
else
diff --git a/examples/simple_injection/incrementer_component.h b/examples/simple_injection/incrementer_component.h
index b5d9580..be1741d 100644
--- a/examples/simple_injection/incrementer_component.h
+++ b/examples/simple_injection/incrementer_component.h
@@ -21,6 +21,6 @@
#include <fruit/fruit.h>
-const fruit::Component<Incrementer>& getIncrementerComponent(bool checked);
+fruit::Component<Incrementer> getIncrementerComponent(bool checked);
#endif // INCREMENTER_COMPONENT_H
diff --git a/examples/simple_injection/incrementer_impl.cpp b/examples/simple_injection/incrementer_impl.cpp
index a4ccf8b..712a525 100644
--- a/examples/simple_injection/incrementer_impl.cpp
+++ b/examples/simple_injection/incrementer_impl.cpp
@@ -30,8 +30,7 @@
}
};
-const fruit::Component<fruit::Required<Adder>, Incrementer>& getIncrementerImplComponent() {
- static const fruit::Component<fruit::Required<Adder>, Incrementer> comp = fruit::createComponent()
+fruit::Component<fruit::Required<Adder>, Incrementer> getIncrementerImplComponent() {
+ return fruit::createComponent()
.bind<Incrementer, IncrementerImpl>();
- return comp;
}
diff --git a/examples/simple_injection/incrementer_impl.h b/examples/simple_injection/incrementer_impl.h
index fc2aee1..71ee82d 100644
--- a/examples/simple_injection/incrementer_impl.h
+++ b/examples/simple_injection/incrementer_impl.h
@@ -21,6 +21,6 @@
#include "incrementer.h"
#include "adder.h"
-const fruit::Component<fruit::Required<Adder>, Incrementer>& getIncrementerImplComponent();
+fruit::Component<fruit::Required<Adder>, Incrementer> getIncrementerImplComponent();
#endif // INCREMENTER_IMPL_H
diff --git a/examples/simple_injection/simple_adder.cpp b/examples/simple_injection/simple_adder.cpp
index ccb54d6..5cc4d9f 100644
--- a/examples/simple_injection/simple_adder.cpp
+++ b/examples/simple_injection/simple_adder.cpp
@@ -25,8 +25,7 @@
}
};
-const fruit::Component<Adder>& getSimpleAdderComponent() {
- static const fruit::Component<Adder> comp = fruit::createComponent()
+fruit::Component<Adder> getSimpleAdderComponent() {
+ return fruit::createComponent()
.bind<Adder, SimpleAdder>();
- return comp;
}
diff --git a/examples/simple_injection/simple_adder.h b/examples/simple_injection/simple_adder.h
index 3f779f8..564b8f0 100644
--- a/examples/simple_injection/simple_adder.h
+++ b/examples/simple_injection/simple_adder.h
@@ -20,6 +20,6 @@
#include <fruit/fruit.h>
#include "adder.h"
-const fruit::Component<Adder>& getSimpleAdderComponent();
+fruit::Component<Adder> getSimpleAdderComponent();
#endif // SIMPLE_ADDER_H
diff --git a/examples/simple_injection/simple_incrementer.cpp b/examples/simple_injection/simple_incrementer.cpp
index e27f199..9a0b869 100644
--- a/examples/simple_injection/simple_incrementer.cpp
+++ b/examples/simple_injection/simple_incrementer.cpp
@@ -19,9 +19,8 @@
#include "incrementer_impl.h"
#include "simple_adder.h"
-const fruit::Component<Incrementer>& getSimpleIncrementerComponent() {
- static const fruit::Component<Incrementer> comp = fruit::createComponent()
- .install(getIncrementerImplComponent())
- .install(getSimpleAdderComponent());
- return comp;
+fruit::Component<Incrementer> getSimpleIncrementerComponent() {
+ return fruit::createComponent()
+ .install(getIncrementerImplComponent)
+ .install(getSimpleAdderComponent);
}
diff --git a/examples/simple_injection/simple_incrementer.h b/examples/simple_injection/simple_incrementer.h
index 47481d5..6ff18ce 100644
--- a/examples/simple_injection/simple_incrementer.h
+++ b/examples/simple_injection/simple_incrementer.h
@@ -20,6 +20,6 @@
#include <fruit/fruit.h>
#include "incrementer.h"
-const fruit::Component<Incrementer>& getSimpleIncrementerComponent();
+fruit::Component<Incrementer> getSimpleIncrementerComponent();
#endif // SIMPLE_INCREMENTER_H
diff --git a/extras/benchmark/compile_time_benchmark.cpp b/extras/benchmark/compile_time_benchmark.cpp
index 951e957..92f55d7 100644
--- a/extras/benchmark/compile_time_benchmark.cpp
+++ b/extras/benchmark/compile_time_benchmark.cpp
@@ -126,7 +126,7 @@
struct Z##N { \
}; \
\
-const Component<Required<Y##N>, Z##N>& getZ##N##Component(); \
+Component<Required<Y##N>, Z##N> getZ##N##Component(); \
#define REQUIREMENTS(N) \
C##N,
@@ -137,14 +137,13 @@
#define BINDINGS(N) \
.bind<I##N, X##N>() \
.bindInstance(b##N) \
- .install(getZ##N##Component()) \
+ .install(getZ##N##Component) \
.registerProvider([](){return Y##N();})
EVAL(REPEAT(DEFINITIONS))
-const Component<Required<EVAL(REPEAT(REQUIREMENTS)) int>>& getComponent(EVAL(REPEAT(PARAMETERS)) int) {
- static const Component<Required<EVAL(REPEAT(REQUIREMENTS)) int>> comp = createComponent()
+Component<Required<EVAL(REPEAT(REQUIREMENTS)) int>> getComponent(EVAL(REPEAT(PARAMETERS)) int) {
+ return createComponent()
EVAL(REPEAT(BINDINGS))
;
- return comp;
}
diff --git a/include/fruit/component.h b/include/fruit/component.h
index 9e35907..5f37262 100644
--- a/include/fruit/component.h
+++ b/include/fruit/component.h
@@ -104,8 +104,8 @@
*
* const fruit::Component<Foo>& getFooComponent() {
* static const fruit::Component<Foo> comp = fruit::createComponent()
- * .install(getComponent1())
- * .install(getComponent2())
+ * .install(getComponent1)
+ * .install(getComponent2)
* .bind<Foo, FooImpl>();
* return comp;
* }
@@ -141,8 +141,8 @@
*
* fruit::Component<Foo> getFooComponent() {
* return fruit::createComponent()
- * .install(getComponent1())
- * .install(getComponent2())
+ * .install(getComponent1)
+ * .install(getComponent2)
* .bind<Foo, FooImpl>();
* }
*
@@ -478,8 +478,8 @@
* Example usage:
*
* createComponent()
- * .install(getComponent1())
- * .install(getComponent2())
+ * .install(getComponent1)
+ * .install(getComponent2)
*
* As in the example, the template parameters will be inferred by the compiler, it's not necessary to specify them explicitly.
*/