2008-05-02-01-【Scrooge】データ構造 - 10 - project-enigma

2008-05-02-01-【Scrooge】データ構造 - 10

>> Site top >> weblog >> 月別アーカイブ >> 2008年05月のlog >> 2008-05-02-01-【Scrooge】データ構造 - 10

最終更新日付:2014/01/02 00: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-2017 project-enigma.
Generated by CL-PREFAB.