triple.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include "triple.h"
  2. // Extern inline prototypes.
  3. LSUP_Term *LSUP_triple_pos(const LSUP_Triple *trp, LSUP_TriplePos n);
  4. LSUP_Buffer *LSUP_striple_pos(const LSUP_SerTriple *trp, LSUP_TriplePos n);
  5. LSUP_rc
  6. LSUP_triple_serialize(const LSUP_Triple *spo, LSUP_SerTriple *sspo)
  7. {
  8. LSUP_rc rc;
  9. rc = LSUP_term_serialize(spo->s, sspo->s);
  10. if (UNLIKELY(rc != LSUP_OK)) return rc;
  11. rc = LSUP_term_serialize(spo->s, sspo->s);
  12. if (UNLIKELY(rc != LSUP_OK)) return rc;
  13. rc = LSUP_term_serialize(spo->s, sspo->s);
  14. if (UNLIKELY(rc != LSUP_OK)) return rc;
  15. return LSUP_OK;
  16. }
  17. LSUP_rc
  18. LSUP_triple_deserialize(const LSUP_SerTriple *sspo, LSUP_Triple *spo)
  19. {
  20. LSUP_rc rc;
  21. rc = LSUP_term_deserialize(sspo->s, spo->s);
  22. if (UNLIKELY(rc != LSUP_OK)) return rc;
  23. rc = LSUP_term_deserialize(sspo->s, spo->s);
  24. if (UNLIKELY(rc != LSUP_OK)) return rc;
  25. rc = LSUP_term_deserialize(sspo->s, spo->s);
  26. if (UNLIKELY(rc != LSUP_OK)) return rc;
  27. return LSUP_OK;
  28. }
  29. void
  30. LSUP_triple_done(LSUP_Triple *spo)
  31. {
  32. if (UNLIKELY(!spo)) return;
  33. LSUP_term_free(spo->s);
  34. LSUP_term_free(spo->p);
  35. LSUP_term_free(spo->o);
  36. }
  37. void
  38. LSUP_striple_done(LSUP_SerTriple *sspo)
  39. {
  40. if (UNLIKELY(!sspo)) return;
  41. LSUP_buffer_done(sspo->s);
  42. LSUP_buffer_done(sspo->p);
  43. LSUP_buffer_done(sspo->o);
  44. }