1 struct _unicap_property
    2 {
    3   char identifier[128];         //mandatory
    4   char category[128];
    5   char unit[128];               //
    6 
    7   // list of properties identifier which value / behaviour may change if this property changes
    8   char **relations;
    9   int relations_count;
   10 
   11   union
   12   {
   13     double value;               // default if enumerated
   14     char menu_item[128];
   15   };
   16 
   17   union
   18   {
   19     unicap_property_range_t range;      // if UNICAP_USE_RANGE is asserted
   20     unicap_property_value_list_t value_list;    // if UNICAP_USE_VALUE_LIST is asserted
   21     unicap_property_menu_t menu;
   22   };
   23 
   24   double stepping;
   25 
   26   unicap_property_type_enum_t type;
   27   u_int64_t flags;              // defaults if enumerated
   28   u_int64_t flags_mask;         // defines capabilities if enumerated
   29 
   30   // optional data
   31   void *property_data;
   32   size_t property_data_size;
   33 };
   34 
   35 typedef struct _unicap_property unicap_property_t;