2016-04-07 6 views
0

私はポコのソースコードにToNetwork()::ポコBYTEORDERを見つけようとしていますし、私が見つけることができるすべては、全体のソースを検索した後、これは次のとおりです。ByteOrder.hPoco ByteOrder :: ToNetwork()はどこに定義されていますか?

static Int16 toNetwork(Int16 value); 
    static UInt16 toNetwork (UInt16 value); 
    static Int32 toNetwork(Int32 value); 
    static UInt32 toNetwork (UInt32 value); 
#if defined(POCO_HAVE_INT64) 
    static Int64 toNetwork(Int64 value); 
    static UInt64 toNetwork (UInt64 value); 
#endif 

実際の実装ですか? githubのいずれかでそれを見つけることができません:

https://github.com/pocoproject/poco/search?utf8=%E2%9C%93&q=tonetwork

答えて

0

ポコのendiness変換はマクロPOCO_IMPLEMENT_BYTEORDER_BIGとByteOrder.hでPOCO_IMPLEMENT_BYTEORDER_LITによって定義されています。ビッグエンディアンシステムでは、これらのマクロはそれぞれPOCO_IMPLEMENT_BYTEORDER_NOOPPOCO_IMPLEMENT_BYTEORDER_FLIPに、リトルエンディアンシステムでは逆に拡張されます。

// 
// some macro trickery to automate the method implementation 
// 
#define POCO_IMPLEMENT_BYTEORDER_NOOP_(op, type) \ 
    inline type ByteOrder::op(type value)  \ 
    {              \ 
      return value;        \ 
    } 
#define POCO_IMPLEMENT_BYTEORDER_FLIP_(op, type) \ 
    inline type ByteOrder::op(type value)  \ 
    {              \ 
      return flipBytes(value);    \ 
    } 


#if defined(POCO_HAVE_INT64) 
    #define POCO_IMPLEMENT_BYTEORDER_NOOP(op) \ 
      POCO_IMPLEMENT_BYTEORDER_NOOP_(op, Int16) \ 
      POCO_IMPLEMENT_BYTEORDER_NOOP_(op, UInt16) \ 
      POCO_IMPLEMENT_BYTEORDER_NOOP_(op, Int32) \ 
      POCO_IMPLEMENT_BYTEORDER_NOOP_(op, UInt32) \ 
      POCO_IMPLEMENT_BYTEORDER_NOOP_(op, Int64) \ 
      POCO_IMPLEMENT_BYTEORDER_NOOP_(op, UInt64) 
    #define POCO_IMPLEMENT_BYTEORDER_FLIP(op) \ 
      POCO_IMPLEMENT_BYTEORDER_FLIP_(op, Int16) \ 
      POCO_IMPLEMENT_BYTEORDER_FLIP_(op, UInt16) \ 
      POCO_IMPLEMENT_BYTEORDER_FLIP_(op, Int32) \ 
      POCO_IMPLEMENT_BYTEORDER_FLIP_(op, UInt32) \ 
      POCO_IMPLEMENT_BYTEORDER_FLIP_(op, Int64) \ 
      POCO_IMPLEMENT_BYTEORDER_FLIP_(op, UInt64) 
#else 
    #define POCO_IMPLEMENT_BYTEORDER_NOOP(op) \ 
      POCO_IMPLEMENT_BYTEORDER_NOOP_(op, Int16) \ 
      POCO_IMPLEMENT_BYTEORDER_NOOP_(op, UInt16) \ 
      POCO_IMPLEMENT_BYTEORDER_NOOP_(op, Int32) \ 
      POCO_IMPLEMENT_BYTEORDER_NOOP_(op, UInt32) 
    #define POCO_IMPLEMENT_BYTEORDER_FLIP(op) \ 
      POCO_IMPLEMENT_BYTEORDER_FLIP_(op, Int16) \ 
      POCO_IMPLEMENT_BYTEORDER_FLIP_(op, UInt16) \ 
      POCO_IMPLEMENT_BYTEORDER_FLIP_(op, Int32) \ 
      POCO_IMPLEMENT_BYTEORDER_FLIP_(op, UInt32) 
#endif 


#if defined(POCO_ARCH_BIG_ENDIAN) 
    #define POCO_IMPLEMENT_BYTEORDER_BIG POCO_IMPLEMENT_BYTEORDER_NOOP 
    #define POCO_IMPLEMENT_BYTEORDER_LIT POCO_IMPLEMENT_BYTEORDER_FLIP 
#else 
    #define POCO_IMPLEMENT_BYTEORDER_BIG POCO_IMPLEMENT_BYTEORDER_FLIP 
    #define POCO_IMPLEMENT_BYTEORDER_LIT POCO_IMPLEMENT_BYTEORDER_NOOP 
#endif 


POCO_IMPLEMENT_BYTEORDER_BIG(toBigEndian) 
POCO_IMPLEMENT_BYTEORDER_BIG(fromBigEndian) 
POCO_IMPLEMENT_BYTEORDER_BIG(toNetwork) 
POCO_IMPLEMENT_BYTEORDER_BIG(fromNetwork) 
POCO_IMPLEMENT_BYTEORDER_LIT(toLittleEndian) 
POCO_IMPLEMENT_BYTEORDER_LIT(fromLittleEndian) 
+0

ありがとうございました! – mezamorphic

関連する問題