MessagePack

7
Sadayuki Furuhashi @frsyuki

Android の libc は Bionic なる実装らしい。これは何者だ…BSDライセンスとな。 http://bit.ly/dnKjFk #msgpackhack

2010-09-12 11:26:59
Sadayuki Furuhashi @frsyuki

「C++の例外機能は未サポート」 "NDKの使い方 Androidのネイティブ開発環境" #msgpackhack http://bit.ly/bG1ibU

2010-09-12 11:29:04
Sadayuki Furuhashi @frsyuki

uClibc++は例外も使えるらしい。例外を使えないEmbedded C++環境って、どれくらいメジャーなんだろう。 #msgpackhack http://bit.ly/alaPEc

2010-09-12 11:30:58
隅須正昭 @nagoya313

う~ん、やっぱりそうか。そんな感じは昨日してたけど RT @frsyuki 「C++の例外機能は未サポート」 "NDKの使い方 Androidのネイティブ開発環境" #msgpackhack http://bit.ly/bG1ibU

2010-09-12 11:30:59
Sadayuki Furuhashi @frsyuki

templateが使えて例外が使えない環境は Android NDK くらいな予感。将来的にはどうなるんだろう。Android NDKで例外を使えるようにするパッチを発見。 #msgpackhack http://bit.ly/c3z12u

2010-09-12 11:34:16
Sadayuki Furuhashi @frsyuki

C++的には、iterator::operator== でブロックするのはアリなのかな? ストリームデシリアライザだと、このタイミングでデータを読み足すことがある。#msgpackhack

2010-09-12 11:38:18
Sadayuki Furuhashi @frsyuki

ぃゃぃゃ、ブロックするのは operator++ のタイミングか。問題無さそう。

2010-09-12 11:39:39
Sadayuki Furuhashi @frsyuki

C++版で、msgpack::objectはメモリ管理をしていなくて、配列やバイト列の実データはmsgpack::zoneの中にある。デシリアライズするとobjectとauto_ptr<zone>の2つが出てくるのだけど、イテレータでは何型を返すべきか。#msgpackhack

2010-09-12 11:47:38
Sadayuki Furuhashi @frsyuki

msgpack::unpackedを返せばいいのかなぁ。中身はobjectとauto_ptr<zone>を所有。unpackedがobjectを継承して、auto_ptr<zone>を所有する設計はアリやナシや。unpacked is-a object。#msgpackhack

2010-09-12 11:49:35
Sadayuki Furuhashi @frsyuki

objectを継承してshared_ptr<zone>を所有する managed_object を作るという案もあるのだけど、これはオーバーヘッドが微妙という話が…。あとshared_ptrが無い。tr1か。#msgpackhack

2010-09-12 11:52:01
Sadayuki Furuhashi @frsyuki

objectが動的型付け言語の変数のように見えて、実はメモリ管理は別というのが分かりにくいという話も。デフォルトではメモリ管理付きで、オーバーヘッドが気になる場合はメモリ管理を取り外して使える、というのも良さそう。APIの設計が悩ましい… #msgpackhack

2010-09-12 11:53:07
Sadayuki Furuhashi @frsyuki

zoneは1つのobjectの寿命を管理するだけの設計ではなくて、たくさんのobjectを一括管理する設計。Objective-C の Zone のアイディアを拝借したもの(2.0で無くなったけど)。objectに紐付けるのは微妙かも #msgpackhack

2010-09-12 11:57:26
Sadayuki Furuhashi @frsyuki

objectに参照カウンタが付いていないから、拝借しきれていないという話も。shared_ptr<zone>を所有させるのが一番きれいな印象。#msgpackhack

2010-09-12 11:59:31
Sadayuki Furuhashi @frsyuki

Android NDK で tr1::shared_ptr は使えるのだろうか… #msgpackhack

2010-09-12 12:01:22
ハルキ @nharuki

コンパイルしてみたことありますが無理でした。RTTI使用しているのが原因で。 RT @frsyuki: Android NDK で tr1::shared_ptr は使えるのだろうか… #msgpackhack

2010-09-12 12:03:15
Sadayuki Furuhashi @frsyuki

なんと… RT @nharuki: コンパイルしてみたことありますが無理でした。RTTI使用しているのが原因で。 RT @frsyuki: Android NDK で tr1::shared_ptr は使えるのだろうか… #msgpackhack

2010-09-12 12:05:08
Sadayuki Furuhashi @frsyuki

iPhoneはC++で例外も使える雰囲気。しかしbrokenだという声も。 #msgpackhack http://bit.ly/9rkyWn

2010-09-12 12:10:15
Sadayuki Furuhashi @frsyuki

例外を使えない Embedded C++ を使っている現場に出会ったことがない。現存するのだろうか…? #msgpackhack

2010-09-12 12:11:26
Sadayuki Furuhashi @frsyuki

例外が使えるなら、template<typename T> as_optional() try { return optional(as<T>()) } catch(type_error&) { return optional(); } で済む。#msgpackhack

2010-09-12 12:13:16
Yohei Okaya @akehoyayoi

カーナビなどの組み込み系はEmbedded C++使っていますよ。T社系列にいた時に使っていました。 @frsyuki: 例外を使えない Embedded C++ を使っている現場に出会ったことがない。現存するのだろうか…? #msgpackhack

2010-09-12 12:14:06
Sadayuki Furuhashi @frsyuki

ぁぁそういえば optional がない。msgpack::type::nilを返すのもアリかな… #msgpackhack

2010-09-12 12:14:09
Sadayuki Furuhashi @frsyuki

カーナビ…!なるほど RT @akehoyayoi: カーナビなどの組み込み系はEmbedded C++使っていますよ。T社系列にいた時に使っていました。 @frsyuki: 例外を使えない Embedded C++ を使っている現場に出会ったことがない #msgpackhack

2010-09-12 12:15:19
Sadayuki Furuhashi @frsyuki

eMbedded Visual C++ では、例外とRTTIが使えない。STLも? 4.0からは使える。#msgpackhack http://bit.ly/coVq4y

2010-09-12 12:18:24
Sadayuki Furuhashi @frsyuki

eMbedded Visual C++ は、少なくとも2003年7月18日にはリリースされているらしい。最近のWindows CEな環境なら、基本的に例外は使えると考えて良いのかな。 #msgpackhack

2010-09-12 12:21:37