ACC SHELL

Path : /proc/self/root/usr/share/YaST2/data/devtools/pluglib-bindings/swig/blocxx/
File Upload :
Current File : //proc/self/root/usr/share/YaST2/data/devtools/pluglib-bindings/swig/blocxx/string.i

/*
 * file:	blocxx/_string.i
 * author:	Martin Lazar <mlazar@suse.cz>
 *
 * BloCxx string typemaps and helpers
 *
 * $Id: string.i 57030 2009-04-29 11:10:24Z lslezak $
 */

class BLOCXX_NAMESPACE::String;

%{

#include <blocxx/String.hpp>

/* convert BloCxx::String to SV */
bool FROM_BLOCXX_STRING(SV *&sv, const BLOCXX_NAMESPACE::String *x, int size, const swig_type_info *t) {
    sv_setpv(sv,x->c_str());
    return true;
}

/* convert SV to BloCxx::String */
bool TO_BLOCXX_STRING(SV* sv, BLOCXX_NAMESPACE::String *x, int size, const swig_type_info *t) { 
    *x = BLOCXX_NAMESPACE::String(SvPV_nolen(sv));
    return true;
}

%}


%typemap(in) BLOCXX_NAMESPACE::String {
    STRLEN len;
    const char *ptr = SvPV($input, len);
    $1 = ptr ? BLOCXX_NAMESPACE::String(ptr, len) : BLOCXX_NAMESPACE::String();
}

%typemap(out) BLOCXX_NAMESPACE::String {
    if (argvi >= items) EXTEND(sp, 1);
    sv_setpv($result = sv_newmortal(), $1.c_str());
    ++argvi;
}

%typemap(in) BLOCXX_NAMESPACE::String* (BLOCXX_NAMESPACE::String temp), BLOCXX_NAMESPACE::String& (BLOCXX_NAMESPACE::String temp)
{
    SV *sv;
    if (!SvROK($input) || !(sv = (SV*)SvRV($input)))
	SWIG_croak("Type error in argument $argnum of $symname. Expected a REFERENCE to STRING.\n");
    STRLEN len;
    const char *ptr = SvPV(sv, len);
    if (!ptr)
        SWIG_croak("Undefined variable in argument $argnum of $symname.");
    temp = ptr ? BLOCXX_NAMESPACE::String(ptr, len) : BLOCXX_NAMESPACE::String();
    $1 = &temp;
}

%typemap(argout) BLOCXX_NAMESPACE::String*, BLOCXX_NAMESPACE::String&
{
    SV *sv = (SV *)SvRV($input);
    sv_setpv(sv, $1->c_str());
}

ACC SHELL 2018