Make javascript 'nspace' conform to corresponding lua example.

This commit is contained in:
Oliver Buchtala 2014-04-29 00:29:17 +02:00
commit b30c6a452f
10 changed files with 78 additions and 71 deletions

View file

@ -3,7 +3,7 @@ constant
enum
exception
functor
namespace
nspace
operator
overload
pointer

View file

@ -1,36 +0,0 @@
/* File : example.c */
#include <iostream>
#include "example.h"
#define M_PI 3.14159
/* A global variable */
namespace nspace
{
double Foo = 3.0;
/* Compute the greatest common divisor of positive integers */
int gcd(int x, int y) {
int g;
g = y;
while (x > 0) {
g = x;
x = y % x;
y = g;
}
return g;
}
Circle::Circle(): radius(1.0) {}
Circle::Circle(double r): radius(r) {
std::cout << "created Circle with r=" << radius << std::endl;
}
double Circle::area() {
std::cout << "Circle::area called, r=" << radius << std::endl;
return M_PI*radius*radius;
}
}

View file

@ -1,20 +0,0 @@
namespace nspace {
extern int gcd(int x, int y);
extern double Foo;
class Circle
{
public:
Circle();
Circle(double r);
double area();
double radius;
};
}

View file

@ -1,10 +0,0 @@
var example = require("./example");
console.log("Global variable Foo=" + example.nspace.Foo);
example.nspace.Foo = 5;
console.log("Variable Foo changed to " + example.nspace.Foo);
console.log("GCD of number 6,18 is " + example.nspace.gcd(6,18));
console.log("Creating some objects:");
c = new example.nspace.Circle(10);
console.log("area = " + c.area());

View file

@ -1,3 +1,3 @@
SRCS = example.cxx
SRCS =
include ../example.mk

View file

@ -2,7 +2,7 @@
"targets": [
{
"target_name": "example",
"sources": [ "example.cxx", "example_wrap.cxx" ]
"sources": [ "example_wrap.cxx" ]
}
]
}

View file

@ -0,0 +1,23 @@
#ifndef _example_guardian_
#define _example_guardian_
int module_function() { return 7; }
int module_variable = 9;
namespace MyWorld {
class World {
public:
World() : world_max_count(9) {}
int create_world() { return 17; }
const int world_max_count; // = 9
};
namespace Nested {
class Dweller {
public:
enum Gender { MALE = 0, FEMALE = 1 };
static int count() { return 19; }
};
}
}
#endif

View file

@ -1,10 +1,10 @@
/* File : example.i */
%module example
%{
#include "example.h"
%}
%feature("nspace", 1);
%nspace MyWorld::Nested::Dweller;
%nspace MyWorld::World;
%include "example.h"

View file

@ -0,0 +1,50 @@
// File: runme.js
// This file illustrates class C++ interface generated
// by SWIG.
var example = require("./example");
// Calling a module function ( aka global function )
if (example.module_function() !== 7) {
throw new Error("example.module_function() should equal 7");
}
console.log("example.module_function(): " + example.module_function());
// Accessing a module (aka global) variable
if (example.module_variable !== 9) {
throw new Error("example.module_variable should equal 9");
}
console.log("example.module_variable: " + example.module_variable);
// Creating an instance of the class
var w1 = new example.MyWorld.World();
console.log("Creating class instance: w1 = new example.MyWorld.World(): " + w1);
// Accessing class members
if (w1.create_world() !== 17) {
throw new Error("w1.create_world() should equal 17");
}
console.log("w1.create_world() = " + w1.create_world());
if (w1.world_max_count !== 9) {
throw new Error("w1.world_max_count should equal 9");
}
console.log("w1.world_max_count = " + w1.world_max_count);
// Accessing enums from class within namespace
if (example.MyWorld.Nested.Dweller.MALE !== 0) {
throw new Error("example.MyWorld.Nested.Dweller.MALE should equal 0");
}
console.log("Accessing enums: ex.MyWorld.Nested.Dweller.MALE = " + example.MyWorld.Nested.Dweller.MALE);
if (example.MyWorld.Nested.Dweller.FEMALE !== 1) {
throw new Error("example.MyWorld.Nested.Dweller.FEMALE should equal 1");
}
console.log("Accessing enums: ex.MyWorld.Nested.Dweller.FEMALE = " + example.MyWorld.Nested.Dweller.FEMALE);
// Accessing static member function
if (example.MyWorld.Nested.Dweller.count() !== 19) {
throw new Error("example.MyWorld.Nested.Dweller.count() should equal 19");
}
console.log("Accessing static member function: ex.MyWorld.Nested.Dweller.count() = " + example.MyWorld.Nested.Dweller.count());