1*eabc0478Schristos /* $NetBSD: vint64ops.h,v 1.6 2024/08/18 20:46:50 christos Exp $ */ 2b8ecfcfeSchristos 3b8ecfcfeSchristos /* 4b8ecfcfeSchristos * vint64ops.h - operations on 'vint64' values 5b8ecfcfeSchristos * 6b8ecfcfeSchristos * Written by Juergen Perlinger (perlinger@ntp.org) for the NTP project. 7b8ecfcfeSchristos * The contents of 'html/copyright.html' apply. 8b8ecfcfeSchristos * ---------------------------------------------------------------------- 9b8ecfcfeSchristos * This is an attempt to get the vint64 calculations stuff centralised. 10b8ecfcfeSchristos */ 11b8ecfcfeSchristos #ifndef VINT64OPS_H 12b8ecfcfeSchristos #define VINT64OPS_H 13b8ecfcfeSchristos 14b8ecfcfeSchristos /* signed/unsigned compare. returns 1/0/-1 if lhs >/=/< rhs */ 15b8ecfcfeSchristos extern int icmpv64(const vint64 * lhs, const vint64 * rhs); 16b8ecfcfeSchristos extern int ucmpv64(const vint64 * lhs, const vint64 * rhs); 17b8ecfcfeSchristos 18b8ecfcfeSchristos /* add / subtract */ 19b8ecfcfeSchristos extern vint64 addv64(const vint64 *lhs, const vint64 *rhs); 20b8ecfcfeSchristos extern vint64 addv64i32(const vint64 * lhs, int32_t rhs); 21b8ecfcfeSchristos extern vint64 addv64u32(const vint64 * lhs, uint32_t rhs); 22b8ecfcfeSchristos 23b8ecfcfeSchristos extern vint64 subv64(const vint64 *lhs, const vint64 *rhs); 24b8ecfcfeSchristos extern vint64 subv64i32(const vint64 * lhs, int32_t rhs); 25b8ecfcfeSchristos extern vint64 subv64u32(const vint64 * lhs, uint32_t rhs); 26b8ecfcfeSchristos 27b8ecfcfeSchristos /* parsing. works like strtoul() or strtoull() */ 28*eabc0478Schristos extern vint64 strtouv64(char * begp, char ** endp, int base); 29b8ecfcfeSchristos 30b8ecfcfeSchristos #endif /*!defined(VINT64OPS_H)*/ 31