2016-05-19 23 views
2

私は以下の構造を持っています(他にもたくさんあります)、ソケットで送信したいのですが。msgpackpack構造体

struct Position 
{ 
    float x; // position selon x 
    float y; // position selon y 
    float theta; // orientation % z 
    Position (float x_, float y_, float theta_): x(x_), y(y_), theta(theta_){} 
    Position(){} 
}; 

しかし、最初の復号化の目的のために、私はそれが非常に私のタスクを簡素化し得るような符号化および復号化のためのmsgpackライブラリを使用して考えました。

私はそれをどのように正確に行うことができるのか分かりませんでした。ここや他の場所で利用できるほとんどの例は、従来のバッファ(ベクトル、リスト...)をパックしようとしていますが、見つけた!

だから、それはできますか?それはどのようにできますか?

PS:構造例が簡略化されていますが、私は真剣に複雑になっています。

ありがとうございました。

答えて

4

はい、実行できます。あなたはMSGPACK_DEFINE_MAPまたはMSGPACK_DEFINE_ARRAYを使用することができます。

struct Position 
{ 
    float x; // position selon x 
    float y; // position selon y 
    float theta; // orientation % z 
    Position (float x_, float y_, float theta_): x(x_), y(y_), theta(theta_){} 
    Position(){} 
    MSGPACK_DEFINE_MAP(x, y, theta) 
}; 

このマクロは、必要なアダプター機能を生成します。

違いは、配列にはメンバの一覧が表示され(コンパクト)、マップには構造体メンバがキーと値のペアとして格納されるという点です。

出典:https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_adaptor#defining-custom-adaptors

+0

速いです。ありがとう! – Vtik