Sirikata
|
00001 #ifndef __SIRIKATA_JS_VISIBLE_STRUCT_HPP__ 00002 #define __SIRIKATA_JS_VISIBLE_STRUCT_HPP__ 00003 00004 #include <sirikata/oh/HostedObject.hpp> 00005 #include <v8.h> 00006 #include <vector> 00007 #include "JSPositionListener.hpp" 00008 #include "../JSCtx.hpp" 00009 #include "../JSVisibleData.hpp" 00010 00011 namespace Sirikata { 00012 namespace JS { 00013 00014 //need to forward-declare this so that can reference this inside 00015 class EmersonScript; 00016 class JSVisibleManager; 00017 00018 00019 struct JSVisibleStruct : public JSPositionListener 00020 { 00021 public: 00022 virtual ~JSVisibleStruct(); 00023 00024 //for decoding 00025 static JSVisibleStruct* decodeVisible(v8::Handle<v8::Value> senderVal,std::string& errorMessage); 00026 00027 //methods mapped to javascript's visible object 00028 v8::Handle<v8::Value> toString(); 00029 v8::Handle<v8::Value> printData(); 00030 00037 static void visibleWeakReferenceCleanup(v8::Persistent<v8::Value> containsVisStruct, void* otherArg); 00038 00039 00040 private: 00041 JSVisibleStruct(EmersonScript* parent, JSAggregateVisibleDataPtr jspd, JSCtx* ctx); 00042 friend class JSVisibleManager; 00043 00044 }; 00045 00046 typedef std::vector<JSVisibleStruct*> JSVisibleVec; 00047 typedef JSVisibleVec::iterator JSVisibleVecIter; 00048 00049 00050 00051 }//end namespace js 00052 }//end namespace sirikata 00053 00054 #endif