Sirikata
liboh/plugins/js/JSObjectStructs/JSVisibleStruct.hpp
Go to the documentation of this file.
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