I've found an error in the FeatureIDE parser so that the relations of the root feature were not correctly stored. Fix in 5780fc1.
I've also simplified the parser so that the list of features and relations do not need to be tracked, but in the future it may be needed for efficiency buidling the feature model, so take into account this change in b8ab2b1 to revert if neccesary.
The last refactor of the FM metamodel gets the get_feature_by_name useless. Removed in 07b811d.
Add a new is_leaf method for features in Feature class.
Add new operation to calculate the number of configurations using only the feature model structure without relying on SAT solver or BDD. In this case, cross-tree constraints are not considered so the resulting number is an upper limit, but it can be calculated for large-scale feature model like the Linux one (see configurations in image below using the famapybot for Telegram). We use the recursive algorithm from Apel et al. 2013 (p. 251, Sec 10.16). It is pending to improve this method using the Fernandez-Amoros et al. 2009 algorithm that also considers certain kinds of cross-tree constraints, but it is more sophisticated to be implemented.
Changes:
get_feature_by_name
useless. Removed in 07b811d.is_leaf
method for features inFeature
class.