de.fosd.typechef.featureexpr.sat

DefinedMacro

class DefinedMacro extends DefinedExpr

definition based on a macro, still to be resolved using the macro table (the macro table may not contain DefinedMacro expressions, but only DefinedExternal) assumption: expandedName is unique and may be used for comparison

Linear Supertypes
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. DefinedMacro
  2. DefinedExpr
  3. SingleFeatureExpr
  4. SATFeatureExpr
  5. FeatureExpr
  6. Serializable
  7. AnyRef
  8. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Instance Constructors

  1. new DefinedMacro(name: String, presenceCondition: SATFeatureExpr, expandedName: String, presenceConditionCNF: Susp[FeatureExpr])

Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def &(that: FeatureExpr): FeatureExpr

    Definition Classes
    FeatureExpr
  5. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  6. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  7. def accept(f: (SATFeatureExpr) ⇒ Unit): Unit

    Definition Classes
    DefinedExpr
  8. def and(that: FeatureExpr): FeatureExpr

    Definition Classes
    SATFeatureExprFeatureExpr
  9. final def andNot(that: FeatureExpr): FeatureExpr

    Definition Classes
    FeatureExpr
  10. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  11. def calcCNF: DefinedExpr

    Definition Classes
    DefinedExprSATFeatureExpr
  12. def calcCNFEquiSat: DefinedExpr

    Definition Classes
    DefinedExprSATFeatureExpr
  13. def calcHashCode: Int

    Attributes
    protected
    Definition Classes
    SATFeatureExpr
  14. def calcSize: Int

    Definition Classes
    DefinedExprFeatureExpr
  15. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  16. def collectDistinctFeatureObjects: Set[SingleFeatureExpr]

    Definition Classes
    SATFeatureExprFeatureExpr
  17. def collectDistinctFeatures: Set[String]

    helper function for statistics and such that determines which features are involved in this feature expression

    helper function for statistics and such that determines which features are involved in this feature expression

    Definition Classes
    SATFeatureExprFeatureExpr
  18. def collectDistinctFeatures2: Set[DefinedExternal]

    Definition Classes
    SATFeatureExpr
  19. def countDistinctFeatures: Int

    counts the number of features in this expression for statistic purposes

    counts the number of features in this expression for statistic purposes

    Definition Classes
    SATFeatureExpr
  20. def countSize(): Int

  21. def debug_print(level: Int): String

    Definition Classes
    DefinedExprFeatureExpr
  22. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  23. final def equals(that: Any): Boolean

    Definition Classes
    SATFeatureExpr → AnyRef → Any
  24. def equiv(that: FeatureExpr): FeatureExpr

    Definition Classes
    FeatureExpr
  25. def equivalentTo(that: FeatureExpr, fm: FeatureModel): Boolean

    Definition Classes
    FeatureExpr
  26. def equivalentTo(that: FeatureExpr): Boolean

    uses a SAT solver to determine whether two expressions are equivalent.

    uses a SAT solver to determine whether two expressions are equivalent.

    for performance reasons, it checks pointer equivalence first, but won't use the recursive equals on aexpr (there should only be few cases when equals is more accurate than eq, which are not worth the performance overhead)

    Definition Classes
    FeatureExpr
  27. def evaluate(selectedFeatures: Set[String]): Boolean

    TODO: This probably would be the correct way, but it breaks my product generation code, and i cannot fix it right now

    TODO: This probably would be the correct way, but it breaks my product generation code, and i cannot fix it right now

    Definition Classes
    DefinedMacroSATFeatureExprFeatureExpr
  28. val expandedName: String

  29. def feature: String

    Definition Classes
    DefinedMacroDefinedExprSingleFeatureExpr
  30. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  31. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  32. def getConfIfSimpleAndExpr(): Option[(Set[SingleFeatureExpr], Set[SingleFeatureExpr])]

    If this expr is a simple concatenation of SingleFeatureExpressions (and their negations), then this method returns the expression as a set of singleFeatureExpr that occur as enabled (disabled).

    If this expr is a simple concatenation of SingleFeatureExpressions (and their negations), then this method returns the expression as a set of singleFeatureExpr that occur as enabled (disabled). If the expression is more complex, None is returned.

    returns

    Definition Classes
    SingleFeatureExprFeatureExpr
  33. def getConfIfSimpleOrExpr(): Option[(Set[SingleFeatureExpr], Set[SingleFeatureExpr])]

    Definition Classes
    SingleFeatureExprFeatureExpr
  34. def getSatisfiableAssignment(featureModel: FeatureModel, interestingFeatures: Set[SingleFeatureExpr], preferDisabledFeatures: Boolean): Option[(List[SingleFeatureExpr], List[SingleFeatureExpr])]

    Definition Classes
    SATFeatureExprFeatureExpr
  35. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  36. def implies(that: FeatureExpr): FeatureExpr

    Definition Classes
    FeatureExpr
  37. def indent(level: Int): String

    Attributes
    protected
    Definition Classes
    FeatureExpr
  38. def isContradiction(fm: FeatureModel): Boolean

    Definition Classes
    FeatureExpr
  39. final def isContradiction(): Boolean

    Definition Classes
    FeatureExpr
  40. def isExternal: Boolean

    Definition Classes
    DefinedMacroDefinedExpr
  41. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  42. lazy val isResolved: Boolean

    checks whether there is some unresolved macro (DefinedMacro) somewhere in the expression tree

    checks whether there is some unresolved macro (DefinedMacro) somewhere in the expression tree

    Definition Classes
    SATFeatureExpr
  43. def isSatisfiable(fm: FeatureModel): Boolean

    x.

    x.isSatisfiable(fm) is short for x.and(fm).isSatisfiable but is faster because FM is cached

    Definition Classes
    SATFeatureExprFeatureExpr
  44. final def isSatisfiable(): Boolean

    Definition Classes
    FeatureExpr
  45. def isSmall(): Boolean

    heuristic to determine whether a feature expression is small (may be used to decide whether to inline it or not)

    heuristic to determine whether a feature expression is small (may be used to decide whether to inline it or not)

    use with care

    Definition Classes
    SATFeatureExpr
  46. def isTautology(fm: FeatureModel): Boolean

    FM -> X is tautology if FM.

    FM -> X is tautology if FM.implies(X).isTautology or !FM.and.(x.not).isSatisfiable

    not final for optimization purposes

    Definition Classes
    FeatureExpr
  47. final def isTautology(): Boolean

    Definition Classes
    FeatureExpr
  48. def mapDefinedExpr(f: (DefinedExpr) ⇒ SATFeatureExpr, cache: Map[SATFeatureExpr, SATFeatureExpr]): SATFeatureExpr

    map function that applies to all leafs in the feature expression (i.

    map function that applies to all leafs in the feature expression (i.e. all DefinedExpr nodes)

    Definition Classes
    DefinedExprSATFeatureExpr
  49. def mex(that: FeatureExpr): FeatureExpr

    Definition Classes
    FeatureExpr
  50. val name: String

  51. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  52. def not(): SATFeatureExpr

    Definition Classes
    SATFeatureExprFeatureExpr
  53. def notS(): SATFeatureExpr

    Definition Classes
    SATFeatureExpr
  54. final def notify(): Unit

    Definition Classes
    AnyRef
  55. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  56. def or(that: FeatureExpr): FeatureExpr

    Definition Classes
    SATFeatureExprFeatureExpr
  57. final def orNot(that: FeatureExpr): FeatureExpr

    Definition Classes
    FeatureExpr
  58. val presenceCondition: SATFeatureExpr

  59. val presenceConditionCNF: Susp[FeatureExpr]

  60. def print(p: Writer): Unit

    Prints the textual representation of this formula on a Writer.

    Prints the textual representation of this formula on a Writer. The result shall be equivalent to p.print(toTextExpr), but it should avoid consuming so much temporary space.

    p

    the output Writer

    Definition Classes
    FeatureExpr
  61. lazy val resolveToExternal: SATFeatureExpr

    replaces all DefinedMacro tokens by their full expansion.

    replaces all DefinedMacro tokens by their full expansion.

    the resulting feature expression contains only DefinedExternal nodes as leafs and can be printed and read again

    Definition Classes
    SATFeatureExpr
  62. def satName: String

    Definition Classes
    DefinedMacroDefinedExpr
  63. final lazy val size: Int

    Definition Classes
    FeatureExpr
  64. def substitute(feature: SingleFeatureExpr, replacement: SATFeatureExpr): SATFeatureExpr

    Definition Classes
    DefinedMacroSATFeatureExpr
  65. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  66. def toCNF(): SATFeatureExpr

    creates an equivalent feature expression in CNF

    creates an equivalent feature expression in CNF

    be aware of exponential explosion. consider using toCnfEquiSat instead if possible

    Definition Classes
    SATFeatureExpr
  67. def toCnfEquiSat(): SATFeatureExpr

    creates an equisatisfiable feature expression in CNF

    creates an equisatisfiable feature expression in CNF

    the result is not equivalent but will yield the same result in satisifiability tests with SAT solvers

    the algorithm introduces new variables and is faster than toCNF

    Definition Classes
    SATFeatureExpr
  68. def toString(): String

    Converts this formula to a textual expression.

    Converts this formula to a textual expression.

    Definition Classes
    DefinedMacroFeatureExpr → AnyRef → Any
  69. def toTextExpr: String

    Definition Classes
    DefinedMacroFeatureExpr
  70. final def unary_!: FeatureExpr

    Definition Classes
    FeatureExpr
  71. def unique(feature: SingleFeatureExpr): FeatureExpr

    unique existential quantification over feature "feature".

    unique existential quantification over feature "feature".

    This has the effect of substituting the feature by true and false respectively and returning the xor of both: this[feature->True] xor this[feature->False]

    It can be seen as identifying under which condition the feature matters for the result of the formula

    Definition Classes
    SATFeatureExprFeatureExpr
  72. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  73. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  74. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  75. def xor(that: FeatureExpr): FeatureExpr

    Definition Classes
    FeatureExpr
  76. final def |(that: FeatureExpr): FeatureExpr

    Definition Classes
    FeatureExpr

Inherited from DefinedExpr

Inherited from SingleFeatureExpr

Inherited from SATFeatureExpr

Inherited from FeatureExpr

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped