class Traildb::TrailDBEventFilter

Public Class Methods

new(db, query) click to toggle source
Calls superclass method
# File lib/traildb.rb, line 397
def initialize(db, query)
  super Traildb.tdb_event_filter_new()
  if !query[0][0].is_a? Array
    query = [query]
  end
  query.each_with_index do |clause, i|
    if i > 0
      ret = Traildb.tdb_event_filter_new_clause(self)
      raise TrailDBError.new("Out of memory in create_filter", ret) if ret != 0
    end
    clause.each do |term|
      ret = 0
      if term.size == 2 and term[0].is_a? Integer and term[0].is_a? Integer
        start_time, end_time = term
        ret = Traildb.tdb_event_filter_add_time_range(self, start_time, end_time)
      else
        is_negative = false
        if term.size == 3
          field, value, is_negative = term
        else
          field, value = term
        end
        item = begin
          db.get_item(field, value)
        rescue TrailDBError, ValueError
          0
        end
        ret = Traildb.tdb_event_filter_add_term(self, item, is_negative ? 1 : 0)
      end
      raise TrailDBError.new("Out of memory in create_filter", ret) if ret != 0
    end
  end
end
release(ptr) click to toggle source
# File lib/traildb.rb, line 431
def self.release(ptr)
  Traildb.tdb_event_filter_free(ptr)
end