unit.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #ifndef _PCILIB_UNIT_H
  2. #define _PCILIB_UNIT_H
  3. #include <pcilib.h>
  4. #define PCILIB_UNIT_INVALID ((pcilib_unit_t)-1)
  5. #define PCILIB_UNIT_TRANSFORM_INVALID ((pcilib_unit_transform_t)-1)
  6. #define PCILIB_MAX_TRANSFORMS_PER_UNIT 16 /**< Limits number of supported transforms per unit */
  7. typedef struct pcilib_unit_context_s *pcilib_unit_context_t;
  8. /**
  9. * unit transformation routines
  10. */
  11. typedef struct {
  12. char *unit; /**< Name of the resulting unit */
  13. char *transform; /**< String, similar to view formula, explaining transform to this unit */
  14. } pcilib_unit_transform_t;
  15. typedef struct {
  16. char *name; /**< Unit name */
  17. pcilib_unit_transform_t transforms[PCILIB_MAX_TRANSFORMS_PER_UNIT + 1]; /**< Transforms to other units */
  18. } pcilib_unit_description_t;
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22. int pcilib_add_units(pcilib_t *ctx, size_t n, const pcilib_unit_description_t *desc);
  23. pcilib_unit_t pcilib_find_unit_by_name(pcilib_t *ctx, const char *unit);
  24. pcilib_unit_transform_t *pcilib_find_transform_by_unit_names(pcilib_t *ctx, const char *from, const char *to);
  25. // value is modified
  26. int pcilib_transform_unit(pcilib_t *ctx, pcilib_unit_transform_t *trans, pcilib_value_t *value);
  27. int pcilib_transform_unit_by_name(pcilib_t *ctx, const char *to, pcilib_value_t *value);
  28. #ifdef __cplusplus
  29. }
  30. #endif
  31. #endif /* _PCILIB_UNIT_H */