wtf è WTF? (nel codice WebKit)


91

Ho scaricato la base di codice di Chromium e mi sono imbattuto nello spazio dei nomi WTF .

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

Significa ciò che penso significhi? Potrebbe essere così, l' bitwise_castimplementazione specificata qui non verrà compilata se TOo FROMnon è un POD e non è (AFAIK) più potente del C ++ integrato reinterpret_cast.

L'unico punto di luce che vedo qui è che nessuno sembra utilizzare bitwise_castnel progetto Chromium.


4
Probabilmente una buona idea citare la parte "NESSUNA GARANZIA".
MSalters

@KennyTM si prega di consultare meta.stackexchange.com/questions/45844/… per una discussione su come taggare questa domanda
Earlz

Wow, quella classe non è descritta da "Web Template Framework". È solo un'abbreviazione conveniente.
macetw

Risposte:


81

È l'abbreviazione di W eb T emplate F ramework e fornisce funzioni di uso comune in tutto il codice WebKit.


2
come nei modelli C ++ che fanno cose comuni :)
ismail

qualche modo per clonare quella libreria?
Victor

Citazioni per favore. Esegue modelli come Moustache o JSP?
adib

@adib No, il "modello" si riferisce davvero ai modelli C ++ e nient'altro. Vedi trac.webkit.org/wiki/SourceDirectory e webkit.org/blog/6161/locking-in-webkit (per fonti WebKit) e chromium.googlesource.com/chromium/src/+/master/third_party/… (per Blink fonte).
Timothy Gu,


2

Potrebbe essere così, l'implementazione bitwise_cast qui specificata produce un comportamento indefinito se TO o FROM non è un POD

Se FROM o TO non sono tipi POD, la compilazione fallirebbe con l'attuale standard C ++ perché non saresti in grado di metterli in unione.


1
Non sono sicuro. Se la tua classe contiene un puntatore a un membro, non è un POD ma può comunque essere inserito in un'unione, penso.
MSalters
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.