wtf, WTF nedir? (WebKit kod tabanında)


92

Ben indirilen Krom genelinde 'ın kod tabanı ve ran WTF ad .

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

Bu, düşündüğüm şey anlamına mı geliyor? Böyle olabilir, bitwise_castburada belirtilen uygulama bir POD ya TOda FROMdeğilse ve (AFAIK) yerleşik C ++ 'dan daha güçlü değilse derlenmeyecektir .reinterpret_cast

Burada gördüğüm tek ışık noktası bitwise_cast, Chromium projesinde kimsenin kullanmadığıdır .


4
Muhtemelen "GARANTİ YOK" kısmından alıntı yapmak iyi bir fikirdir.
MSalters

@KennyTM , bu sorunun nasıl etiketleneceği ile ilgili bir tartışma için lütfen meta.stackexchange.com/questions/45844/… adresini ziyaret edin
Earlz,

Vay canına, bu sınıf "Web Şablon Çerçevesi" tarafından tanımlanmıyor. Bu sadece uygun bir kısaltmadır.
macetw

Yanıtlar:


82

Bu kısaltılmışı W eb T emplate F ramework ve yaygın tüm WebKit kod temeli üzerinde fonksiyonları kullanılır sağlar.


2
ortak şeyler yapan C ++ şablonlarında olduğu gibi :)
ismail

bu kütüphaneyi klonlamanın herhangi bir yolu var mı?
Victor

Alıntılar lütfen. Mustache veya JSP gibi şablonlar yapıyor mu?
adib

@adib Hayır, "şablon" gerçekten C ++ şablonlarına atıfta bulunur, başka hiçbir şey değildir. Bkz trac.webkit.org/wiki/SourceDirectory ve webkit.org/blog/6161/locking-in-webkit (WebKit kaynakları için) ve chromium.googlesource.com/chromium/src/+/master/third_party/... Blink için ( kaynak).
Timothy Gu


2

Böyle olabilir, burada belirtilen bitwise_cast uygulaması, TO veya FROM bir POD değilse tanımsız davranışa neden olur

FROM veya TO POD türleri değilse, derleme mevcut C ++ standardıyla başarısız olur çünkü onları bir araya getiremezsiniz.


1
Emin değil. Sınıfınız bir üyeye işaretçi içeriyorsa, bu bir POD değildir, ancak yine de bir birleşmeye gidebilir, sanırım.
MSalters
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.