Re: wrapping C code - my exercise in incompetence.

new topic     » goto parent     » topic index » view thread      » older message » newer message
jmduro said...

I uploaded a library to allocate, write, read and free structures in memory. Pointers and variables are automatically sized according to OEU version and OS Architecture.

Here is an example of use, no matter if your system is 32-bit or 64-bit, no matter if you use OEU 4.05 or OEU 4.1.

atom p = NULL 
atom s1 = allocate_string("A string") 
p = allocateStructure(p, {C_POINTER, C_INT, C_FLOAT} ) 
writeStructure(p, {C_POINTER, C_INT, C_INT}, {s1, 12, 25.2} ) 
sequence s2 = readStructure(p, {C_POINTER, C_INT, C_INT} ) 
printf(1, "s2[1] = %s, s2[2] = %d, s2[3] = %4.1f\n", {peek_string(s2[1]), s2[2], s2[3]}) 
freeStructure(p, {C_POINTER, C_INT, C_INT} ) 

Jean-Marc

test_structures.ex crashed on my system:

 
Ubuntu 15.10, 64-bit 
 
Euphoria Interpreter v4.1.0 development 
   64-bit Linux, Using System Memory 
   Revision Date: 2015-02-02 14:18:53, Id: 5861:57179171dbed 
 
kenneth@kenneth-desktop:~/euprogs/Structures$ ls 
eu_types.ods  ex.err  functions.e  structures.e  test_structures.ex 
kenneth@kenneth-desktop:~/euprogs/Structures$ eui test_structures.ex 
 
/home/kenneth/euprogs/Structures/structures.e:22 in function allocateStructure()  
A machine-level exception occurred during execution of this statement (signal 11)  
 
... called from /home/kenneth/euprogs/Structures/test_structures.ex:10  
 
--> See ex.err 
ex.err: 
/home/kenneth/euprogs/Structures/structures.e:22 in function allocateStructure()  
A machine-level exception occurred during execution of this statement (signal 11)  
    p = 0 
    def = {50331649,16777220,50331652} 
    lg = 0 
    i = 1 
 
