Poco v1.4.0

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 の記事で紹介したバグですが、対応してもらったものの、実は信じていたコメントが間違っていたことが分かり、再度修正をお願いし直しました。
問題が解決した場合用に修正したコードの圧縮ファイルは、そのフォーラム記事中に置いてあります。

Powered by POCO Copyright © 2010 Round Square Inc. All rights reserved.


Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>