Les différents C-types du module de types acceptent chacun des valeurs bien spécifiques. En effet, pour qu'un objet soit considéré comme valide pour un C-type, voire un δ-type, donné il doit répondre à certaines règles. Les couples (C-types,Valeurs) sont donnés dans le tabeau qui suit:
Tableau 5-1. Valeurs admises pour les C-types de base
| C-Type | Type Java des Valeurs |
|---|---|
| integer | java.lang.Long |
| boolean | java.lang.Boolean |
| string | java.lang.String |
| float | java.lang.Double |
| ListCT | java.util.List |
| SetCT | java.util.Set |
| RecordCT | arom.kr.util.Record |
| Avertissement |
Pour les valeurs des C-types ListCT et SetCT, il est à noter que deux comportements sont possibles. Si l'on prend l'exemple d'une variable typée par ListCT
Ces comportement sont également vrais pour les valeurs des types SetCT. |
La descrition du comportement des objets valuant des ListCT et SetCT lève un problème qui devra également être pris en compte par les nouveaux C-types. En effet, les instances permettent à des écouteurs d'être avertis lorsque la valeur d'un de ses slots est modifiée. Or, si il est possible de modifier la valeur d'un slot sans passer par les méthodes de l'API (setValue()), l'instance n'est pas avertie qu'une modification a eu lieu et elle ne peut donc pas notifier ses propres écouteurs.
C'est pour remédier à ce problème que le concept de MutableObject a été définie. L'interface MutableObject doit être implémentée par tout Objet (Valeur de C-types) dont l'état interne peut changer. D'autre part les AMInstance tout comme les valeurs des C-types construits implémentent l'interface MutableObjectListener. Ces listeners s'enregistrent auprès des MutableObject qui les composent. Ainsi, lorsqu'un tel Objet verra son état changé, il notifiera ses listeners. Cette solution permet donc aux AMInstances d'etre avertis lorsque l'état interne d'un de ses slots est modifié. Mais elle permet également aux valeurs de C-types construits, tel que les List ou les Set d'etre notifiées lorsqu'un élémént de leur valeur, ici un élément de la collection, est modifié. Ces valeurs construites peuvent alors eux-meme notifier leurs éventuelles listeners.
Il est à noter que, par conséquent, ce sont des implémentations particulières de List et de Set qui sont utilisées dans l'implémentation d'AROM afin qu'elles soient également des MutableObject et des MutableObjectListener.