~z-man/armagetronad/0.4-armagetronad-ct-unified

« back to all changes in this revision

Viewing changes to src/swig/ext/ruby.i

  • Committer: Voodoo
  • Date: 2012-04-06 15:54:12 UTC
  • Revision ID: erollet@yahoo.fr-20120406155412-sy2qxgd66zxeb36x
reorganize .i files + fix some warnings

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
%{
 
2
#include "scripting/sScripting.h"
 
3
extern sCallable::ptr CreateCallablePython(PyObject * input);
 
4
#include "tString.h"
 
5
#include <string>"
 
6
%}
 
7
 
 
8
%import "std_string.i"
 
9
 
 
10
/* Return the results as a string object in the scripting language */
 
11
%typemap(argout) std::ostream&
 
12
{
 
13
    std::string str = stream$argnum.str();
 
14
    $result = SWIG_FromCharPtrAndSize(str.data(), str.size());
 
15
}
 
16
/* This typemap allows the scripting language to pass in a string
 
17
   which will be converted to an istringstream */
 
18
%typemap(in) std::istream& (char *buf = 0, size_t size = 0, int alloc = 0, std::stringstream stream)
 
19
{
 
20
    /* Convert from scripting language string to char* */
 
21
    if (SWIG_AsCharPtrAndSize($input, &buf, &size, &alloc) != SWIG_OK)
 
22
    {
 
23
        %argument_fail(SWIG_TypeError, "(TYPEMAP, SIZE)", $symname, $argnum);
 
24
    }
 
25
    /* Write data to the stream.  Note that the returned size includes
 
26
     the last character, which is a null character.  We do not want
 
27
     to write that to the stream so subtract one from its size. */
 
28
    stream.write(buf, size - 1);
 
29
    $1 = &stream;
 
30
}
 
31
/* Free allocated buffer created in the (in) typemap */
 
32
%typemap(freearg) std::istream&
 
33
{
 
34
  if (alloc$argnum == SWIG_NEWOBJ) %delete_array(buf$argnum);
 
35
}
 
36
 
 
37
%typemap(in) tString {
 
38
    $1 = tString(StringValuePtr($input));
 
39
}
 
40
%typemap(in) tString & (tString str) {
 
41
    str = tString(StringValuePtr($input));
 
42
    $1 = &str;
 
43
}
 
44
%typemap(out) tString {
 
45
    $result = rb_str_new2($1.c_str());
 
46
}
 
47
%typemap(out) tString * {
 
48
    $result = rb_str_new2($1->c_str());
 
49
}
 
50
%typemap(out) tString & {
 
51
    $result = rb_str_new2($1->c_str());
 
52
}
 
53