22 Mart 2018 Perşembe

fusion BOOST_FUSION_DEFINE_STRUCT

Giriş
Şu satırı dahil ederiz.
#include <boost/fusion/include/define_struct.hpp>
Macroya verilen ilk satır'ın birinci parametresi namespace, ikinci parametresi struct ismidir.
Örnek
Şöyle bir struct üretmek isteyelim.
#include <cstddef>

namespace example {
    struct header {
        uint16_t magic;
        uint16_t version;
        uint32_t length;
        uint32_t msg_type;
    } __attribute__((packed));
}
Şöyle yaparız.
#include <cstddef>
#include <boost/fusion/include/define_struct.hpp>

BOOST_FUSION_DEFINE_STRUCT(
    (example), header,
    (uint16_t, magic)
    (uint16_t, version)
    (uint32_t, length)
    (uint32_t, msg_type)
)
Örnek
Şöyle yaparız.
#include <boost/fusion/include/define_struct.hpp>

using char10 = std::array<char, 10>;

BOOST_FUSION_DEFINE_STRUCT(
    (demo), employee,
    (char10, name))

#include <boost/core/demangle.hpp>
#include <iostream>
int main() {
    demo::employee emp;
    emp.name = {{'I',' ','a','m',' ','G','r','o','o','t'}};
}

Hiç yorum yok:

Yorum Gönder