Hi, 

    I am new to "PerlEmbed" and "XS" topics.I am trying to code a C
interface 
which calls perl subroutines,which inturn uses structures declared
within 
the C program.Could anyone of you provide details of about this things. 
I do created some perl modules using XS and tried to connect with my 
C interface but I couldn't do it. 

    Here goes my trial, 

    // MyHeader.h 
    struct _mytest { 
        char *pcName; 
        int    iNameLength; 
    }; 

    h2xs -n mytest MyHeader.h 

    which resulted some files like Makefile.PL,MyHeader.xs etc. 

    I do edited the Makefile.PL and XS file for proper set and get 
methods for accessing structure variables. 

    // MyHeader.xs 
    typedef _mytest mytest; 

    MODULE = perltest    PACKAGE = perltest 

    mytest * 
    getmytestinstance() 
        CODE: 
        RETVAL = (mytest*)malloc(sizeof (mytest) ); 
        OUTPUT: 
        RETVAL 

    void 
    setName( pmytestpar, pcNamePar ) 
        mytest * pmytestpar 
        char *     pcNamePar 
        CODE: 
        pmytestpar->pcName = pcNamePar; 

    char * 
    getName( pmytestpar ) 
        mytest * pmytestpar 
        CODE: 
        RETVAL = pmytestpar->pcName; 
        OUTPUT: 
        RETVAL 

    After this coding,I called "perl Makefile.PL",which resulted with a
C file and 
a perl module.Now I am able to call "make && make test",which works
properly. 

    Now my problem is how to use this with my C interface program,so
that it 
allocates some mytest structure and should be possible to pass them
test.pl. 

    I tried something like, 
    // Cinterface.h 
    #include <EXTERN.h> 
    #include <perl.h> 

    #include "MyHeader.h" 

    PerlInterpreter* myperlinterpreter; 

    ... 

    typedef struct _mytest mytest; 

    mytest * mytesttmp = NULL; 

    mytesttmp = (mytest*) malloc(sizeof( mytest) ); 

    SV* svtmp; 

    /* svsetref_pv( svtmp, "perltest", mytesttmp ); */
    /* svsetref_pv( svtmp, "perltest::mytest", mytesttmp ); */
    svsetref_pv( svtmp, "mytest", mytesttmp );     

    ... 

    within my perl subroutine I want to use this but I couldn't make 
it and I don't know how to do this. 

    If anybody helped me it will be greatful. 

    Thanks a lot in advance. 


-- 
Mit freundlichen Grüßen / With Regards
Panneer Selvam . M
____________________________________
Maas High Tech Software GmbH, Germany
Connecting the Islands
Tel: (+49) 711 / 77 - 917 - 0
http://www.maas.de http://www.afp2web.com

Reply via email to