ResidueType: Residue properties are now stored in a separate class.
This push is first in a series of major refactorings of how proeprties for
ResidueTypes are handled in Rosetta. I will be discussing more about WHY and
what I did at the developer meeting, but the highlights are thus:
* Properties, such as POLAR, TERMINUS, LIPID, METALBINDING, etc., are no
longer stored in a vector of strings AND a series of is_foo_ bools in
ResidueType; instead, they are stored in a ResidueProperties class, to which
ResidueType has an OP.
* Within ResidueProperties, the properties are stored in a vector of bools
keyed by a ResidueProperty enum.
* enum values are auto-generated by a script, found in core/chemical/
residue_properties.
* The script auto-runs at compile (like update_options) and the generated
code files are not tracked by git. (I modified Scons, cmake, & xcode.)
* To add new properties, simply add a new line to the core/chemical/
residue_properties/general_properties.list file.
* Any property can be accessed by
ResidueType.properties().has_property( PROPERTY ).
* Wrappers still exist in Residue and ResidueType to access current properties
indirectly, (such as is_protein(),) but those could be deprecated if we
decide on that.
----------------------------------------
Unit test status: Pass
Integration test status: 2 changes
rings & carbohydrates: intentional output changes