Single file components


#1

Is it OK to have single file (.h) components only in my app? I’m not going to make dynamic libraries.
What makes me worry is Juce separate classes into cpp and h files. What’s the reason for it?

As far as I understand the compiler will have to rebuild all files using .h-only component if I change something in the method body. It will rebuild only component’s cpp file if I separate it into cpp and h. Am I correct?


#2

I do it like that more and more these days.

In fact a more radical pattern that I’ve been using recently is like this:

[code] #include “juce headers”
#include “othermischeaders.h”

struct FooClasses
{
    #include "FooClass1.h"
    #include "FooClass2.h"
    #include ...etc..
};

void someFunction()
{
    FooClasses::FooClass foo; 
   ..etc
}

[/code]

…where those “FooClass.h” files just contain inline classes, with no header guards or includes or anything else. This is particularly handy when you have a bunch of inline classes that all cross-reference each other, because by putting them all inside an outer class rather than a namespace, they automatically see each other without needing to worry about their order. And by splitting each one into a header file, it becomes easy to navigate around them.


#3

Interesting technique, Jules, where’d you pick that up?


#4

I guess I was just writing a bunch of inline classes in a cpp file, and then they all needed to reference each other, so I put them all inside a parent class, and then it all grew too big so I split it up into separate files… Not sure I’d recommend doing this in all cases, but it can be handy sometimes.