もろもろ作業メモ 以下の項目の設計メモも含んでいる。 - txt:line サポート、サンプル追加 - encodingLibrary のインターフェース変更 およびこれにともなうサンプル改定 - umsCodeGenerator:dataContainer のリソース管理のバグ修正 -- 2005072952 で実装。 - param 要素サポート。例を追加。 -- 2005072953 で実装。 20050801 -KM- --------------------------------------------------------- 設計メモ 2005072851 encodingLibrary の仕様変更 % ただし 2005072952 で再度改定がはいり本改定は % 途中検討のステップ。結論のみを知りたければ本メモの # で始まる行を読み飛ばすとよい。 param タグのサポートに向け以下の仕様変更が必要となった。 # 2005072851 作成時の考え # # From: dat.spos, epos を受け取り dat.spos を進める # To: dat.spos, dat.epos を受け取り # 必要に応じdat.epos を dat.spos の側に戻す。 % 2005072952 作成時の訂正 % % 従来との差分は以下のみ % encodeLibrary の decode 処理から処理部分の長さを % 決定する機構は廃止する。つまり、処理部分は % 上位のコンテナで決定されていなければならない。 % マッチングは渡されたコンテナ全体に対しておこなう。 ==== encodingLibrary の修正 (t/u 共通部分) ==== - datatype/src/W3C_typeConversionLibrary.[ch] - datatype/src/jp/jaxa/isas/ums/datatype/W3C_TypeConversionLibrary.java 引数から int epos を削除。 # txt_Read のインターフェースは変更しない。 # 最終位置は dat.spos ではなく dat.epos に反映。 % 2005072952 作成時 % この改修が実は不要なことが分かった。害もなく、 % 見かけはシンプルになるセンスなので元には戻さない。 % ... (*1) % % 従来どおり最終位置は dat.spos に反映することとする。 - datatype/src/typeConversion_lang2.xsl - datatype/src/W3C_typeConversion_lang2.xsl container 変数を廃止。固定値 ums__dat で置き換え。 ==== ライブラリの修正 (t/u 個別部分) ==== - src/clng/umsDat.h - src/java/jp/jaxa/isas/ums/UMSDat.java それぞれ1行づつ、int epos; を追加。 % (*1) で述べた必要のなかった変更点 ==== XSL の修正 (t/u 個別部分) ==== - src/xslt/preTransform.xsl tableTools と umsCodeGenerator で生き別れてしまっている。 共通化を図り差異を明確化した。 getChildEpos, pushContainer, popContainer の引数を削除。 など。 encoding library I/F 変更にともない、 引数 container は削除。 下記 template は見通しが悪くなるため廃止。 template name="encodeLibraryParameter" template name="encodeLibraryParameterDat" あらかじめ展開しておく。 template match="pre:dataOrValue" に epos = ; を、追加。 % 以下も追加したが 2005072952 にて廃止。 # # spos = epos; # - src/xslt/list.xsl (同一) encodingLibrary を呼び出しているところがあり同様。 - src/xslt/tool.xsl あるいは src/xslt/tool_lang.xsl (個別) template name="getEpos" を復活。 - secondTransform_lang.xsl ... template match="post:THROW_EXCEPTION" に thread version を追加。 ... ums__detail => detail (*2) ----------------------- マージ作業メモ # setenv LANG ja_JP.euc_JP は、まだ必要。 % 2005072952 では setenv LANG C で動くことを確認 # tableTools-20052701 に手を加えた。 # umsCodeGenerator-20052801 に手を加えた。 # tableTools-2005072801 との相違点 (で未反映の部分) # changes.xml # コンパイラの *.java % 2005072952 では追いついている。 (*2) の作業を手で適用。 # 2005072852 # 2005072801 => 2005072802 の改定は手で追従した。 # datatype/src/*lang2.xsl の改定がバッティング ----------------------------------------------------------------------------- 設計メモ 2005072951 コンテナとサブコンテナの役割分担の明確化 のためのサンプル変更。 % 一部、考慮不足な点があり、最終的にサンプルが置き換わったのは % tableTools-2005072952 / umsCodeGenerator-2005072952 から。 「サブコンテナ」と呼んでいたもの ( data,value ) は シーケンシャルどの部分に対応するかを決めてはいけない。 - TxtSample/lang/TxtSample.ums - DataSample/lang/DataSample.ums - ValueSample/lang/ValueSample.ums - PrefixSample/lang/PrefixSample.ums - PrefixSample/clng/PrefixSample2.ums - ValidateSample/clng/ValidateSample.ums list を使って書き換え書き換えた例が動かない。 - src/xslt/list.xsl の XML-language syntax 対応に漏れがあった。 XML-language syntax を処理する xsl では lang:value-of など言語空間が入っていてはいけないようだ。 list,csv のサンプルには list 直下に lang:value-of と なる例がなく、チェックをすり抜けていた。 要調査点その1) XML-language syntax を処理する xsl において、 lang:* タグを参照する処理が残っていないことを 全 xsl について確認する。 要調査点その2) サンプルにおいて encode と decode でスキーマが異なるものがほとんど。 例: TxtSample で encode 側のみに delimiter が必要。 同一になるよう期待値、ums、テストプログラムを書き換える。 --------------------------------------------------------- マージ作業メモ # tableTools 2005072951 # 2005072802 => 2005072903 の改定は手で追従した。 修正されたファイル (下記) をコピー。 # changes.xml # lang/ # src/clng/ # src/java/jp/jaxa/isas/ums/ # sample/BinSample/ # sample/IntType_signedEncodeSample/ # sample/UnsignedIntType_unsignedEncodeSample/ # sample/Ziguzagu # sample/TxtSample/clng/TxtSampleMain.c # sample/TxtSample/java/TxtSampleMain.java # sample/DataSample/clng/DataSampleMain.c # sample/DataSample/java/DataSampleMain.java # sample/ValueSample/clng/ValueSampleMain.c # sample/ValueSample/java/ValueSampleMain.java # sample/CsvSample/clng/CsvSampleMain.c # sample/CsvSample/java/CsvSampleMain.java # sample/ListSample/clng/ListSampleMain.c # sample/ListSample/java/ListSampleMain.java # sample/PrefixSample/clng/PrefixSample2Main.c # sample/PrefixSample/clng/PrefixSampleMain.c # sample/PrefixSample/java/PrefixSampleMain.java # sample/ValidateSample/clng/ValidateSample.ums (手でマージ) 以下を再度実施 - src/clng/umsDat.h - src/java/jp/jaxa/isas/ums/UMSDat.java それぞれ1行づつ、int epos; を追加。 # 多分ゴミなので捨てた # sample/Interleave/ # sample/DataSample/java/DatatSample.dat # umsCodeGenerator 2005072951 # 2005072802 => 2005072903 の改定は手で追従した。 # ( 2005072904 は作りかけとのこと ) BinSample を除く tableTools の最新版サンプルをコピー # sample/BinSample/clng/BinSampleMain.c # sample/BinSample/java/BinSampleMain.java 以下をコピー sample/ChoiceSample/ sample/FileTagSample/ sample/OneOrMoreSample/ sample/OptionalSample/ sample/ZeroOrMoreSample/ 以下をコピー build.xml changes.xml lang/ src/clng/ src/java/jp/jaxa/isas/ums/ 以下は不適用 (2005072904 からコピーしてしまって残っているものもある) src/xslt/file.xsl src/xslt/getBaseName.xsl src/xslt/secondTransform_java.xsl schema/txt_java.rng src/xslt/txt_java1.xsl src/xslt/txt_java2.xsl これにて豊田版とマージ完了 --------------------------------------------------------- 設計メモ 2005072951 (つづき) umsCodeGenerator 側のみのサンプルも list を使って書き換え - ChoiceSample/lang/ChoiceSample.ums - OptionalSample/lang/OptionalSample.ums - OneOrMoreSample/lang/OneOrMoreSample.ums - ZeroOrMoreSample/lang/ZeroOrMoreSample.ums - FileTagSample は未対応。 要調査点その3) ChoiceSample は複数の同等な ums を用意し、 全てでチェックを行いたい。C 版は対応したが、 java 版の build.xml に組み込めておらず、 手動でチェックをかけている。ant に組み込みたい。 - src/xslt/choice.xsl foreach して弟妹要素を参照する場合の schemaElementNumber は opt="2" を使用するように変更。子要素の処理と case ラベルの 衝突が発生する事例があるため (ChoiceSample の 21)。 要調査点その4) デフォルト以外の schemaElementNumber (case ラベル) を 作成している事例を列挙し、その命名法の指針をまとめる。 要改修点その5) 命名規約違反 C 版において ums__ で始まらない グローバルな変数・関数名を使用しているところがある。 - catchAndThrow など: 識別子の住み分けが必要 ums__ すべし - pop など: 同上 === currentContainerInfo へ auto なリソースを割り当てている。=== 致命的なバグへの対応。auto 変数で割り当てられた領域のポインタを より持続的な寿命の変数に代入してしまっている。 # a->b->c が必要になったら何か間違っていると思ってください。 # そういうのを使わないのが現状の umsCodeGenerator のポリシです。 誤) ums__containerInfo_t *currentContainerInfo; 正) ums__containerInfo_t currentContainerInfo; 影響修正箇所。 - secondTransform_clng.xsl - tool_clng.xsl