|
|
__all__ = [ |
__all__ = [ |
'IsInstance', 'IsSubclass', 'Truth', 'Identity', 'Comparison', |
'IsInstance', 'IsSubclass', 'Truth', 'Identity', 'Comparison', |
'IndexedEngine', 'predicate_node_for', 'meta_function' |
'IndexedEngine', 'predicate_node_for', 'meta_function', 'expressionSignature', |
] |
] |
|
|
abstract() |
abstract() |
requires = [] |
requires = [] |
exprs = self.all_exprs |
exprs = self.all_exprs |
for _t, expr, criterion in tests_for(signature, self): |
for _t, expr, criterion in tests_for(signature, self): |
|
Ordering(self, expr).requires(requires) |
|
requires.append(expr) |
|
index_type = bitmap_index_type(self, expr) |
|
if index_type is not None: |
if expr not in exprs: |
if expr not in exprs: |
exprs[expr] = 1 |
exprs[expr] = 1 |
if always_testable(expr): |
if always_testable(expr): |
Ordering(self, expr).requires([]) |
Ordering(self, expr).requires([]) |
Ordering(self, expr).requires(requires) |
index_type(self, expr).add_case(case_id, criterion) |
requires.append(expr) |
|
BitmapIndex(self, expr).add_case(case_id, criterion) |
|
return super(IndexedEngine, self)._add_method(signature, rule) |
return super(IndexedEngine, self)._add_method(signature, rule) |
|
|
def _generate_code(self): |
def _generate_code(self): |
# Replace the entire engine with a new one |
# Replace the entire engine with a new one |
Dispatching(self.function).create_engine(self.__class__) |
Dispatching(self.function).create_engine(self.__class__) |
|
|
|
|
|
|
synchronized() |
synchronized() |
def seed_bits(self, expr, cases): |
def seed_bits(self, expr, cases): |
return BitmapIndex(self, expr).seed_bits(cases) |
return BitmapIndex(self, expr).seed_bits(cases) |
|
|
|
|
|
|
|
when(bitmap_index_type, (IndexedEngine, type(None)))(lambda en,ex:None) |
|
|
when(bitmap_index_type, (IndexedEngine, IsInstance))(lambda en,ex:TypeIndex) |
when(bitmap_index_type, (IndexedEngine, IsInstance))(lambda en,ex:TypeIndex) |
when(bitmap_index_type, (IndexedEngine, IsSubclass))(lambda en,ex:TypeIndex) |
when(bitmap_index_type, (IndexedEngine, IsSubclass))(lambda en,ex:TypeIndex) |
|
|
|
|
|
|
|
|
|
|
|
|
when(tests_for, (istype(tuple), Engine)) |
when(tests_for, (istype(tuple), Engine)) |
def tests_for_tuple(ob, engine): |
def tests_for_tuple(ob, engine): |
for cls, arg in zip(ob, engine.argnames): |
for cls, arg in zip(ob, engine.argnames): |