# Class property-set

Class for storing a set of properties.

    class property-set {
        rule raw ( )
        rule str ( )
        rule propagated ( )
        rule add ( ps )
        rule add-raw ( properties * )
        rule refine ( ps )
        rule get ( feature )
    }

There is 1<->1 correspondence between identity and value. No two instances of the class are equal. To maintain this property, the 'property-set.create' rule should be used to create new instances. Instances are immutable.

1. `rule raw ( )`

   Returns a Jam list of the stored properties.

2. `rule str ( )`

   Returns the string repesentation of the stored properties.

3. `rule propagated ( )`

   Returns a property-set containing all the propagated properties in this property-set.

4. `rule add ( ps )`

   Returns a new property-set containing the union of the properties in this property-set and in `ps`.

   If `ps` contains non-free properties that should override the values in this object, use refine instead.

5. `rule add-raw ( properties * )`

   Link add, except that it takes a list of properties instead of a property-set.

6. `rule refine ( ps )`

   Refines properties by overriding any non-free and non-conditional properties for which a different value is specified in `ps`. Returns the resulting property-set.

7. `rule get ( feature )`

   Returns all the values of `feature`.