型ベース+属性でやるならgenericsが欲しい。resolve<K,V> map<K,V> @ordered cpp:<K,V>; とか。generics付きのtypedefをサポートするか、フィールドベースか、微妙。
2011-03-27 04:26:54両方できればいいという話も。フィールドベースに加えて typedef<K,V> map<K,V> OrderedMap<K,V>; typespec<K,V> OrderedMap<K,V> cpp:map<K,V>; が書ければいい。
2011-03-27 04:30:16基本型14種、コンテナ型3種、nullable("?")とoptional、enum、typedef、総称型、typespec、例外クラス、service定義、include。
2011-03-27 05:56:50@frsyuki 40行目の NullableExample message 内の string? の '?' って何ですか??
2011-03-27 06:00:06@frsyuki いや、なくてもよいけど、以前「フィールド全部を nullable にしたい」という要望があったのを思い出しました。
2011-03-27 06:02:51(ちなみにJava版はクラスの宣言に @MessagePackMessage(FieldOption.NULLABLE) アノテーションを付けると、デフォルトでnullableになる
2011-03-27 06:04:29@frsyuki おぉ… 知らなかったー>< RT @frsyuki: (ちなみにJava版はクラスの宣言に MessagePackMessage(FieldOption.NULLABLE) アノテーションを付けると、デフォルトでnullableになる
2011-03-27 06:05:44@frsyuki Generics は必要ですか?IDL を使う段階だと、もう型はある程度確定している気がするのだけど、そんなことはない?さっきつぶやいてましたっけ?
2011-03-27 06:21:06@frsyuki ごめん、たぶんぼくが理解できてないんだ。typespec って、実装の詳細を後付けするということでよいですか?
2011-03-27 06:25:11@muga_nishizawa そうですそうです。型やtypedefやフィールドについて、コード生成される実際の型を上書きします。
2011-03-27 06:26:39Genericsで記述しても、生成されるコードはgenerics(やtemplate)ではなくPOJO/POD型、にしそうだけどgenericsになっていた方が便利なケースってあるかな。
2011-03-27 06:24:04typedef<V> map<string,V> GenericStringMap より typedef map<string,V> GenericStringMap<V> の方がいいかも。あるいは alias GenericStringMap<V> map<string,V>
2011-03-27 06:40:20@frsyuki たぶん充分 parse は可能だとは思うのですが、この 97 行目の GenericExample の V には、いつ実際の型が代入されるのですか?利用用途が気になります…
2011-03-27 06:50:44コード生成プラグインにGenericな型が渡されることはない。型変数がすべて解決されている型だけをコード生成し、解決されていない総称型はコード生成しないので。
2011-03-27 06:57:53@muga_nishizawa typespecはGenericをうまく使わないと相当に繁雑になりそうです。ただtypespecは実装の詳細の指定なので、例えばパフォーマンスが重要なケースか、性能チューニングのフェーズに使うことになるので、多少繁雑でも大丈夫かなーと思っています。
2011-03-27 07:02:10