Currently we rely on some undefined behavior when Object->cast_to() gets
called with a Null pointer. This used to work fine with GCC < 6 but
newer versions of GCC remove all codepaths in which the this pointer is
Null. However, the non-static cast_to() was supposed to be null safe.
This patch makes cast_to() Null safe and removes the now redundant Null
checks where they existed.
It is explained in this article: https://www.viva64.com/en/b/0226/
Fixes a bunch of the most spammy console errors introduced by recent refactorings:
- `AudioServerState` does not exist, this was the reference to it in the source. The surrounding code made it clear that `AudioServerLayout` was meant to be used instead.
- `StreamCSVTranslation` same here, it's the only reference. I went with `Translation` here, but I'm not 100% sure on this one.
- Some methods have been moved from `Texture` to `Image`, but the old bindings were still there.
- A few `name == ""` errors related to duplicating nodes.
I can show you the code
Pretty, with proper whitespace
Tell me, coder, now when did
You last write readable code?
I can open your eyes
Make you see your bad indent
Force you to respect the style
The core devs agreed upon
A whole new world
A new fantastic code format
A de facto standard
With some sugar
Enforced with clang-format
A whole new world
A dazzling style we all dreamed of
And when we read it through
It's crystal clear
That now we're in a whole new world of code
The other subfolders of tools/ had already been moved to either
editor/, misc/ or thirdparty/, so the hiding the editor code that
deep was no longer meaningful.