To provide access to feature data, you must implement feature model. As such, IFeatureModel usually acts as an adapter between your application data and the LuciadCPillar Map. The model provides Feature objects, which are typically derived from your internal domain model.

To retrieve the features, use the method query. You can use expressions to get only those features you are interested in. For more detail on using expressions, see Filtering data with expressions and conditions.

You must implement a feature model in a thread-safe way. The expectations are documented within the feature model.

Uniquely identifying features

You can use feature IDs to identify features. Feature IDs are defined as unsigned 64-bit integers, and must be unique across the model. The feature ID is used in all feature operations such as events, queries, and so on.

If you want to use another type to represent the feature IDs of the features, the mapping between this type and the unsigned 64-bit integer is up to you. Common examples of alternative types are a UUID or a string. In your implementation, you could map this key to the integer, the integer being a counter.

Adding properties to features

Features that have just an ID are not that interesting. Most likely, you want to associate some business data with each feature that you can then use during painting.

Each feature has an associated DataType that describes its property structure. During the creation of the feature, you can assign values to the various properties.

For more information on data types, see Describing a feature structure with a data model.