Hi,

I am trying to return "wrapped objects" from a single object playing the 
role an object factory. I ve tried something like this but it does nt seem 
to work: 

// the ObjectWrap factory which also inherits from ObjectWrap.


class NoomraEngine: public node::ObjectWrap {


public:

static Persistent<FunctionTemplate> s_ct;

static void Initialize(Handle<Object> target);

static Handle<Value> New(const Arguments& args);

        static Handle<Value> CreateInstrument(const Arguments& args); // 
factory method for returning wrapped objects.



NoomraEngine();

virtual ~NoomraEngine();

};


    

Handle<Value> NoomraEngine::CreateInstrument(const Arguments& args) {

    HandleScope scope;

    // determine which object to create according to args.

    // so for example if it's a VanillaEquityOptionWrapper: 

    return scope.Close(VanillaEquityOptionWrapper::New(args));

}

For example VanillaEquityOptionWrapper is declared as follows and should 
one of the possible wrapped objects returned by NoomraEngine:

class VanillaEquityOptionWrapper : public node::ObjectWrap {

private:

//VanillaEquityOption* equityOption;

public:

static Persistent<FunctionTemplate> create;

static void Initialize(Handle<Object> target);

static Handle<Value> New(const Arguments& args);

static Handle<Value> Price(const Arguments& args);   // mapped to 
priceEquity for node.



 VanillaEquityOptionWrapper();

virtual ~VanillaEquityOptionWrapper();

};


} /* namespace noomra */

#endif /* VANILLAEQUITYOPTIONWRAPPER_H_ */

Here's the node output:

> var addon = require('noomra');
undefined
> var engine = new addon.NoomraEngine();
undefined
> var equity = engine.createInstrument();
undefined
> equity.priceEquity();
TypeError: Object #<NoomraEngine> has no method 'priceEquity'
    at repl:1:8
    at REPLServer.self.eval (repl.js:111:21)
    at rli.on.e (repl.js:260:20)
    at REPLServer.self.eval (repl.js:118:5)
    at Interface.<anonymous> (repl.js:250:12)
    at Interface.EventEmitter.emit (events.js:88:17)
    at Interface._onLine (readline.js:183:10)
    at Interface._line (readline.js:502:8)
    at Interface._ttyWrite (readline.js:720:14)
    at ReadStream.<anonymous> (readline.js:105:12)
> 




Reply via email to