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

« back to all changes in this revision

Viewing changes to src/swig/ext/std/sstream.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:
4
4
 
5
5
/* Enabling default typemaps for std::strings */
6
6
%include std_string.i
7
 
 
 
7
%include <stl.i>
8
8
 
9
9
/* Get rid of the ostream parameter by setting numinputs to 0 */   
10
10
%typemap(in,numinputs=0) std::ostream& (std::ostringstream stream)
13
13
}
14
14
 
15
15
 
16
 
 
17
 
#if defined(SWIGRUBY)
18
 
/* Return the results as a string object in the scripting language */
19
 
%typemap(argout) std::ostream& 
20
 
{
21
 
    std::string str = stream$argnum.str();      
22
 
    $result = SWIG_FromCharPtrAndSize(str.data(), str.size());
23
 
}
24
 
/* This typemap allows the scripting language to pass in a string
25
 
   which will be converted to an istringstream */
26
 
%typemap(in) std::istream& (char *buf = 0, size_t size = 0, int alloc = 0, std::stringstream stream)
27
 
{
28
 
    /* Convert from scripting language string to char* */
29
 
    if (SWIG_AsCharPtrAndSize($input, &buf, &size, &alloc) != SWIG_OK)
30
 
    {
31
 
        %argument_fail(SWIG_TypeError, "(TYPEMAP, SIZE)", $symname, $argnum);
32
 
    }
33
 
    /* Write data to the stream.  Note that the returned size includes
34
 
     the last character, which is a null character.  We do not want
35
 
     to write that to the stream so subtract one from its size. */
36
 
    stream.write(buf, size - 1);
37
 
    $1 = &stream;
38
 
}
39
 
/* Free allocated buffer created in the (in) typemap */
40
 
%typemap(freearg) std::istream&
41
 
{
42
 
  if (alloc$argnum == SWIG_NEWOBJ) %delete_array(buf$argnum);
43
 
}
44
 
 
45
 
 
46
 
 
47
 
#elif defined(SWIGPYTHON)
48
 
/* Return the results as a string object in the scripting language */
49
 
%typemap(argout) std::ostream& 
50
 
{
51
 
    std::ostringstream *output = static_cast<std::ostringstream *> ($1);
52
 
    Py_DECREF($result);
53
 
    $result = PyString_FromString(output->str().c_str());
54
 
}
55
 
/* This typemap allows the scripting language to pass in a string
56
 
   which will be converted to an istringstream */
57
 
%typemap(in) std::istream& (std::stringstream stream)
58
 
{
59
 
    if (!PyString_Check($input))
60
 
    {
61
 
        PyErr_SetString(PyExc_TypeError, "not a string");
62
 
        return NULL;
63
 
    }
64
 
    std::string str(PyString_AsString($input));
65
 
    stream << str;
66
 
    $1 = &stream;
67
 
}
68
 
 
69
 
#else
70
 
  #warning no "in" typemap defined
71
 
#endif
72
 
 
73