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 .


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.


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.