Consistent formatting of example code in the docs
This commit is contained in:
parent
129ef8ea8f
commit
268b942865
25 changed files with 1705 additions and 1714 deletions
|
|
@ -521,9 +521,9 @@ Enums are exported into a class table. For example, given some enums:
|
|||
<div class="code"><pre>%module example
|
||||
enum Days { SUNDAY = 0, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY };
|
||||
struct Test {
|
||||
enum { TEST1 = 10, TEST2 = 20 };
|
||||
enum { TEST1 = 10, TEST2 = 20 };
|
||||
#ifdef __cplusplus // There are no static members in C
|
||||
static const int ICONST = 12;
|
||||
static const int ICONST = 12;
|
||||
#endif
|
||||
};
|
||||
</pre></div>
|
||||
|
|
@ -645,12 +645,12 @@ Like the pointer in the previous section, this is held as a userdata. However, a
|
|||
<tt>const</tt> members of a structure are read-only. Data members can also be forced to be read-only using the immutable directive. As with other immutables, setting attempts will be cause an error. For example:
|
||||
</p>
|
||||
<div class="code"><pre>struct Foo {
|
||||
...
|
||||
%immutable;
|
||||
int x; // Read-only members
|
||||
char *name;
|
||||
%mutable;
|
||||
...
|
||||
...
|
||||
%immutable;
|
||||
int x; // Read-only members
|
||||
char *name;
|
||||
%mutable;
|
||||
...
|
||||
};
|
||||
</pre></div>
|
||||
<p>
|
||||
|
|
@ -661,11 +661,11 @@ When a member of a structure is itself a structure, it is handled as a pointer.
|
|||
</p>
|
||||
|
||||
<div class="code"><pre>struct Foo {
|
||||
int a;
|
||||
int a;
|
||||
};
|
||||
|
||||
struct Bar {
|
||||
Foo f;
|
||||
Foo f;
|
||||
};
|
||||
</pre></div>
|
||||
<p>
|
||||
|
|
@ -695,8 +695,8 @@ Because the pointer points inside the structure, you can modify the contents and
|
|||
For eLua with the <tt>-eluac</tt> option, structure manipulation has to be performed with specific structure functions generated by SWIG. Let's say you have the following structure definition:
|
||||
</p>
|
||||
<div class="code"><pre>struct data {
|
||||
int x, y;
|
||||
double z;
|
||||
int x, y;
|
||||
double z;
|
||||
};
|
||||
|
||||
> --From eLua
|
||||
|
|
@ -749,8 +749,8 @@ Class data members are accessed in the same manner as C structures. Static class
|
|||
</p>
|
||||
<div class="targetlang"><pre>class Spam {
|
||||
public:
|
||||
static void foo();
|
||||
static int bar;
|
||||
static void foo();
|
||||
static int bar;
|
||||
};
|
||||
</pre></div>
|
||||
<p>
|
||||
|
|
@ -871,9 +871,9 @@ Similarly, if you have a class like this,
|
|||
</p>
|
||||
<div class="code"><pre>class Foo {
|
||||
public:
|
||||
Foo();
|
||||
Foo(const Foo &);
|
||||
...
|
||||
Foo();
|
||||
Foo(const Foo &);
|
||||
...
|
||||
};
|
||||
</pre></div>
|
||||
<p>
|
||||
|
|
@ -1090,13 +1090,14 @@ public:
|
|||
Now we extend it with some new code
|
||||
</p>
|
||||
<div class="code"><pre>%extend Complex {
|
||||
const char *__str__() {
|
||||
static char tmp[1024];
|
||||
sprintf(tmp,"Complex(%g,%g)", $self->re(),$self->im());
|
||||
return tmp;
|
||||
}
|
||||
bool operator==(const Complex& c)
|
||||
{ return ($self->re()==c.re() && $self->im()==c.im());}
|
||||
const char *__str__() {
|
||||
static char tmp[1024];
|
||||
sprintf(tmp,"Complex(%g,%g)", $self->re(),$self->im());
|
||||
return tmp;
|
||||
}
|
||||
bool operator==(const Complex& c) {
|
||||
return ($self->re()==c.re() && $self->im()==c.im());
|
||||
}
|
||||
};
|
||||
</pre></div>
|
||||
<p>
|
||||
|
|
@ -1123,9 +1124,9 @@ Extend works with both C and C++ code, on classes and structs. It does not modif
|
|||
<p> If you have a function that allocates memory like this,</p>
|
||||
<div class="code">
|
||||
<pre>char *foo() {
|
||||
char *result = (char *) malloc(...);
|
||||
...
|
||||
return result;
|
||||
char *result = (char *) malloc(...);
|
||||
...
|
||||
return result;
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
|
|
@ -1154,12 +1155,12 @@ char *foo();
|
|||
|
||||
template<class T1, class T2>
|
||||
struct pair {
|
||||
typedef T1 first_type;
|
||||
typedef T2 second_type;
|
||||
T1 first;
|
||||
T2 second;
|
||||
pair();
|
||||
pair(const T1&, const T2&);
|
||||
typedef T1 first_type;
|
||||
typedef T2 second_type;
|
||||
T1 first;
|
||||
T2 second;
|
||||
pair();
|
||||
pair(const T1&, const T2&);
|
||||
~pair();
|
||||
};
|
||||
|
||||
|
|
@ -1183,9 +1184,9 @@ Obviously, there is more to template wrapping than shown in this example. More d
|
|||
In certain C++ programs, it is common to use classes that have been wrapped by so-called "smart pointers." Generally, this involves the use of a template class that implements operator->() like this:
|
||||
</p>
|
||||
<div class="code"><pre>template<class T> class SmartPtr {
|
||||
...
|
||||
T *operator->();
|
||||
...
|
||||
...
|
||||
T *operator->();
|
||||
...
|
||||
}
|
||||
</pre></div>
|
||||
<p>
|
||||
|
|
@ -1193,8 +1194,8 @@ Then, if you have a class like this,
|
|||
</p>
|
||||
<div class="code"><pre>class Foo {
|
||||
public:
|
||||
int x;
|
||||
int bar();
|
||||
int x;
|
||||
int bar();
|
||||
};
|
||||
</pre></div>
|
||||
<p>
|
||||
|
|
@ -1564,17 +1565,17 @@ Received an integer : 6
|
|||
<p>However for more complex functions which use input/output parameters or arrays, you will need to make use of <typemaps.i>, which contains typemaps for these situations. For example, consider these functions:</p>
|
||||
|
||||
<div class="code"><pre>void add(int x, int y, int *result) {
|
||||
*result = x + y;
|
||||
*result = x + y;
|
||||
}
|
||||
|
||||
int sub(int *x1, int *y1) {
|
||||
return *x1-*y1;
|
||||
return *x1-*y1;
|
||||
}
|
||||
|
||||
void swap(int *sx, int *sy) {
|
||||
int t=*sx;
|
||||
*sx=*sy;
|
||||
*sy=t;
|
||||
int t=*sx;
|
||||
*sx=*sy;
|
||||
*sy=t;
|
||||
}
|
||||
</pre></div>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue