ObjStore

 view release on metacpan or  search on metacpan

REP/ODI/ODI.xs  view on Meta::CPAN

{ seek_pole(0); }

void OSPV_hvdict_cs::seek_pole(int end)
{
  reset_2pole = end;
  if (end) { 
    SERIOUS("seek_pole('end') is experimental");
  }
}

void OSPV_hvdict_cs::at()
{
  if (reset_2pole != -1) {
    if (reset_2pole == 0) cs.first();
    else croak("nope");
    reset_2pole = -1;
  }
  if (cs.null()) return;

  OSSV *ossv = (OSSV*) cs.retrieve();
  if (ossv) {
    SV *sv[2] = {
      ((hkey*) ((OSPV_hvdict*)focus())->hv.retrieve_key(cs))->to_sv(),
      osp_thr::ossv_2sv(ossv)
    };
    dSP;
    EXTEND(SP,2);
    PUSHs(sv[0]);
    PUSHs(sv[1]);
    PUTBACK;
  }
}

void OSPV_hvdict_cs::next()
{ at(); cs.next(); }
*/


MODULE = ObjStore::REP::ODI		PACKAGE = ObjStore::REP::ODI

PROTOTYPES: DISABLE

BOOT:
  extern _Application_schema_info ObjStore_REP_ODI_dll_schema_info;
  osp_thr::use("ObjStore::REP::ODI", OSPERL_API_VERSION);
  osp_thr::register_schema("ObjStore::REP::ODI",
	&ObjStore_REP_ODI_dll_schema_info);
  os_index_key(hkey, hkey::rank, hkey::hash);
#ifdef USE_THREADS
  os_collection::set_thread_locking(1);
#else
  os_collection::set_thread_locking(0);
#endif

MODULE = ObjStore::REP::ODI		PACKAGE = ObjStore::REP::ODI::HV

static void
OSPV_hvdict::new(seg, sz)
	SV *seg;
	int sz;
	PPCODE:
	os_segment *area = osp_thr::sv_2segment(ST(1));
	PUTBACK;
	if (sz <= 0) croak("Non-positive cardinality");
	OSSVPV *pv;
	NEW_OS_OBJECT(pv, area, OSPV_hvdict::get_os_typespec(), OSPV_hvdict(sz));
	pv->bless(ST(0));
	return;



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