メモリー間変換

従来は、ファイル→ファイルの変換のみに対応していましたが、様々な形式の変換に対応可能にするため、メモリー間変換のAPIを実装しました。

提供するCUIツールやGUIツールは、これまで通りプレーンテクストなファイル→ファイル変換ですから従来通りのAPIを使いますが、この新APIは、プレーンテクストではないデータファイルを処理する時に使います。
いずれ、特殊な形式のファイル変換などが必要になった場合、この新APIを利用することになると思います。


このために、内部管理などが大きく変更となっています。

従来は、ファイルと標準入出力を切り替えるために、構造体にフラグとifstreamまたはofstreamを持ち、関数間で受け渡す形で処理していました。
今回は、出力ファイルと標準出力は std::ostream に統一、入力ファイルも std::istream に参照を持つ形としてみました。
また更に、出力は std::ostringstream、入力は char *とsize_t を加え、フラグも、ファイル/標準入出力の切り替えではなく、ストリームとostringstreamまたはchar *を切り替えるものとしました。

ostringstreamも、理論上はostreamと出来るはずですが、最後にostringstreamの機能が必要になるので、今のところはこのような形としています。

返却はCでも利用可能なように、char *にお返しする形になるため、APIの引数がとんでもないことになった



LibEncodeMemory
  int argc
  char ** argv
  char * 入力データのポインタ
  size_t 入力データの長さ
  char * 出力データのポインタ
  size_t * 出力データの長さ
  size_t 出力データバッファの長さ
  char * エンコード名称格納用バッファ(必須)
  size_t エンコード名称格納用バッファの長さ(必須)
  char * 動作中メッセージ格納用バッファ(必須)
  size_t 動作中メッセージ格納用バッファの長さ(必須)
  返却値int 0:正常終了、0以外:エラーまたはワーニング

入力はポインタとデータの長さで二つ、これはよい。
出力はポインタと格納バッファの長さの他、実際に格納された長さを返す必要があるため、引数が三つとなり、結局ファイルの時より五つも引数が増えることになってしまった。

何か構造体でも作って、それに格納して受け渡すようにした方がスッキリして良いだろうか。
WindowsのAPIは、そんな感じで構造体を作る傾向が強い気もする。

2009/08/31(月)21:39 |Comments(2) |Trackback(0)

製造開発 | ソフトウェア開発 | コンピュータ | [編集]

▲ページトップ

コメント

*nixではiconv.hのAPIと互換だと使いやすいかと。
2009/09/01(火)01:22 |n | URL |編集
▲ページトップ

ありがとうございます

APIの再考の件は以下に書いておきました。
http://miraicorp.blog90.fc2.com/blog-entry-239.html
2009/09/01(火)14:49 |miraicorp | URL |編集
▲ページトップ

コメントの投稿

APIの再検討中 ホーム EBCDIC+JEF
トラックバック

この記事にトラックバックする(FC2ブログユーザー)
▲ページトップ

カレンダー

07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

プロフィール

miraicorp

Author:miraicorp
未来情報産業(株) 社長

主として「ICカードこれひとつ」や「文字、文字コード」処理、時々C++などについて記述しています。

twitterツイッター

管理用

検索フォーム

お知らせ

コメント等お気軽にどうぞ。

気に入ったら拍手して頂けると、今後の記事を書く際の参考や励みになります。

■お仕事を募集しております
ソフトウェア製造の仕事や、原稿執筆の仕事などを随時受け付けております。
お気軽にご相談下さい

■初めての方へ
こまごまと更新しているため、他にも関連する記事があるかもしれません。
「月別アーカイブ」「検索フォーム」「カテゴリ」などをお試し下さい。
トップページはこちら

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

広告枠

メール

メールはこちら

リンク

このブログをリンクに追加する

RSSリンクの表示

QRコード

QR