2008-05-02-01-【Scrooge】データ構造 - 10
>> Site top >> weblog >> 月別アーカイブ >> 2008年05月のlog >> 2008-05-02-01-【Scrooge】データ構造 - 10
最終更新日付:2008/05/02 01:00:00
【Scrooge】データ構造 - 10
2008 年 05 月 02 日
粛々と前進しよう。データベースヒープ上に存在する PriceDB のレコードは可変長で、最低でも ShopDB, ItemDB それぞれへの参照と価格、割引イベントの種類(なし、週次、月次)を持つ。これを単純に構造体にしてみると以下のような感じだ。
struct PriceInfo { UniqueID m_shopID; UniqueID m_itemID; UInt32 m_price; DiscountSchedule m_discountInfo; };
DiscountSchedule は前回登場した列挙型だ。
enum DiscountSchedule { DISCOUNT_NONE = 0, DISCOUNT_WEEKLY = 1, DISCOUNT_MONTHLY = 2 };
データベースレコードは(当然ながら)連続する有限のメモリ領域だから、割引イベント設定は(もしあれば)PriceInfo 構造体の直後に配置される。PriceInfo 構造体のメンバとしないのは、割引イベントなしの場合のメモリ消費を最低限にしたいからだ。メンバ m_discountInfo の値によって直後に何がくるかが決まる。つまり、WeeklyDiscountInfo か MonthlyDiscountInfo だ。
実際に実装する時点では、構造体は全てクラスになる。データベースヒープに直接オブジェクトを保存するこれらのクラスは、全てポリモーフィックなクラスにはしない。
あとは、データベースレコードのロックとオブジェクトの使用をどう連動させるか。続きは後日。
コメント
このページのタグ
Page tag : Palm
Copyright(C) 2005-2021 project-enigma.
Generated by CL-PREFAB.