OK, been doing my home work and came across the -MInline=info switch, and this is the result of the command on my little script:

C:\HilbertPL>perl -MInline=info HilbertPL.pl <-----------------------Information Section-----------------------------------> Information about the processing of your Inline C code: Your module is already compiled. It is located at: C:\HilbertPL\_Inline\lib\auto\HilbertPL_pl_301c\HilbertPL_pl_301c.dll The following Inline C function(s) have been successfully bound to Perl: unsigned hilbert_box_pt(unsigned nDims, unsigned nBytes, unsigned nBits, int findMin, void * c1, void * c2) unsigned hilbert_box_vtx(unsigned nDims, unsigned nBytes, unsigned nBits , int findMin, void * c1, void * c2) <-----------------------End of Information Section----------------------------> Had problems bootstrapping Inline module 'HilbertPL_pl_301c' Can't find 'boot_HilbertPL_pl_301c' symbol in C:\HilbertPL\_Inline\lib/auto/Hilb ertPL_pl_301c/HilbertPL_pl_301c.dll at C:/Perl/site/lib/Inline.pm line 500 at HilbertPL.pl line 14 BEGIN failed--compilation aborted at HilbertPL.pl line 1076.

I understand now that I probably have a typing issue, but where to start? There is a lot of c code with which I am not familiar, and I cringe at adjusting it too much for fear of breaking it, but here is what I do know:
There are only 8 functions defined in hilbert.h and here are their signatures:
/***************************************************************** * hilbert_i2c * * Convert an index into a Hilbert curve to a set of coordinates. * Inputs: * nDims: Number of coordinate axes. * nBits: Number of bits per axis. * index: The index, contains nDims*nBits bits (so nDims*nBits m +ust be <= 8*sizeof(bitmask_t)). * Outputs: * coord: The list of nDims coordinates, each with nBits bits. * Assumptions: * nDims*nBits <= (sizeof index) * (bits_per_byte) */ void hilbert_i2c(unsigned nDims, unsigned nBits, bitmask_t index, bitm +ask_t coord[]); /***************************************************************** * hilbert_c2i * * Convert coordinates of a point on a Hilbert curve to its index. * Inputs: * nDims: Number of coordinates. * nBits: Number of bits/coordinate. * coord: Array of n nBits-bit coordinates. * Outputs: * index: Output index value. nDims*nBits bits. * Assumptions: * nDims*nBits <= (sizeof bitmask_t) * (bits_per_byte) */ bitmask_t hilbert_c2i(unsigned nDims, unsigned nBits, bitmask_t const +coord[]); /***************************************************************** * hilbert_cmp, hilbert_ieee_cmp * * Determine which of two points lies further along the Hilbert curve * Inputs: * nDims: Number of coordinates. * nBytes: Number of bytes of storage/coordinate (hilbert_cmp onl +y) * nBits: Number of bits/coordinate. (hilbert_cmp only) * coord1: Array of nDims nBytes-byte coordinates (or doubles for + ieee_cmp). * coord2: Array of nDims nBytes-byte coordinates (or doubles for + ieee_cmp). * Return value: * -1, 0, or 1 according to whether coord1<coord2, coord1==coord2, coord1>coord2 * Assumptions: * nBits <= (sizeof bitmask_t) * (bits_per_byte) */ int hilbert_cmp(unsigned nDims, unsigned nBytes, unsigned nBits, void +const* coord1, void const* coord2); int hilbert_ieee_cmp(unsigned nDims, double const* coord1, double cons +t* coord2); /***************************************************************** * hilbert_box_vtx * * Determine the first or last vertex of a box to lie on a Hilbert cur +ve * Inputs: * nDims: Number of coordinates. * nBytes: Number of bytes/coordinate. * nBits: Number of bits/coordinate. (hilbert_cmp only) * findMin: Is it the least vertex sought? * coord1: Array of nDims nBytes-byte coordinates - one corner of + box * coord2: Array of nDims nBytes-byte coordinates - opposite corn +er * Output: * c1 and c2 modified to refer to selected corner * value returned is log2 of size of largest power-of-two-aligned + box that * contains the selected corner and no other corners * Assumptions: * nBits <= (sizeof bitmask_t) * (bits_per_byte) */ unsigned hilbert_box_vtx(unsigned nDims, unsigned nBytes, unsigned nBits, int findMin, void* c1, void* c2); unsigned hilbert_ieee_box_vtx(unsigned nDims, int findMin, double* c1, double* c2); /***************************************************************** * hilbert_box_pt * * Determine the first or last point of a box to lie on a Hilbert curv +e * Inputs: * nDims: Number of coordinates. * nBytes: Number of bytes/coordinate. * nBits: Number of bits/coordinate. * findMin: Is it the least vertex sought? * coord1: Array of nDims nBytes-byte coordinates - one corner of + box * coord2: Array of nDims nBytes-byte coordinates - opposite corn +er * Output: * c1 and c2 modified to refer to least point * Assumptions: * nBits <= (sizeof bitmask_t) * (bits_per_byte) */ unsigned hilbert_box_pt(unsigned nDims, unsigned nBytes, unsigned nBits, int findMin, void* coord1, void* coord2); unsigned hilbert_ieee_box_pt(unsigned nDims, int findMin, double* c1, double* c2); /***************************************************************** * hilbert_nextinbox * * Determine the first point of a box after a given point to lie on a +Hilbert curve * Inputs: * nDims: Number of coordinates. * nBytes: Number of bytes/coordinate. * nBits: Number of bits/coordinate. * findPrev: Is the previous point sought? * coord1: Array of nDims nBytes-byte coordinates - one corner of + box * coord2: Array of nDims nBytes-byte coordinates - opposite corn +er * point: Array of nDims nBytes-byte coordinates - lower bound o +n point returned * * Output: if returns 1: * c1 and c2 modified to refer to least point after "point" in bo +x else returns 0: arguments unchanged; "point" is beyond the last point of the b +ox * Assumptions: * nBits <= (sizeof bitmask_t) * (bits_per_byte) */ int hilbert_nextinbox(unsigned nDims, unsigned nBytes, unsigned nBits, int findPrev, void* coord1, void* coord2, void const* point); /***************************************************************** * hilbert_incr * * Advance from one point to its successor on a Hilbert curve * Inputs: * nDims: Number of coordinates. * nBits: Number of bits/coordinate. * coord: Array of nDims nBits-bit coordinates. * Output: * coord: Next point on Hilbert curve * Assumptions: * nBits <= (sizeof bitmask_t) * (bits_per_byte) */ void hilbert_incr(unsigned nDims, unsigned nBits, bitmask_t coord[]);

there are also two typedefinitions at the top of the file:
/* define the bitmask_t type as an integer of sufficient size */ typedef unsigned long bitmask_t; /* define the halfmask_t type as an integer of 1/2 the size of bitmask +_t */ typedef unsigned long halfmask_t;

now that is just the header file. The implementation in the .c file is huge. Where would I start to find out what types PERl can't handle or vice versa since I am calling the functions from perl.? Where will this adjustment take place? In the perl script, or will I have to write a tydef file like the xstut shows on one example? Lastly, where do people talk about this stuff? I can't imagine that stuff like this is uncommon, yet it is a pain to find good help on it... Thanks Ketema

In reply to Re^4: Need Help with perlxstut by ketema
in thread Need Help with perlxstut by ketema

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.