... called from /home/kenneth/euprogs/Structures/test_structures.ex:10  
 
 
Public & Export & Global & Local Variables 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/memconst.e: 
    DEP_really_works = 0 
    use_DEP = 1 
    FREE_RID = 2 
    kernel_dll = <no value> 
    memDLL_id = <no value> 
    VirtualAlloc_rid = <no value> 
    VirtualLock_rid = <no value> 
    VirtualUnlock_rid = <no value> 
    VirtualProtect_rid = <no value> 
    GetLastError_rid = <no value> 
    GetSystemInfo_rid = <no value> 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/memory.e: 
    edges_only = <no value> 
    check_calls = 1 
    VirtualFree_rid = <no value> 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/types.e: 
    Defined_Sets = { 
                     {98'b',99'c',100'd',102'f',103'g',104'h',106'j',107'k', 
108'l',109'm',110'n',112'p',113'q',114'r',115's',116't',118'v',119'w',120'x', 
121'y',122'z',66'B',67'C',68'D',70'F',71'G',72'H',74'J',75'K',76'L',77'M', 
78'N',80'P',81'Q',82'R',83'S',84'T',86'V',87'W',88'X',89'Y',90'Z'}, 
                     {97'a',101'e',105'i',111'o',117'u',65'A',69'E',73'I', 
79'O',85'U'}, 
                     { 
                       {48'0',57'9'}, 
                       {65'A',70'F'}, 
                       {97'a',102'f'} 
                     }, 
                     {32' ',9,10,13,11,160}, 
                     { 
                       {32' ',47'/'}, 
                       {58':',63'?'}, 
                       {91'[',96'`'}, 
                       {123'{',126'~'} 
                     }, 
                     { 
                       {32' ',126'~'} 
                     }, 
                     { 
                       {32' ',126'~'}, 
                       {32' ',32' '}, 
                       {9,9}, 
                       {10,10}, 
                       {13,13}, 
                       {8,8}, 
                       {7,7} 
                     }, 
                     { 
                       {97'a',122'z'} 
                     }, 
                     { 
                       {65'A',90'Z'} 
                     }, 
                     { 
                       {48'0',57'9'}, 
                       {97'a',122'z'}, 
                       {65'A',90'Z'} 
                     }, 
                     { 
                       {48'0',57'9'}, 
                       {97'a',122'z'}, 
                       {65'A',90'Z'}, 
                       {95'_',95'_'} 
                     }, 
                     { 
                       {97'a',122'z'}, 
                       {65'A',90'Z'} 
                     }, 
                     { 
                       {0,127} 
                     }, 
                     { 
                       {0,31}, 
                       {127,127} 
                     }, 
                     { 
                       {48'0',57'9'} 
                     }, 
                     { 
                       {33'!',126'~'} 
                     }, 
                     { 
                       {0,255} 
                     }, 
                     {95'_'}, 
                     {1,0} 
                   } 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/machine.e: 
    FREE_ARRAY_RID = 1 
    page_size = 4096 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/convert.e: 
    mem = 18919424 
    decimal_mark = 46'.' 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/datetime.e: 
    yydiff = 80'P' 
    month_names = { 
                    {74'J',97'a',110'n',117'u',97'a',114'r',121'y'}, 
                    {70'F',101'e',98'b',114'r',117'u',97'a',114'r',121'y'}, 
                    {77'M',97'a',114'r',99'c',104'h'}, 
                    {65'A',112'p',114'r',105'i',108'l'}, 
                    {77'M',97'a',121'y'}, 
                    {74'J',117'u',110'n',101'e'}, 
                    {74'J',117'u',108'l',121'y'}, 
                    {65'A',117'u',103'g',117'u',115's',116't'}, 
                    {83'S',101'e',112'p',116't',101'e',109'm',98'b',101'e', 
114'r'}, 
                    {79'O',99'c',116't',111'o',98'b',101'e',114'r'}, 
                    {78'N',111'o',118'v',101'e',109'm',98'b',101'e',114'r'}, 
                    {68'D',101'e',99'c',101'e',109'm',98'b',101'e',114'r'} 
                  } 
    month_abbrs = { 
                    {74'J',97'a',110'n'}, 
                    {70'F',101'e',98'b'}, 
                    {77'M',97'a',114'r'}, 
                    {65'A',112'p',114'r'}, 
                    {77'M',97'a',121'y'}, 
                    {74'J',117'u',110'n'}, 
                    {74'J',117'u',108'l'}, 
                    {65'A',117'u',103'g'}, 
                    {83'S',101'e',112'p'}, 
                    {79'O',99'c',116't'}, 
                    {78'N',111'o',118'v'}, 
                    {68'D',101'e',99'c'} 
                  } 
    day_names = { 
                  {83'S',117'u',110'n',100'd',97'a',121'y'}, 
                  {77'M',111'o',110'n',100'd',97'a',121'y'}, 
                  {84'T',117'u',101'e',115's',100'd',97'a',121'y'}, 
                  {87'W',101'e',100'd',110'n',101'e',115's',100'd',97'a', 
121'y'}, 
                  {84'T',104'h',117'u',114'r',115's',100'd',97'a',121'y'}, 
                  {70'F',114'r',105'i',100'd',97'a',121'y'}, 
                  {83'S',97'a',116't',117'u',114'r',100'd',97'a',121'y'} 
                } 
    day_abbrs = { 
                  {83'S',117'u',110'n'}, 
                  {77'M',111'o',110'n'}, 
                  {84'T',117'u',101'e'}, 
                  {87'W',101'e',100'd'}, 
                  {84'T',104'h',117'u'}, 
                  {70'F',114'r',105'i'}, 
                  {83'S',97'a',116't'} 
                } 
    ampm = { 
             {65'A',77'M'}, 
             {80'P',77'M'} 
           } 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/filesys.e: 
    STAT_VER = 0 
    my_dir = -2 
    InitCurDir = {47'/',104'h',111'o',109'm',101'e',47'/',107'k',101'e',110'n', 
110'n',101'e',116't',104'h',47'/',101'e',117'u',112'p',114'r',111'o',103'g', 
115's',47'/',83'S',116't',114'r',117'u',99'c',116't',117'u',114'r',101'e', 
115's',47'/'} 
    file_counters = {} 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/pretty.e: 
    pretty_end_col = <no value> 
    pretty_chars = <no value> 
    pretty_start_col = <no value> 
    pretty_level = <no value> 
    pretty_file = <no value> 
    pretty_ascii = <no value> 
    pretty_indent = <no value> 
    pretty_ascii_min = <no value> 
    pretty_ascii_max = <no value> 
    pretty_line_count = <no value> 
    pretty_line_max = <no value> 
    pretty_dots = <no value> 
    pretty_line_breaks = <no value> 
    pretty_printing = <no value> 
    pretty_fp_format = <no value> 
    pretty_int_format = <no value> 
    pretty_line = <no value> 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/serialize.e: 
    mem0 = 15736832 
    mem1 = 15736833 
    mem2 = 15736834 
    mem3 = 15736835 
    mem4 = 15736836 
    mem5 = 15736837 
    mem6 = 15736838 
    mem7 = 15736839 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/text.e: 
    lower_case_SET = {} 
    upper_case_SET = {} 
    encoding_NAME = {65'A',83'S',67'C',73'I',73'I'} 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/io.e: 
    mem0 = 17715200 
    mem1 = 17715201 
    mem2 = 17715202 
    mem3 = 17715203 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/scinot.e: 
    NATIVE_FORMAT = 3 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/get.e: 
    input_file = <no value> 
    input_string = <no value> 
    string_next = <no value> 
    ch = <no value> 
    leading_whitespace = <no value> 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/eumem.e: 
    ram_space = {} 
    ram_free_list = 0 
    free_rid = 6 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/primes.e: 
    list_of_primes = {2,3} 
 
 /home/kenneth/euphoria-4.1.0-Linux-x64/include/std/graphcst.e: 
    true_fgcolor = {0,4,2,6,1,5,3,7,8,12,10,14,9,13,11,15,16,20,18,22,17, 
21,19,23,24,28,26,28,25,29,17,31} 
    true_bgcolor = {0,4,2,6,1,5,3,7,8,12,10,14,9,13,11,15,16,20,18,22,17, 
21,19,23,24,28,26,28,25,29,17,31} 
 
 /home/kenneth/euprogs/Structures/test_structures.ex: 
    p = 0 
    s1 = 15777792 
    s2 = <no value> 
 

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu