Class: ActiveFacts::CQL::Compiler::ClauseMatchSideEffect

Inherits:
Object
  • Object
show all
Defined in:
lib/activefacts/cql/compiler/clause.rb

Overview

An instance of ClauseMatchSideEffects is created when the compiler matches an existing fact type. It captures the details that have to be adjusted for the match to be regarded a success.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(phrase, role_ref, num, absorbed_precursors, absorbed_followers, common_supertype, residual_adjectives) ⇒ ClauseMatchSideEffect

Returns a new instance of ClauseMatchSideEffect.



787
788
789
790
791
792
793
794
795
796
797
# File 'lib/activefacts/cql/compiler/clause.rb', line 787

def initialize phrase, role_ref, num, absorbed_precursors, absorbed_followers, common_supertype, residual_adjectives
  @phrase = phrase
  @role_ref = role_ref
  @num = num
  @absorbed_precursors = absorbed_precursors
  @absorbed_followers = absorbed_followers
  @common_supertype = common_supertype
  @residual_adjectives = residual_adjectives
  @cancelled_cost = 0
  trace :matching_fails, "Saving side effects for #{@phrase.term}, absorbs #{@absorbed_precursors}/#{@absorbed_followers}#{@common_supertype ? ', step over supertype '+ @common_supertype.name : ''}" if @absorbed_precursors+@absorbed_followers+(@common_supertype ? 1 : 0) > 0
end

Instance Attribute Details

#absorbed_followersObject (readonly)

Returns the value of attribute absorbed_followers.



785
786
787
# File 'lib/activefacts/cql/compiler/clause.rb', line 785

def absorbed_followers
  @absorbed_followers
end

#absorbed_precursorsObject (readonly)

Returns the value of attribute absorbed_precursors.



785
786
787
# File 'lib/activefacts/cql/compiler/clause.rb', line 785

def absorbed_precursors
  @absorbed_precursors
end

#common_supertypeObject (readonly)

Returns the value of attribute common_supertype.



785
786
787
# File 'lib/activefacts/cql/compiler/clause.rb', line 785

def common_supertype
  @common_supertype
end

#numObject (readonly)

Returns the value of attribute num.



785
786
787
# File 'lib/activefacts/cql/compiler/clause.rb', line 785

def num
  @num
end

#phraseObject (readonly)

Returns the value of attribute phrase.



785
786
787
# File 'lib/activefacts/cql/compiler/clause.rb', line 785

def phrase
  @phrase
end

#residual_adjectivesObject (readonly)

Returns the value of attribute residual_adjectives.



785
786
787
# File 'lib/activefacts/cql/compiler/clause.rb', line 785

def residual_adjectives
  @residual_adjectives
end

#role_refObject (readonly)

Returns the value of attribute role_ref.



785
786
787
# File 'lib/activefacts/cql/compiler/clause.rb', line 785

def role_ref
  @role_ref
end

Instance Method Details

#cancel_cost(c) ⇒ Object



803
804
805
# File 'lib/activefacts/cql/compiler/clause.rb', line 803

def cancel_cost c
  @cancelled_cost += c
end

#costObject



799
800
801
# File 'lib/activefacts/cql/compiler/clause.rb', line 799

def cost
  absorbed_precursors + absorbed_followers + (common_supertype ? 1 : 0) - @cancelled_cost
end

#to_sObject



807
808
809
# File 'lib/activefacts/cql/compiler/clause.rb', line 807

def to_s
  "#{@phrase.inspect} absorbs #{@absorbed_precursors||0}/#{@absorbed_followers||0} at #{@num}#{@common_supertype && ' super '+@common_supertype.name}#{@residual_adjectives ? ' with residual adjectives' : ''}"
end