RDFStore

 view release on metacpan or  search on metacpan

RDFStore.xs  view on Meta::CPAN

};

void
RDFStore_RDFNode_new ( package )
	SV*             package

        PREINIT:
        	RDFStore_RDFNode mm;
		SV * node;

        PPCODE:
                if (!SvROK(package)) {
                        STRLEN my_na;
                        char *sclass = SvPV(package, my_na);

			/* allocate mem for the node */
			mm = (RDFStore_RDFNode) rdfstore_node_new();

			if (mm==NULL) {
                        	XSRETURN_UNDEF;
                		};

RDFStore.xs  view on Meta::CPAN


void
RDFStore_RDFNode_getDigest ( me )
	SV*		me

	PREINIT:
                RDFStore_RDFNode mm = (RDFStore_RDFNode)SvIV(SvRV(me));
		int dl=0;
		unsigned char * dd=NULL;

	PPCODE:
        	dd = rdfstore_node_get_digest( mm, &dl );
		if (	( dd != NULL )  &&
			( dl > 0 ) ) {
        		ST(0) = sv_2mortal( newSVpv( dd, dl ) );
			XSRETURN(1);
		} else {
			XSRETURN_UNDEF;
			};

void

RDFStore.xs  view on Meta::CPAN

RDFStore_Resource_new ( package, namespace, localname=NULL, bNode=0 )
	SV*             package
	unsigned char *		namespace
	unsigned char *		localname
	int		bNode

        PREINIT:
        	RDFStore_RDFNode mm;
		SV * resource;

        PPCODE:
                if (!SvROK(package)) {
                        STRLEN my_na;
                        char *sclass = SvPV(package, my_na);

			if (	( namespace != NULL ) &&
				( localname != NULL ) &&
				( strlen( localname ) > 0 ) ) {
				mm = rdfstore_resource_new_from_qname( namespace, strlen(namespace), localname, strlen(localname), (bNode) ? RDFSTORE_NODE_TYPE_BNODE : RDFSTORE_NODE_TYPE_RESOURCE );
			} else {
				if (	( namespace == NULL ) ||

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Resource_getNamespace ( me )
        SV*             me

        PREINIT:
                RDFStore_RDFNode mm = (RDFStore_RDFNode)SvIV(SvRV(me));
		int ll=0;
		unsigned char * ns=NULL;

        PPCODE:
		ns = rdfstore_resource_get_namespace( mm, &ll );

		if ( ll <= 0 ) {
			XSRETURN_UNDEF;
			};

		ST(0) = sv_2mortal( newSVpv( ns, ll ) );

                XSRETURN(1);

void
RDFStore_Resource_getLocalName ( me )
        SV*             me

        PREINIT:
                RDFStore_RDFNode mm = (RDFStore_RDFNode)SvIV(SvRV(me));
		unsigned char * nc=NULL;
		int ll=0;

        PPCODE:
		nc = rdfstore_resource_get_localname( mm, &ll );

		if (	( nc == NULL ) ||
			( ll <= 0 ) ) {
			XSRETURN_UNDEF;
			};

		ST(0) = sv_2mortal( newSVpv( nc, ll ) );

		XSRETURN(1);

void
RDFStore_Resource_getbNode ( me )
	SV*		me

	PREINIT:
                RDFStore_RDFNode mm = (RDFStore_RDFNode)SvIV(SvRV(me));
		unsigned char * bn=NULL;
		int ll=0;

	PPCODE:
		bn = rdfstore_resource_get_bnode( mm, &ll );

		if (	( bn == NULL ) ||
			( ll <= 0 ) ) {
			XSRETURN_UNDEF;
			};

		XPUSHs( sv_2mortal(newSVpv( bn, ll )) );

		XSRETURN(1);

RDFStore.xs  view on Meta::CPAN

	SV*             package
	unsigned char *          content
	int		parseType
	unsigned char *          lang
	unsigned char *		dataType

        PREINIT:
        	RDFStore_RDFNode mm;
		SV * literal;

        PPCODE:
                if (!SvROK(package)) {
                        STRLEN my_na;
                        char *sclass = SvPV(package, my_na);

			/* strlen() is not UTF8 safe - Perl does this with SvLEN() but must SV* ... */
			mm = rdfstore_literal_new( content, ( content != NULL ) ? strlen(content) : 0 , parseType, lang, dataType );

			if ( mm == NULL ) {
				XSRETURN_UNDEF;
                		};

RDFStore.xs  view on Meta::CPAN

	SV*	predicate
	SV*	object
	SV*	context
	int	isreified
	SV*	identifier

        PREINIT:
        	RDFStore_Statement mm;
		SV * statement;

        PPCODE:
                if (!SvROK(package)) {
                        STRLEN my_na;
                        char *sclass = SvPV(package, my_na);

			mm = new_Statement_Object( subject, predicate, object, context, isreified, identifier );

			if ( mm == NULL ) {
				XSRETURN_UNDEF;
                		};
				

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Statement_subject ( me )
	SV*		me

	PREINIT:
                RDFStore_Statement mm = (RDFStore_Statement)SvIV(SvRV(me));
		RDFStore_RDFNode nn=NULL;
		SV * node;

	PPCODE:
		nn  = rdfstore_statement_get_subject( mm );

		if ( nn != NULL ) {
			/* bless() the node */
                        node = sv_newmortal();
                        sv_setref_pv( node, "RDFStore::Resource", (void*) rdfstore_resource_clone( nn ) );
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Statement_predicate ( me )
	SV*		me

	PREINIT:
                RDFStore_Statement mm = (RDFStore_Statement)SvIV(SvRV(me));
		RDFStore_RDFNode nn=NULL;
		SV * node;

	PPCODE:
		nn  = rdfstore_statement_get_predicate( mm );

                if ( nn != NULL ) {
                        /* bless() the node */
                        node = sv_newmortal();
                        sv_setref_pv( node, "RDFStore::Resource", (void*) rdfstore_resource_clone( nn ) );      
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Statement_object ( me )
	SV*		me

	PREINIT:
                RDFStore_Statement mm = (RDFStore_Statement)SvIV(SvRV(me));
		RDFStore_RDFNode nn=NULL;
		SV * node;

	PPCODE:
		nn  = rdfstore_statement_get_object( mm );

                if ( nn != NULL ) {
                        /* bless() the node */
                        node = sv_newmortal();
                        if (  rdfstore_node_get_type( nn ) != RDFSTORE_NODE_TYPE_LITERAL ) {
                        	sv_setref_pv( node, "RDFStore::Resource", (void*) rdfstore_resource_clone( nn ) );      
			} else {
                        	sv_setref_pv( node, "RDFStore::Literal", (void*) rdfstore_literal_clone( nn ) );      
				};

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Statement_context ( me )
	SV*		me

	PREINIT:
                RDFStore_Statement mm = (RDFStore_Statement)SvIV(SvRV(me));
		RDFStore_RDFNode nn=NULL;
		SV * node;

	PPCODE:
		nn  = rdfstore_statement_get_context( mm );

                if ( nn != NULL ) {
                       	/* bless() the node */
                       	node = sv_newmortal();
                       	sv_setref_pv( node, "RDFStore::Resource", (void*) rdfstore_resource_clone( nn ) );      
                       	SvREADONLY_on(SvRV(node));

			XPUSHs( node );

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Statement_getDigest ( me )
	SV*		me

	PREINIT:
                RDFStore_Statement mm = (RDFStore_Statement)SvIV(SvRV(me));
		unsigned char * dd = NULL;
		int dl=0;

	PPCODE:
        	dd = rdfstore_statement_get_digest( mm, &dl );
		if (	( dd != NULL )  &&
			( dl > 0 ) ) {
			ST(0) = sv_2mortal( newSVpv( dd, dl ) );
			XSRETURN(1);
		} else {
			XSRETURN_UNDEF;
			};

void
RDFStore_Statement_toString ( me )
        SV*             me

        PREINIT:
                RDFStore_Statement mm = (RDFStore_Statement)SvIV(SvRV(me));
		unsigned char *	ntriples_rep=NULL;
		int nl=0;

        PPCODE:
		ntriples_rep = rdfstore_statement_to_string( mm, &nl );
	
		if (	( ntriples_rep == NULL ) ||
			( nl <= 0 ) )
			XSRETURN_UNDEF;

                ST(0) = sv_2mortal(newSVpv( ntriples_rep, nl ));

                RDFSTORE_FREE( ntriples_rep );

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Statement_getLabel ( me )
        SV*             me

        PREINIT:
                RDFStore_Statement mm = (RDFStore_Statement)SvIV(SvRV(me));
		unsigned char * label=NULL;
		int ll=0;

        PPCODE:
                label = rdfstore_statement_get_label( mm, &ll );

		if (	( label == NULL ) ||
			( ll <= 0 ) )
			XSRETURN_UNDEF;
		ST(0) = sv_2mortal(newSVpv(label,ll));

		XSRETURN(1);

void

RDFStore.xs  view on Meta::CPAN

	int             freetext
	int             sync
	int             remote
	char *          host
	int		port

        PREINIT:
                RDFStore mm;
		SV * store;

        PPCODE:
                if (!SvROK(package)) {
                        /* bless() the store cursor */
                        STRLEN my_na;
                        char *sclass = SvPV(package, my_na);

                        /* connect */
			if ( rdfstore_connect( &mm, directory, flags, ( freetext ? freetext : 0 ),( sync ? sync : 0 ),( remote ? remote : 0 ), host, port, NULL,NULL,NULL,&myerror ) != 0 ) {
				XSRETURN_UNDEF;
                                };

RDFStore.xs  view on Meta::CPAN

void
RDFStore_set_context ( me, given_context )
	SV*		me
	SV*		given_context

	PREINIT:
		RDFStore mm = (RDFStore)SvIV(SvRV(me));
		int status=0;
		RDFStore_RDFNode nn=NULL;

	PPCODE:
		if ( ! ( ( SvROK(given_context) ) &&
                         ( sv_isa( given_context, "RDFStore::Resource") ) ) ) {
                        croak("set_context: Invalid statement context\n");
			XSRETURN_UNDEF;
                        };

                nn = (RDFStore_RDFNode)SvIV(SvRV(given_context));

		status=rdfstore_set_context( mm, nn );

RDFStore.xs  view on Meta::CPAN


void
RDFStore_get_context ( me )
	SV*		me

	PREINIT:
		RDFStore mm = (RDFStore)SvIV(SvRV(me));
        	RDFStore_RDFNode	context=NULL;	
		SV * node;

	PPCODE:
		context=rdfstore_get_context( mm );

                if ( context != NULL )  {

			/* bless() the context into a resource */
                        node = sv_newmortal();
                        sv_setref_pv( node, "RDFStore::Resource", (void*) rdfstore_resource_clone(context) );
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

RDFStore.xs  view on Meta::CPAN

void
RDFStore_get_source_uri ( me )
	SV*		me

	PREINIT:
		RDFStore mm = (RDFStore)SvIV(SvRV(me));
		int status=0;
		char	uri[RDFSTORE_MAX_URI_LENGTH];
		int	ll=0;

	PPCODE:
		status=rdfstore_get_source_uri( mm, uri ); /* should return the len too due to UTF-8 story... */

		if ( status )
			XSRETURN_UNDEF;
		ll = strlen(uri);

		ST(0) = sv_2mortal(newSVpv(uri,ll));

		XSRETURN(1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_elements ( me )
	SV*		me

	PREINIT:
		RDFStore mm = (RDFStore)SvIV(SvRV(me));
		RDFStore_Iterator       cc;
		SV * iterator;

	PPCODE:
                cc = rdfstore_elements( mm );

		if ( cc != NULL ) {
                	iterator = sv_newmortal();
                	sv_setref_pv( iterator, "RDFStore::Iterator", (void*)cc);
                	SvREADONLY_on(SvRV(iterator));

			XPUSHs( iterator );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN

		int i=0;
		RDF_Triple_Pattern *	tp=NULL;
		STRLEN			len;
		RDFStore_Iterator	cc;
		SV * iterator;
		SV ** hval=NULL;
		AV * list=NULL;
		SV * node=NULL;
		int search_type=0;
		
	PPCODE:
		if( ! SvROK(rpn) )
			XSRETURN_UNDEF;

		tp = rdfstore_triple_pattern_new();

		if ( tp == NULL ) {
			XSRETURN_UNDEF;
			};

		hval = hv_fetch( (HV*) SvRV(rpn), "s", 1, 0);

RDFStore.xs  view on Meta::CPAN

	SV*		resource	
	SV*		given_context	

	PREINIT :
		RDFStore mm = (RDFStore)SvIV(SvRV(me));
		RDFStore_RDFNode res=NULL;
		RDFStore_RDFNode ctx=NULL;
		RDFStore_Iterator cc;
		SV * iterator;

	PPCODE:
		if ( ! ( ( SvROK(resource) ) &&
                         ( sv_isa( resource, "RDFStore::Resource") ) ) ) {
                        croak("fetch_object: Invalid resource\n");
			XSRETURN_UNDEF;
                        };

		if (    ( given_context != NULL ) &&
                        ( given_context != &PL_sv_undef ) &&
                        ( SvTRUE(given_context) ) ) {
                        if ( ! ( ( SvROK(given_context) ) &&

RDFStore.xs  view on Meta::CPAN

void
RDFStore_Iterator_new ( package, store )
	SV*		package
        RDFStore 	store

	PREINIT:
		RDFStore_Iterator context;
		SV * iterator;
		store = NULL;

	PPCODE:
		if (!SvROK(package)) {
			/* bless() the store cursor */
            		STRLEN my_na;
            		char *sclass = SvPV(package, my_na);
			context = rdfstore_elements( store );

            		iterator = sv_newmortal();
            		sv_setref_pv( iterator, sclass, (void*)context);
            		SvREADONLY_on(SvRV(iterator));

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_next ( me )
	SV*		me

	PREINIT:
        	RDFStore_Statement ss;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * statement;

	PPCODE:
		ss = rdfstore_iterator_next ( context );

                if ( ss != NULL )  {
			/* bless() the statement */
                        statement = sv_newmortal();
                        sv_setref_pv( statement, "RDFStore::Statement", (void*)ss);
                        SvREADONLY_on(SvRV(statement));

			XPUSHs( statement );

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_next_subject ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode resource;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		resource = rdfstore_iterator_next_subject ( context );

                if ( resource != NULL )  {
			/* bless() the node */
                        node = sv_newmortal();
                        sv_setref_pv( node, "RDFStore::Resource", (void*)resource);
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_next_predicate ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode resource;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		resource = rdfstore_iterator_next_predicate ( context );

		if ( resource != NULL )  {
                        node = sv_newmortal();
                        sv_setref_pv( node, "RDFStore::Resource", (void*)resource); 
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_next_object ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode object;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		object = rdfstore_iterator_next_object ( context );

		if ( object != NULL )  {
                        node = sv_newmortal();
                        sv_setref_pv( node, ( rdfstore_node_get_type( object ) != RDFSTORE_NODE_TYPE_LITERAL ) ? "RDFStore::Resource" : "RDFStore::Literal", (void*)object); 
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

                        XSRETURN(1);    

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_next_context ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode resource;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		resource = rdfstore_iterator_next_context ( context );

		if ( resource != NULL )  {
                        node = sv_newmortal();
                        sv_setref_pv( node, "RDFStore::Resource", (void*)resource); 
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_current ( me )
	SV*		me

	PREINIT:
        	RDFStore_Statement ss;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * statement;

	PPCODE:
		ss = rdfstore_iterator_current ( context );

		if ( ss != NULL )  {
			/* bless() the statement */
                        statement = sv_newmortal();
                        sv_setref_pv( statement, "RDFStore::Statement", (void*)ss);
                        SvREADONLY_on(SvRV(statement));

			XPUSHs( statement );

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_current_subject ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode resource;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		resource = rdfstore_iterator_current_subject ( context );

		if ( resource != NULL )  {
                        node = sv_newmortal();
                        sv_setref_pv( node, "RDFStore::Resource", (void*)resource); 
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_current_predicate ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode resource;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		resource = rdfstore_iterator_current_predicate ( context );

		if ( resource != NULL )  {
                        node = sv_newmortal();
                        sv_setref_pv( node, "RDFStore::Resource", (void*)resource); 
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_current_object ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode object;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		object = rdfstore_iterator_current_object ( context );

                if ( object != NULL )  {
                        node = sv_newmortal();
                        sv_setref_pv( node, ( rdfstore_node_get_type( object ) != RDFSTORE_NODE_TYPE_LITERAL ) ? "RDFStore::Resource" : "RDFStore::Literal", (void*)object); 
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_current_context ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode resource;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		resource = rdfstore_iterator_current_context ( context );

		if ( resource != NULL )  {
                        node = sv_newmortal();
                        sv_setref_pv( node, "RDFStore::Resource", (void*)resource); 
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_first ( me )
	SV*		me

	PREINIT:
        	RDFStore_Statement ss;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * statement;

	PPCODE:
		ss = rdfstore_iterator_first ( context );

		if ( ss != NULL )  {
			/* bless() the statement */
                        statement = sv_newmortal();
                        sv_setref_pv( statement, "RDFStore::Statement", (void*)ss);
                        SvREADONLY_on(SvRV(statement));

			XPUSHs( statement );

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_first_subject ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode resource;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		resource = rdfstore_iterator_first_subject ( context );

		if ( resource != NULL )  {
                        node = sv_newmortal();
                        sv_setref_pv( node, "RDFStore::Resource", (void*)resource); 
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_first_predicate ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode resource;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		resource = rdfstore_iterator_first_predicate ( context );

		if ( resource != NULL )  {
                        node = sv_newmortal();
                        sv_setref_pv( node, "RDFStore::Resource", (void*)resource); 
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_first_object ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode object;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		object = rdfstore_iterator_first_object ( context );

                if ( object != NULL )  {
                        node = sv_newmortal();
                        sv_setref_pv( node, ( rdfstore_node_get_type( object ) != RDFSTORE_NODE_TYPE_LITERAL ) ? "RDFStore::Resource" : "RDFStore::Literal", (void*)object); 
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_first_context ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode resource;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		resource = rdfstore_iterator_first_context ( context );

		if ( resource != NULL )  {
                        node = sv_newmortal();
                        sv_setref_pv( node, "RDFStore::Resource", (void*)resource); 
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_each ( me )
	SV*		me

	PREINIT:
        	RDFStore_Statement ss;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * statement;

	PPCODE:
		ss = rdfstore_iterator_each ( context );

		if ( ss != NULL )  {
			/* bless() the statement */
                        statement = sv_newmortal();
                        sv_setref_pv( statement, "RDFStore::Statement", (void*)ss);
                        SvREADONLY_on(SvRV(statement));

			XPUSHs( statement );

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_each_subject ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode resource;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		resource = rdfstore_iterator_each_subject ( context );

		if ( resource != NULL )  {
                        node = sv_newmortal();
                        sv_setref_pv( node, "RDFStore::Resource", (void*)resource); 
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_each_predicate ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode resource;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		resource = rdfstore_iterator_each_predicate ( context );

		if ( resource != NULL )  {
                        node = sv_newmortal();
                        sv_setref_pv( node, "RDFStore::Resource", (void*)resource); 
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_each_object ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode object;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		object = rdfstore_iterator_each_object ( context );

                if ( object != NULL )  {
                        node = sv_newmortal();
                        sv_setref_pv( node, ( rdfstore_node_get_type( object ) != RDFSTORE_NODE_TYPE_LITERAL ) ? "RDFStore::Resource" : "RDFStore::Literal", (void*)object); 
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_each_context ( me )
	SV*		me

	PREINIT:
        	RDFStore_RDFNode resource;	
		RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
		SV * node;

	PPCODE:
		resource = rdfstore_iterator_each_context ( context );

		if ( resource != NULL )  {
                        node = sv_newmortal();
                        sv_setref_pv( node, "RDFStore::Resource", (void*)resource); 
                        SvREADONLY_on(SvRV(node));

			XPUSHs( node );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_duplicate ( me )
	SV*             me

        PREINIT:
                RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
                RDFStore_Iterator duplicate;
		SV * iterator;

	PPCODE:
                duplicate = rdfstore_iterator_duplicate ( context );

		if ( duplicate != NULL ) {
                	iterator = sv_newmortal();
                	sv_setref_pv( iterator, "RDFStore::Iterator", (void*)duplicate);
                	SvREADONLY_on(SvRV(iterator));

			XPUSHs( iterator );

			XSRETURN(1);

RDFStore.xs  view on Meta::CPAN

RDFStore_Iterator_intersect ( me, you )
	SV*             me
	SV*             you

        PREINIT:
                RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
                RDFStore_Iterator context1 = (RDFStore_Iterator)SvIV(SvRV(you));
                RDFStore_Iterator cc;
		SV * iterator;

	PPCODE:
                cc = rdfstore_iterator_intersect ( context, context1 );
		if ( cc != NULL ) {
                	iterator = sv_newmortal();
                	sv_setref_pv( iterator, "RDFStore::Iterator", (void*)cc);
                	SvREADONLY_on(SvRV(iterator));

			XPUSHs( iterator );

			XSRETURN(1);
		} else {

RDFStore.xs  view on Meta::CPAN

RDFStore_Iterator_unite ( me, you )
	SV*             me
	SV*             you

        PREINIT:
                RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
                RDFStore_Iterator context1 = (RDFStore_Iterator)SvIV(SvRV(you));
                RDFStore_Iterator cc;
		SV * iterator;

	PPCODE:
                cc = rdfstore_iterator_unite ( context, context1 );
		if ( cc != NULL ) {
                	iterator = sv_newmortal();
                	sv_setref_pv( iterator, "RDFStore::Iterator", (void*)cc);
                	SvREADONLY_on(SvRV(iterator));

			XPUSHs( iterator );

			XSRETURN(1);
		} else {

RDFStore.xs  view on Meta::CPAN

RDFStore_Iterator_subtract ( me, you )
	SV*             me
	SV*             you

        PREINIT:
                RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
                RDFStore_Iterator context1 = (RDFStore_Iterator)SvIV(SvRV(you));
                RDFStore_Iterator cc;
		SV * iterator;

	PPCODE:
                cc = rdfstore_iterator_subtract ( context, context1 );
		if ( cc != NULL ) {
                	iterator = sv_newmortal();
                	sv_setref_pv( iterator, "RDFStore::Iterator", (void*)cc);
                	SvREADONLY_on(SvRV(iterator));

			XPUSHs( iterator );

			XSRETURN(1);
		} else {

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Iterator_complement ( me )
	SV*             me

        PREINIT:
                RDFStore_Iterator context = (RDFStore_Iterator)SvIV(SvRV(me));
                RDFStore_Iterator cc;
		SV * iterator;

	PPCODE:
                cc = rdfstore_iterator_complement ( context );
		if ( cc != NULL ) {
                	iterator = sv_newmortal();
                	sv_setref_pv( iterator, "RDFStore::Iterator", (void*)cc);
                	SvREADONLY_on(SvRV(iterator));

			XPUSHs( iterator );

			XSRETURN(1);
		} else {

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Util_UTF8_cp_to_utf8 ( cp )
        unsigned long cp

        PREINIT:
		unsigned int utf8_size=0;
		unsigned char utf8_buff[RDFSTORE_UTF8_MAXLEN+1]; /* one utf8 char */
                bzero(utf8_buff,RDFSTORE_UTF8_MAXLEN);	

        PPCODE:
		if ( rdfstore_utf8_cp_to_utf8( cp, &utf8_size, utf8_buff ) ) {
			XSRETURN_UNDEF;
			};
		
		memcpy(utf8_buff+utf8_size,"\0",1);

        	ST(0) = sv_2mortal( newSVpv( utf8_buff, utf8_size ) );

		XSRETURN(1);

void
RDFStore_Util_UTF8_utf8_to_cp ( utf8_buff )
        unsigned char * utf8_buff

        PREINIT:
		unsigned long cp=0;
		unsigned int utf8_size=0;

        PPCODE:

        	if ( utf8_buff == NULL )
			XSRETURN_UNDEF;

		if ( ( rdfstore_utf8_is_utf8( utf8_buff, &utf8_size ) ) && ( utf8_size > 1 ) ) {
			if ( rdfstore_utf8_utf8_to_cp( utf8_size, utf8_buff, &cp ) ) {
				XSRETURN_UNDEF;
				};
                } else {
			XSRETURN_UNDEF;

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Util_UTF8_to_utf8 ( string )
        unsigned char * string

        PREINIT:
		unsigned int utf8_size=0;
		unsigned char utf8_buff[RDFSTORE_UTF8_MAXLEN+1]; /* one utf8 char */
                bzero(utf8_buff,RDFSTORE_UTF8_MAXLEN);	

        PPCODE:

        	if ( string == NULL )
			XSRETURN_UNDEF;

		if ( rdfstore_utf8_string_to_utf8( strlen(string), string, &utf8_size, utf8_buff ) ) {
			XSRETURN_UNDEF;
                        };

		memcpy(utf8_buff+utf8_size,"\0",1);

RDFStore.xs  view on Meta::CPAN


void
RDFStore_Util_UTF8_to_utf8_foldedcase ( string )
        unsigned char * string

        PREINIT:
		unsigned int utf8_size=0;
		unsigned char utf8_casefolded_buff[RDFSTORE_UTF8_MAXLEN_FOLD+1]; /* one case-folded utf8 char */
                bzero(utf8_casefolded_buff,RDFSTORE_UTF8_MAXLEN_FOLD);	

        PPCODE:

        	if ( string == NULL )
			XSRETURN_UNDEF;

		if ( rdfstore_utf8_string_to_utf8_foldedcase( strlen(string), string, &utf8_size, utf8_casefolded_buff ) ) {
			XSRETURN_UNDEF;
                        };

		memcpy(utf8_casefolded_buff+utf8_size,"\0",1);

RDFStore.xs  view on Meta::CPAN


PROTOTYPES: DISABLE

void
RDFStore_Util_Digest_computeDigest ( input )
        unsigned char *   input

        PREINIT: 
                unsigned char dd[RDFSTORE_SHA_DIGESTSIZE];

        PPCODE:

        	if (! SvPOK(ST(0)) )
			XSRETURN_UNDEF;
        	rdfstore_digest_digest(input, strlen(input), dd);

        	ST(0) = sv_2mortal( newSVpv( dd, RDFSTORE_SHA_DIGESTSIZE ) );

		XSRETURN(1);

char *



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