]> rtime.felk.cvut.cz Git - frescor/frsh.git/blob - fres/contract/fres_contract.h
Our sources now use the fres_ prefix
[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         gavl_node_t node;
14 };
15
16 struct fres_contract *fres_contract_new(void);
17 void fres_contract_destroy(struct fres_contract *contract);
18 struct fres_contract *fres_contract_duplicate(struct fres_contract *src);
19
20 #define FRES_CONTRACT_ACCESSOR(type)                                    \
21         static inline int                                               \
22         fres_contract_add_##type(struct fres_contract *contract,                \
23                                fres_block_##type *block)                        \
24         {                                                               \
25                 return fres_container_add_##type(contract->container,   \
26                                                block);                  \
27         }                                                               \
28         static inline fres_block_##type *                                       \
29         fres_contract_get_##type(struct fres_contract *contract)                \
30         {                                                               \
31                 return fres_container_get_##type(contract->container);  \
32         }                                                               \
33         static inline void                                              \
34         fres_contract_del_##type(struct fres_contract *contract)                \
35         {                                                               \
36                 fres_container_del_##type(contract->container);         \
37         }
38
39 FRES_CONTRACT_ACCESSOR(label)
40 FRES_CONTRACT_ACCESSOR(resource)
41 FRES_CONTRACT_ACCESSOR(basic)
42 FRES_CONTRACT_ACCESSOR(timing_reqs)
43 FRES_CONTRACT_ACCESSOR(spare_capacity)
44
45 #endif