12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #include "triple.h"
- // Extern inline prototypes.
- LSUP_Term *LSUP_triple_pos (const LSUP_Triple *trp, LSUP_TriplePos n);
- LSUP_Buffer *LSUP_btriple_pos (const LSUP_BufferTriple *trp, LSUP_TriplePos n);
- LSUP_Triple *
- LSUP_triple_new(LSUP_Term *s, LSUP_Term *p, LSUP_Term *o)
- {
- LSUP_Triple *spo = malloc (sizeof (*spo));
- if (!spo) return NULL;
- if (UNLIKELY (LSUP_triple_init (spo, s, p, o))) {
- free (spo);
- return NULL;
- }
- return spo;
- }
- LSUP_Triple *
- LSUP_triple_new_from_btriple (const LSUP_BufferTriple *sspo)
- {
- LSUP_Triple *spo = malloc (sizeof (*spo));
- if (!spo) return NULL;
- spo->s = LSUP_term_new_from_buffer (sspo->s);
- spo->p = LSUP_term_new_from_buffer (sspo->p);
- spo->o = LSUP_term_new_from_buffer (sspo->o);
- return spo;
- }
- LSUP_BufferTriple *
- LSUP_btriple_new_from_triple (const LSUP_Triple *spo)
- {
- LSUP_BufferTriple *sspo = malloc (sizeof (*sspo));
- if (!sspo) return NULL;
- sspo->s = LSUP_buffer_new_from_term (spo->s);
- sspo->p = LSUP_buffer_new_from_term (spo->p);
- sspo->o = LSUP_buffer_new_from_term (spo->o);
- return sspo;
- }
- LSUP_rc
- LSUP_triple_init (LSUP_Triple *spo, LSUP_Term *s, LSUP_Term *p, LSUP_Term *o)
- {
- spo->s = s;
- spo->p = p;
- spo->o = o;
- return LSUP_OK;
- }
- void
- LSUP_triple_done (LSUP_Triple *spo)
- {
- if (UNLIKELY (!spo)) return;
- LSUP_term_done (spo->s);
- LSUP_term_done (spo->p);
- LSUP_term_done (spo->o);
- }
- void
- LSUP_triple_free (LSUP_Triple *spo)
- {
- if (UNLIKELY (!spo)) return;
- LSUP_term_free (spo->s);
- LSUP_term_free (spo->p);
- LSUP_term_free (spo->o);
- free (spo);
- }
- /* Inline extern prototypes. */
- LSUP_Key LSUP_triple_hash (const LSUP_Triple *trp);
|