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.