n.c.
[chise/ruby.git] / chise / chisedb.rb
index b2f898b..3134fb1 100755 (executable)
@@ -9,6 +9,7 @@ module CHISE
 
     def initialize
       @ds = DataSource.new
+      @byids_db = {}
     end
 
     def location() @ds.location; end
@@ -18,5 +19,41 @@ module CHISE
     def load_feature(n, cid) @ds.load_feature(n, cid) end
     def each_feature() @ds.each_feature {|f| yield f } end
     def each_ccs() @ds.each_ccs {|c| yield c } end
+
+    def get_by_ids_db(n)
+      @byids_db[n] = ByIDS_DB.new(@ds, n) if @byids_db[n].nil?
+      @byids_db[n]
+    end
+  end
+
+  class ByIDS_DB
+    include ChiseValue
+    include TableAccessModule
+
+    def initialize(ds, name)
+      @ds, @name = ds, name
+      @category, @keyvalue = "character", "by_ids"
+      reset
+    end
+
+    def decode(ids)
+      setup_db
+      return nil if @db.nil?
+      parse_c_string(@db.get(ids))
+    end
+
+    def set_decoded_char(ids, cid)
+      setup_db(true)
+      raise "@db is nil." if @db.nil?
+      @db.put(ids, format_char_id(cid))
+    end
+
+    def each
+      setup_db
+      raise "@db is nil." if @db.nil?
+      @db.each {|k, v|
+       yield(parse_value(k), parse_c_string(v))
+      }
+    end
   end
 end