1 #ifndef FRES_CONTRACT_H
2 #define FRES_CONTRACT_H
4 #include <fres_blocks.h>
5 #include <fres_container.h>
7 #include <fres_contract_type.h>
8 #include <fres_contract_idl.h>
10 struct fres_contract {
11 fres_contract_id_t id;
12 struct fres_container *container; /**< Pointer to the container (opaque type). */
15 struct fres_contract *fres_contract_new(void);
16 void fres_contract_destroy(struct fres_contract *contract);
17 struct fres_contract *fres_contract_duplicate(struct fres_contract *src);
19 #define FRES_CONTRACT_ACCESSOR(type) \
21 fres_contract_add_##type(struct fres_contract *contract, \
22 fres_block_##type *block) \
24 return fres_container_add_##type(contract->container, \
27 static inline fres_block_##type * \
28 fres_contract_get_##type(struct fres_contract *contract) \
30 return fres_container_get_##type(contract->container); \
33 fres_contract_del_##type(struct fres_contract *contract) \
35 fres_container_del_##type(contract->container); \
38 FRES_CONTRACT_ACCESSOR(label)
39 FRES_CONTRACT_ACCESSOR(resource)
40 FRES_CONTRACT_ACCESSOR(basic)
41 FRES_CONTRACT_ACCESSOR(timing_reqs)
42 FRES_CONTRACT_ACCESSOR(spare_capacity)