Neo4j-Bolt

 view release on metacpan or  search on metacpan

lib/Neo4j/Bolt/NeoValue.xs  view on Meta::CPAN

  if (! SvOK(sv)) {
    return &PL_sv_no;
  }
  SvGETMAGIC(sv);
  if (SvROK(sv)) {
    ref = SvRV(sv);
    if (SvTYPE(ref) < SVt_PVAV) { // scalar ref
      if (SvOBJECT(ref) && sv_isa(sv, "JSON::PP::Boolean")) {
        return &PL_sv_yes;
      }
      if (SvIOK(ref) && SvIV(ref) >> 1 == 0) { // literal \1 or \0
        return &PL_sv_yes;
      }
    }
  }
#if PERL_VERSION_GE(5,36,0)
  else if (SvIsBOOL(sv)) {
    return &PL_sv_yes;
  }
#endif
  return &PL_sv_no;
}

void DESTROY(SV *obj) {
  neo4j_value_t *val = C_PTR_OF(obj, neo4j_value_t);
  return;
}


MODULE = Neo4j::Bolt::NeoValue  PACKAGE = Neo4j::Bolt::NeoValue  

PROTOTYPES: DISABLE


SV *
_new_from_perl (classname, v)
	const char *	classname
	SV *	v

const char *
_neotype (obj)
	SV *	obj

SV *
_as_perl (obj)
	SV *	obj

int
_map_size (obj)
	SV *	obj

SV *
is_bool (obj)
	SV *	obj

void
DESTROY (obj)
	SV *	obj
        PREINIT:
        I32* temp;
        PPCODE:
        temp = PL_markstack_ptr++;
        DESTROY(obj);
        if (PL_markstack_ptr != temp) {
          /* truly void, because dXSARGS not invoked */
          PL_markstack_ptr = temp;
          XSRETURN_EMPTY; /* return empty stack */
        }
        /* must have used dXSARGS; list context implied */
        return; /* assume stack size is correct */



( run in 0.453 second using v1.01-cache-2.11-cpan-5511b514fd6 )