2010年12月15日に、Poco の v1.4.0 がリリースされました。
早速インストールして、このサイトにあげてあるコードをチェックし直した所、幾つか問題になった所があったので掲載しておきます。
v1.4.0 で変更された箇所
他にもあるとは思いますが、このサイトに掲載した記事に直接関係するものとしては、次の2件になります:
UUID.h
関連記事:Poco::UUID
// old: v1.3.6p2 bool Poco::UUID::isNil() const; static const UUID& Poco::UUID::nil(); // new: v1.4.0 bool Poco::UUID::isNull() const; static const UUID& Poco::UUID::null();
CHANGELOG の該当箇所:
- Poco::UUID::nil() and Poco::UUID::isNil() have been renamed to
Poco::UUID::null() and Poco::UUID::isNull(), respectively, to avoid
issues with Objective-C++ projects on Mac OS X and iOS where nil is
a system-provided macro.
DOMParser.h
関連記事:Poco::XML::DOMParser
// old: v1.3.6p2 static const XMLString FEATURE_WHITESPACE; // new: v1.4.0 static const XMLString FEATURE_FILTER_WHITESPACE;
CHANGELOG の該当箇所:
- DOMParser: FEATURE_WHITESPACE has been renamed to FEATURE_FILTER_WHITESPACE (which now matches the underlying URI)
and is now handled correctly (previously we did the exact reverse thing)
変更箇所対応方法
これらの変更に対応するため、Poco のバージョンを見て条件コンパイルするようにしたのですが、そのバージョン定義が:
// old: v1.3.6p2 // Foundation.h #define POCO_VERSION 0x01030602 // new: v1.4.0 // Version.h #define POCO_VERSION 0x01040000
と、v1.3.6p2 までは存在しなかったヘッダファイルに移ったので、ちょっとややこしくなりました。
CHANGELOG の該当箇所:
- The POCO_VERSION macro now is in its own header file, “Poco/Version.h”. It is no longer
available through “Poco/Foundation.h”.
最終的に落ち着いた方法はこちらになります:
#ifndef POCO_VERSION #include <Poco/Version.h> #endif #if (POCO_VERSION < 0x01040000) // v1.3.6p2 までのコード #else // v1.4.0 からのコード #endif
修正対応状況
各記事中のコード、リンクされている圧縮ファイルや Assembla 上の修正は終了しています。
残念だった所
Poco::SharedMemory の記事で紹介したバグですが、対応してもらったものの、実は信じていたコメントが間違っていたことが分かり、再度修正をお願いし直しました。
問題が解決した場合用に修正したコードの圧縮ファイルは、そのフォーラム記事中に置いてあります。
| Copyright © 2010 Round Square Inc. All rights reserved. |
|---|