SophiaFramework UNIVERSE による BREW アプリ開発では、GUI フレームワークをベースにして、ユーティリティーや C++ ラッパーの API をマッシュアップして開発するスタイルが基本です。
※ お客様の開発スタイルに合わせて、如何様にも SophiaFramework UNIVERSE を機能拡張できます。
GUI ( GUI フレームワーク + UI コンポーネント )
GUI フレームワークにより、 グラフィカルユーザーインターフェース 特有の、煩雑なイベントの分岐処理や画面の再描画処理はすべて自動化されます。
そのため、イベントとそのイベントを処理する関数( ハンドラ関数 )の組み合わせを登録するだけで済みます。
ウィンドウ、ダイアログボックス、ボタン、ラジオボタン、タブ、コンボボックスなどの、便利な UI コンポーネントも用意されています。
ユーザーインターフェースの仕様変更にも柔軟にすばやく対応できます。また、複数のアプリで共有可能な、独自仕様の UI コンポーネントも開発できます。
ユーティリティー
Mobile SOAP / XML
DTD / XMLSchema 及び DOM / SAX をサポートする XML パーサー、SOAP 通信、WSDL のサポートなど、 Mobile SOAP / XML アプリ向けの XML 関連クラスです。
SophiaFramework UNIVERSE XML for BREW
ネットワーク ( Network )
POP3 / SMTP メール送受信、HTTP / HTTPS 通信、TCP/IP ソケット、UDP ソケット、SSL ソケット、IP アドレス / DNS 管理クラスなどハイレベルな通信プロトコルを処理するクラスです。
ファイル ( File )
ディレクトリの作成 / 削除や列挙、ファイルの作成 / 削除や読み書き、ファイルパスの管理などのハイレベルなファイル処理を提供するクラスです。
ストリーム ( Stream )
ストリームクラスは、データ送受信時の煩雑なコンテキスト管理を自動化し、ファイルの読み書きやネットワーク通信をシンプルにしてくれるクラスです。
文字列 ( String )
文字列クラスは、面倒な BREW の char 文字列と AECHAR 文字列の変換や、実行時のメモリ破壊やメモリリークの問題を解消します。文字列クラスのインスタンスは、直接 C++ ラッパーに渡せます。
UTF-8、UTF-16、Shift_JIS、EUC-JP などのエンコーディングに対応し、エンコーディング変換も可能です。
バッファ ( Buffer )
バッファクラスは、MALLOC() 関数と FREE() 関数による、動的なメモリの確保と解放の処理をカプセル化します。
バッファクラスを使えば、動的なメモリの確保と解放の記述は不要です。メモリの解放し忘れによる、メモリリークの問題は発生しません。
バッファクラスには、一般的なヒープクラス、ブロックアロケーションをサポートするヒープクラス、汎用バッファとリングバッファのクラスがあります。
図形+カラー (Shape + Color )
図形クラスとカラークラスにより、図形の移動や配置、色計算などを直感的に分かりやすくプログラミングできます。
C++ ラッパーに図形クラスや色クラスのインスタンスを渡すこともできます。
コレクション ( Collection )
コレクションクラスは、可変長のデータを管理するための、配列リストや双方向リンクリスト、ハッシュマップやスタックといった、BREW と RVCTB コンパイラに最適化されたクラスです。
可変長のデータを管理する際に必要となる、煩雑なメモリの確保と解放の処理が不要になります。
数学演算 ( Mathematics )
C の浮動小数点演算( RVCTB コンパイラ付属の標準数学関数 )が使えます。
この機能は、PC や PDA など他のプラットフォーム上のアプリを BREW へ移植する際に便利です。
UNIX の drand48 乱数やメルセンヌ・ツイスター乱数をサポートするクラスもあります。
汎用 ( General )
日付クラス、エンディアン変換クラス、コンフィグファイル操作クラス、文字列ペアのリストを管理するクラスや、高機能な描画クラスなどの汎用的なクラスがあります。
C++ ラッパー ( BREW インターフェースラッパー+スマートポインタ )
すべての BREW インターフェースを C++ でラップしました。 文字列や図形、色など他のユーティリティークラスのインスタンスを直接 BREW インターフェースに渡せます。
スマートポインタにより、使い終わっても BREW インターフェースを解放する必要がありません。煩雑なインターフェース管理とメモリリークの問題が解消します。
その他
ソースコードを簡潔にするための予約語やマクロもあります。