WTF ist WTF? (in der WebKit-Codebasis)

91

Ich habe die Codebasis von Chromium heruntergeladen und bin über den WTF-Namespace gelaufen .

namespace WTF {
    /*
     * C++'s idea of a reinterpret_cast lacks sufficient cojones.
     */
    template<typename TO, typename FROM>
    TO bitwise_cast(FROM in)
    {
        COMPILE_ASSERT(sizeof(TO) == sizeof(FROM), WTF_wtf_reinterpret_cast_sizeof_types_is_equal);
        union {
            FROM from;
            TO to;
        } u;
        u.from = in;
        return u.to;
    }
} // namespace WTF

Bedeutet das, was ich denke, dass es bedeutet? Möglicherweise wird die bitwise_casthier angegebene Implementierung nicht kompiliert, wenn entweder ein POD vorhanden ist TOoder FROMnicht, und ist nicht (AFAIK) leistungsfähiger als C ++ .reinterpret_cast

Der einzige Lichtpunkt, den ich hier sehe, ist der, den niemand bitwise_castim Chromium-Projekt zu verwenden scheint .

Motti
quelle
4
Wahrscheinlich eine gute Idee, den Teil "KEINE GARANTIEN" zu zitieren.
MSalters
@KennyTM siehe meta.stackexchange.com/questions/45844/… für eine Diskussion, wie man diese Frage
markiert
Wow, diese Klasse wird nicht von "Web Template Framework" beschrieben. Es ist nur eine bequeme Abkürzung.
Macetw

Antworten:

81

Es ist die Abkürzung für W eb T emplate F AHMT und Funktionen in der ganzen WebKit Codebasis häufig verwendet wird, liefert.

ismail
quelle
2
wie in C ++ - Vorlagen, die allgemeine Dinge tun :)
ismail
Wie kann man diese Bibliothek klonen?
Victor
Zitate bitte. Tut es Vorlagen wie Moustache oder JSP?
Adib
@adib Nein, die "Vorlage" bezieht sich wirklich auf C ++ - Vorlagen und sonst nichts. Siehe trac.webkit.org/wiki/SourceDirectory und webkit.org/blog/6161/locking-in-webkit (für WebKit Quellen) und chromium.googlesource.com/chromium/src/+/master/third_party/... (für Blink Quelle).
Timothy Gu
2

Möglicherweise liefert die hier angegebene bitwise_cast-Implementierung ein undefiniertes Verhalten, wenn TO oder FROM kein POD ist

Wenn FROM oder TO keine POD-Typen sind, schlägt die Kompilierung mit dem aktuellen C ++ - Standard fehl, da Sie sie nicht in Union zusammenfassen können.

Artyom
quelle
1
Nicht sicher. Wenn Ihre Klasse einen Zeiger auf ein Mitglied enthält, ist es kein POD, aber es kann trotzdem in eine Union gehen, denke ich.
MSalters