<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to FAQ</title><link>https://sourceforge.net/p/wallaroolib/wiki/FAQ/</link><description>Recent changes to FAQ</description><atom:link href="https://sourceforge.net/p/wallaroolib/wiki/FAQ/feed" rel="self"/><language>en</language><lastBuildDate>Fri, 10 Apr 2015 18:55:59 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/wallaroolib/wiki/FAQ/feed" rel="self" type="application/rss+xml"/><item><title>FAQ modified by Daniele Pallastrelli</title><link>https://sourceforge.net/p/wallaroolib/wiki/FAQ/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -205,4 +205,4 @@

 ## I'd like to thank you for the great library you wrote :-)

-Great. I'd like you to star my project and to use this  button: it's free and it will give me a big incentive to improve wallaroo. In addition, you can also [let me know](mailto:wallaroolibrary@gmail.com) you're using wallaroo and tell me how can I improve it. 
+Great. I'd like you to star my project: it's free and it will give me a big incentive to improve wallaroo. In addition, you can also [let me know](mailto:wallaroolibrary@gmail.com) you're using wallaroo and tell me how can I improve it. 
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Daniele Pallastrelli</dc:creator><pubDate>Fri, 10 Apr 2015 18:55:59 -0000</pubDate><guid>https://sourceforge.netca7587b543246832de2a0dc063e35f16a669d942</guid></item><item><title>FAQ modified by Anonymous</title><link>https://sourceforge.net/p/wallaroolib/wiki/FAQ/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="frequently-asked-questions"&gt;Frequently Asked Questions&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Frequently Asked Questions&lt;ul&gt;
&lt;li&gt;What's Wallaroo?&lt;/li&gt;
&lt;li&gt;Is it multiplatform?&lt;/li&gt;
&lt;li&gt;Then, why do you provide the .zip and .tgz version in the download page?&lt;/li&gt;
&lt;li&gt;Do I need to compile the library?&lt;/li&gt;
&lt;li&gt;Can I use Wallaroo into an embedded system?&lt;/li&gt;
&lt;li&gt;Does Wallaroo use C++11?&lt;/li&gt;
&lt;li&gt;Do I need boost to use wallaroo?&lt;/li&gt;
&lt;li&gt;How can I tell wallaroo not to use boost?&lt;/li&gt;
&lt;li&gt;I have some trouble with constructor parameters&lt;/li&gt;
&lt;li&gt;Can I register template classes?&lt;/li&gt;
&lt;li&gt;I put my classes in shared libraries, and I get a WrongType exception!&lt;/li&gt;
&lt;li&gt;If I put my classes in static libraries, Wallaroo does not find them!&lt;/li&gt;
&lt;li&gt;Which compilers are supported?&lt;/li&gt;
&lt;li&gt;Can I use wallaroo in a commercial product?&lt;/li&gt;
&lt;li&gt;Does Wallaroo need custom preprocessors / code generators?&lt;/li&gt;
&lt;li&gt;Is Wallaroo intrusive?&lt;/li&gt;
&lt;li&gt;Can I contribute to the project?&lt;/li&gt;
&lt;li&gt;Why is it called "Wallaroo"?&lt;/li&gt;
&lt;li&gt;I'd like to thank you for the great library you wrote :-)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="whats-wallaroo"&gt;What's Wallaroo?&lt;/h2&gt;
&lt;p&gt;Wallaroo is basically a &lt;strong&gt;dependency injection&lt;/strong&gt; library for C++. It provides a way to build and wire the objects you need in your application using strings and/or loading a configuration file. With Wallaroo, you get rid of &lt;code&gt;new&lt;/code&gt; constructs. In this way, the name of the concrete classes you want to use are no more carved in the stone (i.e. in your code). Your classes can be created starting from a specifications of some kind (configuration files, DBs, environment variables, or a mix of them). &lt;/p&gt;
&lt;h2 id="is-it-multiplatform"&gt;Is it multiplatform?&lt;/h2&gt;
&lt;p&gt;Of course it is. Wallaroo is implemented by using standard C++ and (optionally) boost libraries and does not make assumptions on the underlying system. Thus, you can use it on every platform providing it has a decent C++ compiler. &lt;/p&gt;
&lt;h2 id="then-why-do-you-provide-the-zip-and-tgz-version-in-the-download-page"&gt;Then, why do you provide the .zip and .tgz version in the download page?&lt;/h2&gt;
&lt;p&gt;Wallaroo is delivered in a ZIP file for Windows users and in a compressed TAR file (.tgz) for Unix/Linux users. Both archives contain the same files, the only difference is that all text files in the ZIP files have line endings suitable for Windows (CR-LF), while the text files in the TAR file have line endings suitable for Unix/Linux (LF only). &lt;/p&gt;
&lt;h2 id="do-i-need-to-compile-the-library"&gt;Do I need to compile the library?&lt;/h2&gt;
&lt;p&gt;No, wallaroo is a header-only library, so you don't need to compile it. &lt;/p&gt;
&lt;h2 id="can-i-use-wallaroo-into-an-embedded-system"&gt;Can I use Wallaroo into an embedded system?&lt;/h2&gt;
&lt;p&gt;Of course. I'm using it in several embedded projects, and it works great. &lt;/p&gt;
&lt;p&gt;I also used Wallaroo with the cross-compiler for the ppc 6xx architecture. &lt;/p&gt;
&lt;h2 id="does-wallaroo-use-c11"&gt;Does Wallaroo use C++11?&lt;/h2&gt;
&lt;p&gt;Of course. Wallaroo can use some of the new C++11 features instead of boost libraries. &lt;/p&gt;
&lt;h2 id="do-i-need-boost-to-use-wallaroo"&gt;Do I need boost to use wallaroo?&lt;/h2&gt;
&lt;p&gt;Short answer: no. &lt;/p&gt;
&lt;p&gt;Long answer: it depends. To get rid of boost libraries, your compiler must support C++0x features (basically smart pointers) and you must not use &lt;code&gt;XmlConfiguration&lt;/code&gt; nor &lt;code&gt;JsonConfiguration&lt;/code&gt; classes. &lt;/p&gt;
&lt;h2 id="how-can-i-tell-wallaroo-not-to-use-boost"&gt;How can I tell wallaroo not to use boost?&lt;/h2&gt;
&lt;p&gt;Wallaroo should automatically detect if your compiler is C++0x compliant. If it is, wallaroo interface will use std smart pointers (e.g.: &lt;code&gt;std::shared_ptr&lt;/code&gt;) instead of boost smart pointers (e.g.: &lt;code&gt;boost::shared_ptr&lt;/code&gt;). &lt;/p&gt;
&lt;p&gt;By now, wallaroo automatically detects only gcc and visual C++ versions (if you're working with another compiler, please &lt;a class="" href="mailto:wallaroolibrary@gmail.com"&gt;contact me&lt;/a&gt; to help me verify the auto-detection mechanism). &lt;/p&gt;
&lt;p&gt;You can change the default behaviour of wallaroo by using two compile time symbols. To impose the use of boost libraries, you can define the symbol &lt;code&gt;WALLAROO_FORCE_USE_BOOST&lt;/code&gt;. In the same way, to impose the use of std smart pointers in wallaroo interface, you can define the symbol &lt;code&gt;WALLAROO_FORCE_USE_STD&lt;/code&gt;. &lt;/p&gt;
&lt;h2 id="i-have-some-trouble-with-constructor-parameters"&gt;I have some trouble with constructor parameters&lt;/h2&gt;
&lt;p&gt;Maybe you've encountered the limit on the number of parameters you can have in your &lt;code&gt;wallaroo::Part&lt;/code&gt;-derived classes. &lt;/p&gt;
&lt;p&gt;For classes defined in the main address space, you can have up to 2 constructor parameters. For classes defined in a shared library, your classes cannot have constructor parameters. &lt;/p&gt;
&lt;p&gt;The right way to deal with this limit is to use &lt;a class="" href="../Attributes"&gt;wallaroo attributes&lt;/a&gt; instead of constructor parameters. Basically, you can substitute the constructor parameters with wallaroo::Attribute data members: they're typed and wallaroo can initialize them through the usual DSL or the configuration file. &lt;/p&gt;
&lt;h2 id="can-i-register-template-classes"&gt;Can I register template classes?&lt;/h2&gt;
&lt;p&gt;Yes, you can register all the template specializations you need. E.g.: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;WALLAROO_REGISTER&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;Foo&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;WALLAROO_REGISTER&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;Foo&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then, you can use the strings &lt;code&gt;Foo&amp;lt; int &amp;gt;&lt;/code&gt; and &lt;code&gt;Foo&amp;lt; double &amp;gt;&lt;/code&gt; in wallaroo DSL, XML and JSON. &lt;/p&gt;
&lt;p&gt;Pay attention that: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;you must use the exact string you wrote in the registration line (e.g., with the example above, you must put the spaces around "&amp;lt;" and "&amp;gt;"!) &lt;/li&gt;
&lt;li&gt;in your xml file, you must use &amp;amp;lt and &amp;amp;gt instead of &amp;lt; and &amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But you have the two following alternatives (valid in general). &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Typedefs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;E.g.: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="n"&gt;Foo&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;IntFoo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="n"&gt;Foo&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;DoubleFoo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;WALLAROO_REGISTER&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;IntFoo&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;WALLAROO_REGISTER&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;DoubleFoo&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then, you will use the strings &lt;code&gt;IntFoo&lt;/code&gt; and &lt;code&gt;DoubleFoo&lt;/code&gt; in wallaroo DSL, XML and JSON. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Manually create your classes in the DSL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;E.g.: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;catalog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s"&gt;"double_foo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;make_shared&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;Foo&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;catalog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s"&gt;"int_foo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;make_shared&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;Foo&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="i-put-my-classes-in-shared-libraries-and-i-get-a-wrongtype-exception"&gt;I put my classes in shared libraries, and I get a &lt;code&gt;WrongType&lt;/code&gt; exception!&lt;/h2&gt;
&lt;p&gt;If you get a &lt;code&gt;WrongType&lt;/code&gt; exception when you try to extract an object from a &lt;code&gt;catalog&lt;/code&gt;, maybe you're using an old version of gcc. In that case, you should tell the compiler to provide RTTI across process boundaries, by using the flag &lt;code&gt;-E&lt;/code&gt;: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="cp"&gt;# extract from roulette sample Makefile:&lt;/span&gt;

&lt;span class="cp"&gt;# NOTE you need to pass -E to the linker to provide RTTI across process boundaries!&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;EXE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;OBJ&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LINK&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cc&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Wl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;E&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="err"&gt;$@&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;

&lt;span class="cp"&gt;# NOTE you need to pass -E to the linker to provide RTTI across process boundaries!&lt;/span&gt;
&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;so&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cpp&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;consolefactory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cpp&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;consolefactory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;
    &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LINK&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cc&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;fPIC&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;shared&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Wl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;E&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Wl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;soname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="err"&gt;$@&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="err"&gt;$@&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LFLAGS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CFLAGS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="if-i-put-my-classes-in-static-libraries-wallaroo-does-not-find-them"&gt;If I put my classes in static libraries, Wallaroo does not find them!&lt;/h2&gt;
&lt;p&gt;The linker does not link static libraries if the main program does not explicitly reference any symbol contained inside them. However, Wallaroo registration mechanism requires the linker to put everything inside the final executable, even those symbols that are never referenced. That's why your executable can't find your classes. &lt;/p&gt;
&lt;p&gt;When you put your files in a static library, you are asking the linker to use only those files which resolve an undefined external. That's what a library does. On the contrary, wallaroo main goal is exactly to not specify in code which concrete classes (i.e. linker symbols) you want to use. So, maybe a static library is not what you want: you should consider the use of shared libraries or linking object files directly. &lt;/p&gt;
&lt;p&gt;However, if you really need to put your classes in static libraries you have two options: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;if you use &lt;strong&gt;gcc&lt;/strong&gt; you can put the libraries between&lt;code&gt;--whole-archive&lt;/code&gt; and &lt;code&gt;--no-whole-archive&lt;/code&gt; in your linker command line: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;gcc&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Lmy_libs_path&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;lmain&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Wl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;whole&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;archive&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;lMyLib1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;lMyLib2&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Wl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;whole&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;archive&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="n"&gt;exe_name&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;with every compiler you can add a dummy symbol to your library and explicitly use it inside your main program. &lt;/p&gt;
&lt;p&gt;// static library&lt;/p&gt;
&lt;h1 id="include-wallarooregisteredh"&gt;include "wallaroo/registered.h"&lt;/h1&gt;
&lt;p&gt;// define a dummy symbol (unique per library)&lt;br /&gt;
int PullInMyLibrary() { return 0; }&lt;/p&gt;
&lt;p&gt;class MyPlugin : public wallaroo::Part&lt;br /&gt;
{&lt;br /&gt;
...&lt;br /&gt;
};&lt;/p&gt;
&lt;p&gt;WALLAROO_REGISTER( MyPlugin );&lt;/p&gt;
&lt;p&gt;// main program&lt;/p&gt;
&lt;p&gt;// force the linker to import the library&lt;br /&gt;
int PullInMyLibrary();&lt;br /&gt;
static int dummy = PullInMyLibrary();&lt;/p&gt;
&lt;p&gt;int main()&lt;br /&gt;
{&lt;br /&gt;
    ...&lt;br /&gt;
    Catalog catalog;&lt;br /&gt;
    catalog.Create( "plugin", "MyPlugin" );&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="which-compilers-are-supported"&gt;Which compilers are supported?&lt;/h2&gt;
&lt;p&gt;Wallaroo should work on every recent compiler. &lt;/p&gt;
&lt;p&gt;Anyway, I have personally tested the library with the following compilers: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft Visual C++ 2013 Premium (with and without boost) &lt;/li&gt;
&lt;li&gt;Microsoft Visual C++ 2012 Express edition (with and without boost) &lt;/li&gt;
&lt;li&gt;Microsoft Visual C++ 2010 Express edition (with and without boost) &lt;/li&gt;
&lt;li&gt;Microsoft Visual C++ 2008 Express edition (with boost) &lt;/li&gt;
&lt;li&gt;GNU gcc v. 4.7.2 (with and without boost) &lt;/li&gt;
&lt;li&gt;GNU gcc v. 4.6.3 (with and without boost) &lt;/li&gt;
&lt;li&gt;GNU gcc v. 4.3.0 (with boost) &lt;/li&gt;
&lt;li&gt;GNU gcc v. 4.2.2 (with boost) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you tried the library with another compiler, please &lt;a class="" href="mailto:wallaroolibrary@gmail.com"&gt;let me know&lt;/a&gt;. &lt;/p&gt;
&lt;h2 id="can-i-use-wallaroo-in-a-commercial-product"&gt;Can I use wallaroo in a commercial product?&lt;/h2&gt;
&lt;p&gt;Of course, you can. Wallaroo is released under &lt;a class="" href="http://www.boost.org/LICENSE_1_0.txt" rel="nofollow"&gt;BOOST software license&lt;/a&gt; that states you can do basically everything with my library. &lt;/p&gt;
&lt;h2 id="does-wallaroo-need-custom-preprocessors-code-generators"&gt;Does Wallaroo need custom preprocessors / code generators?&lt;/h2&gt;
&lt;p&gt;No, Wallaroo does not need any custom build step. This was a basic criteria driving the design of the whole library. Unfortunately, when you try to develop dependency injection in C++ without custom preprocessors / code generators, you end up building an intrusive library. &lt;/p&gt;
&lt;h2 id="is-wallaroo-intrusive"&gt;Is Wallaroo intrusive?&lt;/h2&gt;
&lt;p&gt;Yes it is. This basically means that you need to derive your classes from &lt;code&gt;wallaroo::Part&lt;/code&gt; in order to be managed by wallaroo. If you only need to manage 3rd party classes (that you cannot modify) and you just need the "creation" feature, you can actually solve the problem by writing a wrapper of 3rd party classes (the usual indirection layer that solve every CS problem :-) . However, in this way you cannot exploit the "wiring" feature of wallaroo. I'm planning to add an option to use a non-intrusive mechanism at least for the creation feature in wallaroo. &lt;/p&gt;
&lt;h2 id="can-i-contribute-to-the-project"&gt;Can I contribute to the project?&lt;/h2&gt;
&lt;p&gt;There are several ways you can contribute to wallaroo. You can: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;improve and check the documentation &lt;/li&gt;
&lt;li&gt;test the library &lt;/li&gt;
&lt;li&gt;suggest new features and improvements &lt;/li&gt;
&lt;li&gt;send patches / bug fixes &lt;br /&gt;
Please &lt;a class="" href="mailto:wallaroolibrary@gmail.com"&gt;let me know&lt;/a&gt; if you'd like to contribute. &lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="why-is-it-called-wallaroo"&gt;Why is it called "Wallaroo"?&lt;/h2&gt;
&lt;p&gt;Because I love Australia :-) &lt;/p&gt;
&lt;h2 id="id-like-to-thank-you-for-the-great-library-you-wrote-"&gt;I'd like to thank you for the great library you wrote :-)&lt;/h2&gt;
&lt;p&gt;Great. I'd like you to star my project and to use this  button: it's free and it will give me a big incentive to improve wallaroo. In addition, you can also &lt;a class="" href="mailto:wallaroolibrary@gmail.com"&gt;let me know&lt;/a&gt; you're using wallaroo and tell me how can I improve it. &lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Wed, 01 Apr 2015 14:57:31 -0000</pubDate><guid>https://sourceforge.net61d01a6e94d9513d4842b729d1e29df091d0a434</guid></item></channel></rss>