]> rtime.felk.cvut.cz Git - frescor/frsh.git/blob - fres/contract/fres_contract.h
Removed gavl_node from contract as the contract container is very application specific
[frescor/frsh.git] / fres / contract / fres_contract.h
1 #ifndef FRES_CONTRACT_H
2 #define FRES_CONTRACT_H
3
4 #include <fres_blocks.h>
5 #include <fres_container.h>
6 #include <ul_gavl.h>
7 #include <fres_contract_type.h>
8 #include <fres_contract_idl.h>
9
10 struct fres_contract {
11         fres_contract_id_t id;
12         struct fres_container *container;       /**< Pointer to the container (opaque type). */
13 };
14
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);
18
19 #define FRES_CONTRACT_ACCESSOR(type)                                    \
20         static inline int                                               \
21         fres_contract_add_##type(struct fres_contract *contract,        \
22                                  fres_block_##type *block)              \
23         {                                                               \
24                 return fres_container_add_##type(contract->container,   \
25                                                  block);                \
26         }                                                               \
27         static inline fres_block_##type *                               \
28         fres_contract_get_##type(struct fres_contract *contract)        \
29         {                                                               \
30                 return fres_container_get_##type(contract->container);  \
31         }                                                               \
32         static inline void                                              \
33         fres_contract_del_##type(struct fres_contract *contract)        \
34         {                                                               \
35                 fres_container_del_##type(contract->container);         \
36         }
37
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)
43
44 #endif