From: <ag...@us...> - 2009-07-31 02:19:40
|
Revision: 896 http://zoolib.svn.sourceforge.net/zoolib/?rev=896&view=rev Author: agreen Date: 2009-07-31 02:19:34 +0000 (Fri, 31 Jul 2009) Log Message: ----------- Older compilers' sizeof can't handle the param name in the prior version of this code. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_API.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_API.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_API.h 2009-07-31 02:18:55 UTC (rev 895) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_API.h 2009-07-31 02:19:34 UTC (rev 896) @@ -766,7 +766,7 @@ ZMacCFM_DefineProc2(NPError, NPN_PopUpContextMenu, NPP, NPMenu*); ZMacCFM_DefineProc7 - (NPError, NPP_New, NPMIMEType, NPP, uint16, int16, char* argn[], char* argv[], NPSavedData*); + (NPError, NPP_New, NPMIMEType, NPP, uint16, int16, char**, char**, NPSavedData*); ZMacCFM_DefineProc2(NPError, NPP_Destroy, NPP, NPSavedData**); ZMacCFM_DefineProc2(NPError, NPP_SetWindow, NPP, NPWindow*); Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h 2009-07-31 02:18:55 UTC (rev 895) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h 2009-07-31 02:19:34 UTC (rev 896) @@ -25,7 +25,7 @@ #include "zoolib/netscape/ZNetscape_Host.h" #include "zoolib/ZSafeSet.h" #include "zoolib/ZStreamer.h" -#include "zoolib/ZValData_ZooLib.h" +#include "zoolib/ZValData_Any.h" #include <set> @@ -215,7 +215,7 @@ void SendDataAsync( void* iNotifyData, - const std::string& iURL, const std::string& iMIME, const ZValData_ZooLib& iHeaders, + const std::string& iURL, const std::string& iMIME, const ZValData_Any& iHeaders, ZRef<ZStreamerR> iStreamerR); void SendDataSync( @@ -239,7 +239,7 @@ friend class HTTPFetcher; void pHTTPFetcher(ZRef<HTTPFetcher> iHTTPFetcher, void* iNotifyData, - const std::string& iURL, const std::string& iMIME, const ZValData_ZooLib& iHeaders, + const std::string& iURL, const std::string& iMIME, const ZValData_Any& iHeaders, ZRef<ZStreamerR> iStreamerR); ZSafeSet<ZRef<HTTPFetcher> > fHTTPFetchers; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2009-08-05 01:20:51
|
Revision: 907 http://zoolib.svn.sourceforge.net/zoolib/?rev=907&view=rev Author: agreen Date: 2009-08-05 01:20:42 +0000 (Wed, 05 Aug 2009) Log Message: ----------- Flesh-out the InvokeDefault suite. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp 2009-08-05 00:55:20 UTC (rev 906) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp 2009-08-05 01:20:42 UTC (rev 907) @@ -453,12 +453,29 @@ } NPVariantG NPObjectG::InvokeDefault() + { return this->InvokeDefault(nullptr, 0); } + +NPVariantG NPObjectG::InvokeDefault( + const NPVariantG& iP0) + { return this->InvokeDefault(&iP0, 1); } + +NPVariantG NPObjectG::InvokeDefault( + const NPVariantG& iP0, + const NPVariantG& iP1) { - NPVariantG result; - this->InvokeDefault(nullptr, 0, result); - return result; + NPVariantG arr[] = { iP0, iP1 }; + return this->InvokeDefault(arr, countof(arr)); } +NPVariantG NPObjectG::InvokeDefault( + const NPVariantG& iP0, + const NPVariantG& iP1, + const NPVariantG& iP2) + { + NPVariantG arr[] = { iP0, iP1, iP2 }; + return this->InvokeDefault(arr, countof(arr)); + } + NPVariantG NPObjectG::Get(const std::string& iName) { NPVariantG result; Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h 2009-08-05 00:55:20 UTC (rev 906) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h 2009-08-05 01:20:42 UTC (rev 907) @@ -167,8 +167,21 @@ const NPVariantG& iP2); NPVariantG InvokeDefault(const NPVariantG* iArgs, size_t iCount); + NPVariantG InvokeDefault(); + NPVariantG InvokeDefault( + const NPVariantG& iP0); + + NPVariantG InvokeDefault( + const NPVariantG& iP0, + const NPVariantG& iP1); + + NPVariantG InvokeDefault( + const NPVariantG& iP0, + const NPVariantG& iP1, + const NPVariantG& iP2); + NPVariantG Get(const std::string& iName); NPVariantG Get(size_t iIndex); Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp 2009-08-05 00:55:20 UTC (rev 906) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp 2009-08-05 01:20:42 UTC (rev 907) @@ -421,12 +421,28 @@ } NPVariantH NPObjectH::InvokeDefault() + { return this->InvokeDefault(nullptr, 0); } + +NPVariantH NPObjectH::InvokeDefault( + const NPVariantH& iP0) + { return this->InvokeDefault(&iP0, 1); } + +NPVariantH NPObjectH::InvokeDefault( + const NPVariantH& iP0, + const NPVariantH& iP1) { - NPVariantH result; - this->InvokeDefault(nullptr, 0, result); - return result; + NPVariantH arr[] = { iP0, iP1 }; + return this->InvokeDefault(arr, countof(arr)); } +NPVariantH NPObjectH::InvokeDefault( + const NPVariantH& iP0, + const NPVariantH& iP1, + const NPVariantH& iP2) + { + NPVariantH arr[] = { iP0, iP1, iP2 }; + return this->InvokeDefault(arr, countof(arr)); + } NPVariantH NPObjectH::Get(const string& iName) { NPVariantH result; Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h 2009-08-05 00:55:20 UTC (rev 906) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h 2009-08-05 01:20:42 UTC (rev 907) @@ -154,8 +154,21 @@ const NPVariantH& iP2); NPVariantH InvokeDefault(const NPVariantH* iArgs, size_t iCount); + NPVariantH InvokeDefault(); + NPVariantH InvokeDefault( + const NPVariantH& iP0); + + NPVariantH InvokeDefault( + const NPVariantH& iP0, + const NPVariantH& iP1); + + NPVariantH InvokeDefault( + const NPVariantH& iP0, + const NPVariantH& iP1, + const NPVariantH& iP2); + NPVariantH Get(const string& iName); NPVariantH Get(size_t iIndex); @@ -191,7 +204,7 @@ // ValMap protocol bool QGet(const string& iName, ValH& oVal) const; - ValH DGet(const string& iName, const ValH& iDefault) const; + ValH DGet(const ValH& iDefault, const string& iName) const; ValH Get(const string& iName) const; void Set(const string& iName, const ValH& iVal); void Erase(const string& iName); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2009-08-06 22:58:03
|
Revision: 916 http://zoolib.svn.sourceforge.net/zoolib/?rev=916&view=rev Author: agreen Date: 2009-08-06 22:57:49 +0000 (Thu, 06 Aug 2009) Log Message: ----------- Move back to a template approach for NPVariants, to make it easier to keep Guest and Host APIs in sync. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h Added Paths: ----------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_VariantPriv.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape.h 2009-08-06 20:27:07 UTC (rev 915) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape.h 2009-08-06 22:57:49 UTC (rev 916) @@ -110,22 +110,6 @@ std::string sAsString(NPNVariable iVar); std::string sAsString(NPPVariable iVar); -// ================================================================================================= -#pragma mark - -#pragma mark * NPVariantBase - -class NPVariantBase : public NPVariant - { -public: - bool IsVoid() const { return type == NPVariantType_Void; } - bool IsNull() const { return type == NPVariantType_Null; } - bool IsBool() const { return type == NPVariantType_Bool; } - bool IsInt32() const { return type == NPVariantType_Int32; } - bool IsDouble() const { return type == NPVariantType_Double; } - bool IsString() const { return type == NPVariantType_String; } - bool IsObject() const { return type == NPVariantType_Object; } - }; - } // namespace ZNetscape NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp 2009-08-06 20:27:07 UTC (rev 915) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp 2009-08-06 22:57:49 UTC (rev 916) @@ -19,6 +19,7 @@ ------------------------------------------------------------------------------------------------- */ #include "zoolib/netscape/ZNetscape_Guest.h" +#include "zoolib/netscape/ZNetscape_VariantPriv.h" #include "zoolib/ZCompat_algorithm.h" #include "zoolib/ZDebug.h" @@ -63,271 +64,31 @@ #pragma mark - #pragma mark * NPVariantG -NPVariantG::operator operator_bool_type() const - { return operator_bool_generator_type::translate(type != NPVariantType_Void); } +// Explicitly instantiate NPVariantG +template class NPVariant_T<NPObjectG>; -NPVariantG::NPVariantG() - { type = NPVariantType_Void; } - -NPVariantG::NPVariantG(const NPVariantG& iOther) +// Provide implementation of NPVariantBase::QGet_T<ZRef<NPObjectG> > +template <> +bool NPVariantBase::QGet_T(ZRef<NPObjectG>& oVal) const { - ZAssert(this != &iOther); - this->pCopyFrom(iOther); - } - -NPVariantG::~NPVariantG() - { this->pRelease(); } - -NPVariantG& NPVariantG::operator=(const NPVariantG& iOther) - { - if (this != &iOther) + if (type == NPVariantType_Object) { - this->pRelease(); - this->pCopyFrom(iOther); + oVal = static_cast<NPObjectG*>(value.objectValue); + return true; } - return *this; + return false; } -NPVariantG::NPVariantG(const NPVariant& iOther) - { - ZAssert(this != &iOther); - this->pCopyFrom(iOther); - } - -NPVariantG& NPVariantG::operator=(const NPVariant& iOther) - { - if (this != &iOther) - { - this->pRelease(); - this->pCopyFrom(iOther); - } - return *this; - } - -NPVariantG::NPVariantG(bool iValue) - { - type = NPVariantType_Bool; - value.boolValue = iValue; - } - -NPVariantG::NPVariantG(int32 iValue) - { - type = NPVariantType_Int32; - value.intValue = iValue; - } - -NPVariantG::NPVariantG(double iValue) - { - type = NPVariantType_Double; - value.doubleValue = iValue; - } - -NPVariantG::NPVariantG(const std::string& iValue) - { - this->pSetString(iValue); - type = NPVariantType_String; - } - -NPVariantG::NPVariantG(const char* iValue) - { - this->pSetString(iValue); - type = NPVariantType_String; - } - -NPVariantG::NPVariantG(NPObjectG* iValue) - { - type = NPVariantType_Void; - this->SetObject(iValue); - } - -NPVariantG::NPVariantG(const ZRef<NPObjectG>& iValue) - { - type = NPVariantType_Void; - this->SetObject(iValue.GetObject()); - } - -void NPVariantG::Clear() - { - this->pRelease(); - type = NPVariantType_Void; - } - template <> -bool NPVariantG::QGet_T<bool>(bool& oVal) const - { - if (type != NPVariantType_Bool) - return false; - oVal = value.boolValue; - return true; - } +void sRelease_T(NPVariantG& iNPVariantG) + { GuestMeister::sGet()->Host_ReleaseVariantValue(&iNPVariantG); } template <> -bool NPVariantG::QGet_T<int32>(int32& oVal) const - { - if (type != NPVariantType_Int32) - return false; - oVal = value.intValue; - return true; - } - -template <> -bool NPVariantG::QGet_T<double>(double& oVal) const - { - if (type != NPVariantType_Double) - return false; - oVal = value.doubleValue; - return true; - } - -template <> -bool NPVariantG::QGet_T<string>(string& oVal) const - { - if (type != NPVariantType_String) - return false; - oVal = std::string( - sNPStringCharsConst(value.stringValue), - sNPStringLengthConst(value.stringValue)); - return true; - } - -template <> -bool NPVariantG::QGet_T<ZRef<NPObjectG> >(ZRef<NPObjectG>& oVal) const - { - if (type != NPVariantType_Object) - return false; - oVal = static_cast<NPObjectG*>(const_cast<NPObject*>(value.objectValue)); - return true; - } - -template <> -void NPVariantG::Set_T<bool>(const bool& iValue) - { - this->pRelease(); - value.boolValue = iValue; - type = NPVariantType_Bool; - } - -template <> -void NPVariantG::Set_T<int32>(const int32& iValue) - { - this->pRelease(); - value.intValue = iValue; - type = NPVariantType_Int32; - } - -template <> -void NPVariantG::Set_T<double>(const double& iValue) - { - this->pRelease(); - value.doubleValue = iValue; - type = NPVariantType_Double; - } - -template <> -void NPVariantG::Set_T<string>(const string& iValue) - { - this->pRelease(); - this->pSetString(iValue); - type = NPVariantType_String; - } - -template <> -void NPVariantG::Set_T<ZRef<NPObjectG> >(const ZRef<NPObjectG>& iValue) - { - iValue->Retain(); - this->pRelease(); - value.objectValue = iValue.GetObject(); - type = NPVariantType_Object; - } - -NPVariantG::operator ZRef<NPObjectG>() const - { return this->GetObject(); } - -void NPVariantG::SetVoid() - { - this->pRelease(); - type = NPVariantType_Void; - } - -void NPVariantG::SetNull() - { - this->pRelease(); - type = NPVariantType_Null; - } - -static void* spMallocG(size_t iLength) +void* sMalloc_T(NPVariantG&, size_t iLength) { return GuestMeister::sGet()->Host_MemAlloc(iLength); } -void NPVariantG::pSetString(const char* iChars, size_t iLength) - { - sNPStringLength(value.stringValue) = iLength; - char* p = static_cast<char*>(spMallocG(iLength + 1)); - strncpy(p, iChars, iLength); - sNPStringChars(value.stringValue) = p; - } - -void NPVariantG::pSetString(const std::string& iString) - { - if (size_t theLength = iString.length()) - this->pSetString(iString.data(), theLength); - else - this->pSetString(nullptr, 0); - } - -void NPVariantG::pCopyFrom(const NPVariant& iOther) - { - switch (iOther.type) - { - case NPVariantType_Void: - case NPVariantType_Null: - break; - case NPVariantType_Bool: - { - value.boolValue = iOther.value.boolValue; - break; - } - case NPVariantType_Int32: - { - value.intValue = iOther.value.intValue; - break; - } - case NPVariantType_Double: - { - value.doubleValue = iOther.value.doubleValue; - break; - } - case NPVariantType_String: - { - this->pSetString( - sNPStringCharsConst(iOther.value.stringValue), - sNPStringLengthConst(iOther.value.stringValue)); - break; - } - case NPVariantType_Object: - { - value.objectValue = iOther.value.objectValue; - static_cast<NPObjectG*>(value.objectValue)->Retain(); - break; - } - } - type = iOther.type; - } - -void NPVariantG::pRelease() - { GuestMeister::sGet()->Host_ReleaseVariantValue(this); } - // ================================================================================================= #pragma mark - -#pragma mark * NPVariantG typename accessors - -ZMACRO_ZValAccessors_Def_Entry(NPVariantG, Bool, bool) -ZMACRO_ZValAccessors_Def_Entry(NPVariantG, Int32, int32) -ZMACRO_ZValAccessors_Def_Entry(NPVariantG, Double, double) -ZMACRO_ZValAccessors_Def_Entry(NPVariantG, String, string) -ZMACRO_ZValAccessors_Def_Entry(NPVariantG, Object, ZRef<NPObjectG>) - -// ================================================================================================= -#pragma mark - #pragma mark * NPObjectG NPObjectG::NPObjectG() @@ -476,26 +237,6 @@ return this->InvokeDefault(arr, countof(arr)); } -NPVariantG NPObjectG::Get(const std::string& iName) - { - NPVariantG result; - this->GetProperty(iName, result); - return result; - } - -NPVariantG NPObjectG::Get(size_t iIndex) - { - NPVariantG result; - this->GetProperty(iIndex, result); - return result; - } - -bool NPObjectG::Set(const std::string& iName, const NPVariantG& iValue) - { return this->SetProperty(iName, iValue); } - -bool NPObjectG::Set(size_t iIndex, const NPVariantG& iValue) - { return this->SetProperty(iIndex, iValue); } - bool NPObjectG::Enumerate(NPIdentifier*& oIdentifiers, uint32_t& oCount) { return GuestMeister::sGet()->Host_Enumerate( NPPSetter::sCurrent(), this, &oIdentifiers, &oCount); } @@ -515,6 +256,46 @@ return true; } +bool NPObjectG::QGet(const std::string& iName, NPVariantG& oVal) + { return this->GetProperty(iName, oVal); } + +bool NPObjectG::QGet(size_t iIndex, NPVariantG& oVal) + { return this->GetProperty(iIndex, oVal); } + +NPVariantG NPObjectG::DGet(const std::string& iName, const NPVariantG& iDefault) + { + NPVariantG result; + if (this->GetProperty(iName, result)) + return result; + return iDefault; + } + +NPVariantG NPObjectG::DGet(size_t iIndex, const NPVariantG& iDefault) + { + NPVariantG result; + if (this->GetProperty(iIndex, result)) + return result; + return iDefault; + } + +NPVariantG NPObjectG::Get(const std::string& iName) + { return this->DGet(iName, NPVariantG()); } + +NPVariantG NPObjectG::Get(size_t iIndex) + { return this->DGet(iIndex, NPVariantG()); } + +bool NPObjectG::Set(const std::string& iName, const NPVariantG& iValue) + { return this->SetProperty(iName, iValue); } + +bool NPObjectG::Set(size_t iIndex, const NPVariantG& iValue) + { return this->SetProperty(iIndex, iValue); } + +bool NPObjectG::Erase(const string& iName) + { return this->RemoveProperty(iName); } + +bool NPObjectG::Erase(size_t iIndex) + { return this->RemoveProperty(iIndex); } + void sRetain(NPObjectG& iOb) { iOb.Retain(); } Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h 2009-08-06 20:27:07 UTC (rev 915) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h 2009-08-06 22:57:49 UTC (rev 916) @@ -23,6 +23,7 @@ #include "zconfig.h" #include "zoolib/netscape/ZNetscape.h" +#include "zoolib/netscape/ZNetscape_Variant.h" #include "zoolib/ZRef.h" #include "zoolib/ZVal.h" #include "zoolib/ZValAccessors.h" @@ -56,61 +57,8 @@ #pragma mark - #pragma mark * NPVariantG -class NPVariantG -: public NPVariantBase -, public ZValR_T<NPVariantG> - { - ZOOLIB_DEFINE_OPERATOR_BOOL_TYPES(NPVariantG, - operator_bool_generator_type, operator_bool_type); +typedef NPVariant_T<NPObjectG> NPVariantG; -public: - operator operator_bool_type() const; - - NPVariantG(); - NPVariantG(const NPVariantG& iOther); - ~NPVariantG(); - NPVariantG& operator=(const NPVariantG& iOther); - - NPVariantG(const NPVariant& iOther); - NPVariantG& operator=(const NPVariant& iOther); - - NPVariantG(bool iValue); - NPVariantG(int32 iValue); - NPVariantG(double iValue); - NPVariantG(const std::string& iValue); - NPVariantG(const char* iValue); - NPVariantG(NPObjectG* iValue); - NPVariantG(const ZRef<NPObjectG>& iValue); - -// ZVal protocol - void Clear(); - - template <class S> - bool QGet_T(S& oVal) const; - - template <class S> - void Set_T(const S& iVal); - -// Our protocol - operator ZRef<NPObjectG>() const; - - void SetVoid(); - void SetNull(); - -// Typename accessors - ZMACRO_ZValAccessors_Decl_Entry(NPVariantG, Bool, bool) - ZMACRO_ZValAccessors_Decl_Entry(NPVariantG, Int32, int32) - ZMACRO_ZValAccessors_Decl_Entry(NPVariantG, Double, double) - ZMACRO_ZValAccessors_Decl_Entry(NPVariantG, String, std::string) - ZMACRO_ZValAccessors_Decl_Entry(NPVariantG, Object, ZRef<NPObjectG>) - -private: - void pSetString(const char* iChars, size_t iLength); - void pSetString(const std::string& iString); - void pCopyFrom(const NPVariant& iOther); - void pRelease(); - }; - // ================================================================================================= #pragma mark - #pragma mark * NPObjectG @@ -182,14 +130,24 @@ const NPVariantG& iP1, const NPVariantG& iP2); + bool Enumerate(NPIdentifier*& oIdentifiers, uint32_t& oCount); + bool Enumerate(std::vector<NPIdentifier>& oIdentifiers); + +// ZMap protocol (ish) + bool QGet(const std::string& iName, NPVariantG& oVal); + bool QGet(size_t iIndex, NPVariantG& oVal); + + NPVariantG DGet(const std::string& iName, const NPVariantG& iDefault); + NPVariantG DGet(size_t iIndex, const NPVariantG& iDefault); + NPVariantG Get(const std::string& iName); NPVariantG Get(size_t iIndex); bool Set(const std::string& iName, const NPVariantG& iValue); bool Set(size_t iIndex, const NPVariantG& iValue); - bool Enumerate(NPIdentifier*& oIdentifiers, uint32_t& oCount); - bool Enumerate(std::vector<NPIdentifier>& oIdentifiers); + bool Erase(const string& iName); + bool Erase(size_t iIndex); }; void sRetain(NPObjectG& iOb); Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp 2009-08-06 20:27:07 UTC (rev 915) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp 2009-08-06 22:57:49 UTC (rev 916) @@ -19,6 +19,7 @@ ------------------------------------------------------------------------------------------------- */ #include "zoolib/netscape/ZNetscape_Host.h" +#include "zoolib/netscape/ZNetscape_VariantPriv.h" #include "zoolib/ZDebug.h" #include "zoolib/ZMemory.h" // For ZBlockZero @@ -40,272 +41,38 @@ #pragma mark - #pragma mark * NPVariantH -NPVariantH::operator operator_bool_type() const - { return operator_bool_generator_type::translate(type != NPVariantType_Void); } +// Explicitly instantiate NPVariantH +template class NPVariant_T<NPObjectH>; -NPVariantH::NPVariantH() - { type = NPVariantType_Void; } - -NPVariantH::NPVariantH(const NPVariantH& iOther) +// Provide implementation of NPVariantBase::QGet_T<ZRef<NPObjectH> > +template <> +bool NPVariantBase::QGet_T(ZRef<NPObjectH>& oVal) const { - ZAssert(this != &iOther); - this->pCopyFrom(iOther); - } - -NPVariantH::~NPVariantH() - { this->pRelease(); } - -NPVariantH& NPVariantH::operator=(const NPVariantH& iOther) - { - if (this != &iOther) + if (type == NPVariantType_Object) { - this->pRelease(); - this->pCopyFrom(iOther); + oVal = static_cast<NPObjectH*>(value.objectValue); + return true; } - return *this; + return false; } -NPVariantH::NPVariantH(const NPVariant& iOther) - { - ZAssert(this != &iOther); - this->pCopyFrom(iOther); - } - -NPVariantH& NPVariantH::operator=(const NPVariant& iOther) - { - if (this != &iOther) - { - this->pRelease(); - this->pCopyFrom(iOther); - } - return *this; - } - -NPVariantH::NPVariantH(bool iValue) - { - type = NPVariantType_Bool; - value.boolValue = iValue; - } - -NPVariantH::NPVariantH(int32 iValue) - { - type = NPVariantType_Int32; - value.intValue = iValue; - } - -NPVariantH::NPVariantH(double iValue) - { - type = NPVariantType_Double; - value.doubleValue = iValue; - } - -NPVariantH::NPVariantH(const string& iValue) - { - this->pSetString(iValue); - type = NPVariantType_String; - } - -NPVariantH::NPVariantH(const char* iValue) - { - this->pSetString(iValue); - type = NPVariantType_String; - } - -NPVariantH::NPVariantH(NPObjectH* iValue) - { - type = NPVariantType_Void; - this->SetObject(iValue); - } - -NPVariantH::NPVariantH(const ZRef<NPObjectH>& iValue) - { - type = NPVariantType_Void; - this->SetObject(iValue.GetObject()); - } - -void NPVariantH::Clear() - { - this->pRelease(); - type = NPVariantType_Void; - } - template <> -bool NPVariantH::QGet_T<bool>(bool& oVal) const - { - if (type != NPVariantType_Bool) - return false; - oVal = value.boolValue; - return true; - } +void sRelease_T(NPVariantH& iNPVariantH) + { HostMeister::sGet()->ReleaseVariantValue(&iNPVariantH); } template <> -bool NPVariantH::QGet_T<int32>(int32& oVal) const - { - if (type != NPVariantType_Int32) - return false; - oVal = value.intValue; - return true; - } - -template <> -bool NPVariantH::QGet_T<double>(double& oVal) const - { - if (type != NPVariantType_Double) - return false; - oVal = value.doubleValue; - return true; - } - -template <> -bool NPVariantH::QGet_T<string>(string& oVal) const - { - if (type != NPVariantType_String) - return false; - oVal = string( - sNPStringCharsConst(value.stringValue), - sNPStringLengthConst(value.stringValue)); - return true; - } - -template <> -bool NPVariantH::QGet_T<ZRef<NPObjectH> >(ZRef<NPObjectH>& oVal) const - { - if (type != NPVariantType_Object) - return false; - oVal = static_cast<NPObjectH*>(const_cast<NPObject*>(value.objectValue)); - return true; - } - -template <> -void NPVariantH::Set_T<bool>(const bool& iValue) - { - this->pRelease(); - value.boolValue = iValue; - type = NPVariantType_Bool; - } - -template <> -void NPVariantH::Set_T<int32>(const int32& iValue) - { - this->pRelease(); - value.intValue = iValue; - type = NPVariantType_Int32; - } - -template <> -void NPVariantH::Set_T<double>(const double& iValue) - { - this->pRelease(); - value.doubleValue = iValue; - type = NPVariantType_Double; - } - -template <> -void NPVariantH::Set_T<string>(const string& iValue) - { - this->pRelease(); - this->pSetString(iValue); - type = NPVariantType_String; - } - -template <> -void NPVariantH::Set_T<ZRef<NPObjectH> >(const ZRef<NPObjectH>& iValue) - { - iValue->Retain(); - this->pRelease(); - value.objectValue = iValue.GetObject(); - type = NPVariantType_Object; - } - -NPVariantH::operator ZRef<NPObjectH>() const - { return this->GetObject(); } - -void NPVariantH::SetVoid() - { - this->pRelease(); - type = NPVariantType_Void; - } - -void NPVariantH::SetNull() - { - this->pRelease(); - type = NPVariantType_Null; - } - -static void* spMallocH(size_t iLength) +void* sMalloc_T(NPVariantH&, size_t iLength) { return HostMeister::sGet()->MemAlloc(iLength); } -void NPVariantH::pSetString(const char* iChars, size_t iLength) - { - sNPStringLength(value.stringValue) = iLength; - char* p = static_cast<char*>(spMallocH(iLength + 1)); - strncpy(p, iChars, iLength); - sNPStringChars(value.stringValue) = p; - } - -void NPVariantH::pSetString(const string& iString) - { - if (size_t theLength = iString.length()) - this->pSetString(iString.data(), theLength); - else - this->pSetString(nullptr, 0); - } - -void NPVariantH::pCopyFrom(const NPVariant& iOther) - { - switch (iOther.type) - { - case NPVariantType_Void: - case NPVariantType_Null: - break; - case NPVariantType_Bool: - { - value.boolValue = iOther.value.boolValue; - break; - } - case NPVariantType_Int32: - { - value.intValue = iOther.value.intValue; - break; - } - case NPVariantType_Double: - { - value.doubleValue = iOther.value.doubleValue; - break; - } - case NPVariantType_String: - { - this->pSetString( - sNPStringCharsConst(iOther.value.stringValue), - sNPStringLengthConst(iOther.value.stringValue)); - break; - } - case NPVariantType_Object: - { - value.objectValue = iOther.value.objectValue; - static_cast<NPObjectH*>(value.objectValue)->Retain(); - break; - } - } - type = iOther.type; - } - -void NPVariantH::pRelease() - { HostMeister::sGet()->ReleaseVariantValue(this); } - // ================================================================================================= #pragma mark - -#pragma mark * NPVariantH typename accessors +#pragma mark * NPObjectH -ZMACRO_ZValAccessors_Def_Entry(NPVariantH, Bool, bool) -ZMACRO_ZValAccessors_Def_Entry(NPVariantH, Int32, int32) -ZMACRO_ZValAccessors_Def_Entry(NPVariantH, Double, double) -ZMACRO_ZValAccessors_Def_Entry(NPVariantH, String, string) -ZMACRO_ZValAccessors_Def_Entry(NPVariantH, Object, ZRef<NPObjectH>) +void sRetain(NPObjectH& iOb) + { iOb.Retain(); } -// ================================================================================================= -#pragma mark - -#pragma mark * NPObjectH +void sRelease(NPObjectH& iOb) + { iOb.Release(); } static NPP fake = nullptr; @@ -443,26 +210,7 @@ NPVariantH arr[] = { iP0, iP1, iP2 }; return this->InvokeDefault(arr, countof(arr)); } -NPVariantH NPObjectH::Get(const string& iName) - { - NPVariantH result; - this->GetProperty(iName, result); - return result; - } -NPVariantH NPObjectH::Get(size_t iIndex) - { - NPVariantH result; - this->GetProperty(iIndex, result); - return result; - } - -bool NPObjectH::Set(const string& iName, const NPVariantH& iValue) - { return this->SetProperty(iName, iValue); } - -bool NPObjectH::Set(size_t iIndex, const NPVariantH& iValue) - { return this->SetProperty(iIndex, iValue); } - bool NPObjectH::Enumerate(NPIdentifier*& oIdentifiers, uint32_t& oCount) { return HostMeister::sGet()->Enumerate(fake, this, &oIdentifiers, &oCount); } @@ -480,12 +228,46 @@ return true; } -void sRetain(NPObjectH& iOb) - { iOb.Retain(); } +bool NPObjectH::QGet(const std::string& iName, NPVariantH& oVal) + { return this->GetProperty(iName, oVal); } -void sRelease(NPObjectH& iOb) - { iOb.Release(); } +bool NPObjectH::QGet(size_t iIndex, NPVariantH& oVal) + { return this->GetProperty(iIndex, oVal); } +NPVariantH NPObjectH::DGet(const std::string& iName, const NPVariantH& iDefault) + { + NPVariantH result; + if (this->GetProperty(iName, result)) + return result; + return iDefault; + } + +NPVariantH NPObjectH::DGet(size_t iIndex, const NPVariantH& iDefault) + { + NPVariantH result; + if (this->GetProperty(iIndex, result)) + return result; + return iDefault; + } + +NPVariantH NPObjectH::Get(const std::string& iName) + { return this->DGet(iName, NPVariantH()); } + +NPVariantH NPObjectH::Get(size_t iIndex) + { return this->DGet(iIndex, NPVariantH()); } + +bool NPObjectH::Set(const string& iName, const NPVariantH& iValue) + { return this->SetProperty(iName, iValue); } + +bool NPObjectH::Set(size_t iIndex, const NPVariantH& iValue) + { return this->SetProperty(iIndex, iValue); } + +bool NPObjectH::Erase(const string& iName) + { return this->RemoveProperty(iName); } + +bool NPObjectH::Erase(size_t iIndex) + { return this->RemoveProperty(iIndex); } + // ================================================================================================= #pragma mark - #pragma mark * ObjectH Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h 2009-08-06 20:27:07 UTC (rev 915) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h 2009-08-06 22:57:49 UTC (rev 916) @@ -23,10 +23,10 @@ #include "zconfig.h" #include "zoolib/netscape/ZNetscape.h" +#include "zoolib/netscape/ZNetscape_Variant.h" #include "zoolib/ZDebug.h" // For ZAssert #include "zoolib/ZRef_Counted.h" -#include "zoolib/ZVal.h" #include "zoolib/ZValAccessors.h" #include <string> @@ -43,61 +43,8 @@ #pragma mark - #pragma mark * NPVariantH -class NPVariantH -: public NPVariantBase -, public ZValR_T<NPVariantH> - { - ZOOLIB_DEFINE_OPERATOR_BOOL_TYPES(NPVariantH, - operator_bool_generator_type, operator_bool_type); +typedef NPVariant_T<NPObjectH> NPVariantH; -public: - operator operator_bool_type() const; - - NPVariantH(); - NPVariantH(const NPVariantH& iOther); - ~NPVariantH(); - NPVariantH& operator=(const NPVariantH& iOther); - - NPVariantH(const NPVariant& iOther); - NPVariantH& operator=(const NPVariant& iOther); - - NPVariantH(bool iValue); - NPVariantH(int32 iValue); - NPVariantH(double iValue); - NPVariantH(const string& iValue); - NPVariantH(const char* iValue); - NPVariantH(NPObjectH* iValue); - NPVariantH(const ZRef<NPObjectH>& iValue); - -// ZVal protocol - void Clear(); - - template <class S> - bool QGet_T(S& oVal) const; - - template <class S> - void Set_T(const S& iVal); - -// Our protocol - operator ZRef<NPObjectH>() const; - - void SetVoid(); - void SetNull(); - -// Typename accessors - ZMACRO_ZValAccessors_Decl_Entry(NPVariantH, Bool, bool) - ZMACRO_ZValAccessors_Decl_Entry(NPVariantH, Int32, int32) - ZMACRO_ZValAccessors_Decl_Entry(NPVariantH, Double, double) - ZMACRO_ZValAccessors_Decl_Entry(NPVariantH, String, string) - ZMACRO_ZValAccessors_Decl_Entry(NPVariantH, Object, ZRef<NPObjectH>) - -private: - void pSetString(const char* iChars, size_t iLength); - void pSetString(const string& iString); - void pCopyFrom(const NPVariant& iOther); - void pRelease(); - }; - // ================================================================================================= #pragma mark - #pragma mark * NPObjectH @@ -169,14 +116,24 @@ const NPVariantH& iP1, const NPVariantH& iP2); + bool Enumerate(NPIdentifier*& oIdentifiers, uint32_t& oCount); + bool Enumerate(std::vector<NPIdentifier>& oIdentifiers); + +// ZMap protocol (ish) + bool QGet(const std::string& iName, NPVariantH& oVal); + bool QGet(size_t iIndex, NPVariantH& oVal); + + NPVariantH DGet(const std::string& iName, const NPVariantH& iDefault); + NPVariantH DGet(size_t iIndex, const NPVariantH& iDefault); + NPVariantH Get(const string& iName); NPVariantH Get(size_t iIndex); bool Set(const string& iName, const NPVariantH& iValue); bool Set(size_t iIndex, const NPVariantH& iValue); - bool Enumerate(NPIdentifier*& oIdentifiers, uint32_t& oCount); - bool Enumerate(std::vector<NPIdentifier>& oIdentifiers); + bool Erase(const string& iName); + bool Erase(size_t iIndex); }; void sRetain(NPObjectH& iOb); Added: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.cpp (rev 0) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.cpp 2009-08-06 22:57:49 UTC (rev 916) @@ -0,0 +1,79 @@ +/* ------------------------------------------------------------------------------------------------- +Copyright (c) 2009 Andrew Green +http://www.zoolib.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------------------------- */ + +#include "zoolib/netscape/ZNetscape_Variant.h" + +NAMESPACE_ZOOLIB_BEGIN + +namespace ZNetscape { + +// ================================================================================================= +#pragma mark - +#pragma mark * NPVariantBase + +template <> +bool NPVariantBase::QGet_T<bool>(bool& oVal) const + { + if (type == NPVariantType_Bool) + { + oVal = value.boolValue; + return true; + } + return false; + } + +template <> +bool NPVariantBase::QGet_T(int32& oVal) const + { + if (type == NPVariantType_Int32) + { + oVal = value.intValue; + return true; + } + return false; + } + +template <> +bool NPVariantBase::QGet_T(double& oVal) const + { + if (type == NPVariantType_Double) + { + oVal = value.doubleValue; + return true; + } + return false; + } + +template <> +bool NPVariantBase::QGet_T(std::string& oVal) const + { + if (type == NPVariantType_String) + { + oVal = std::string( + sNPStringCharsConst(value.stringValue), + sNPStringLengthConst(value.stringValue)); + return true; + } + return false; + } + +} // namespace ZNetscape + +NAMESPACE_ZOOLIB_END Added: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h (rev 0) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h 2009-08-06 22:57:49 UTC (rev 916) @@ -0,0 +1,152 @@ +/* ------------------------------------------------------------------------------------------------- +Copyright (c) 2009 Andrew Green +http://www.zoolib.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------------------------- */ + +#ifndef __ZNetscape_Variant__ +#define __ZNetscape_Variant__ 1 +#include "zconfig.h" + +#include "zoolib/netscape/ZNetscape.h" +#include "zoolib/ZRef.h" +#include "zoolib/ZVal_Any.h" +#include "zoolib/ZValAccessors.h" + +NAMESPACE_ZOOLIB_BEGIN + +namespace ZNetscape { + +// ================================================================================================= +#pragma mark - +#pragma mark * NPVariantBase + +// NPVariantBase is only needed to work around our inability +// to have partial template member specialization. + +class NPVariantBase +: public NPVariant + { +public: +// ZVal Get protocol + template <class S> + bool QGet_T(S& oVal) const; + + template <class S> + S DGet_T(const S& iDefault) const + { + S result; + if (this->QGet_T(result)) + return result; + return iDefault; + } + + template <class S> + S Get_T() const + { return this->DGet_T(S()); } + }; + +// ================================================================================================= +#pragma mark - +#pragma mark * NPVariant_T + +template <class T> +void sRelease_T(T&); + +template <class T> +void* sMalloc_T(T&, size_t); + +template <class T> +class NPVariant_T +: public NPVariantBase + { +private: + void pCopyFrom(const NPVariant& iOther); + void pRelease(); + +public: + ZOOLIB_DEFINE_OPERATOR_BOOL_TYPES_T(NPVariant_T<T>, + operator_bool_generator_type, operator_bool_type); + + operator operator_bool_type() const; + + typedef T Object_t; + + ZVal_Any AsVal_Any() const; + ZVal_Any AsVal_Any(const ZVal_Any& iDefault) const; + + NPVariant_T(); + NPVariant_T(const NPVariant_T& iOther); + ~NPVariant_T(); + NPVariant_T& operator=(const NPVariant_T& iOther); + + NPVariant_T(const NPVariant& iOther); + NPVariant_T& operator=(const NPVariant& iOther); + + explicit NPVariant_T(bool iValue); + explicit NPVariant_T(int32 iValue); + explicit NPVariant_T(double iValue); + NPVariant_T(const std::string& iValue); + NPVariant_T(const char* iValue); + NPVariant_T(T* iValue); + NPVariant_T(const ZRef<T>& iValue); + + NPVariant_T& operator=(bool iValue); + NPVariant_T& operator=(int32 iValue); + NPVariant_T& operator=(double iValue); + NPVariant_T& operator=(const char* iValue); + NPVariant_T& operator=(const std::string& iValue); + NPVariant_T& operator=(T* iValue); + NPVariant_T& operator=(const ZRef<T>& iValue); + + operator ZRef<T>() const; + + bool IsVoid() const; + bool IsNull() const; + bool IsBool() const; + bool IsInt32() const; + bool IsDouble() const; + bool IsString() const; + bool IsObject() const; + +// Our protocol + void SetVoid(); + void SetNull(); + void SetBool(bool iValue); + void SetInt32(int32 iValue); + void SetDouble(double iValue); + void SetString(const std::string& iValue); + void SetObject(T* iValue); + void SetObject(const ZRef<T>& iValue); + +// Typename get accessors + ZMACRO_ZValAccessors_Decl_Get(NPVariant_T<T>, Bool, bool) + ZMACRO_ZValAccessors_Decl_Get(NPVariant_T<T>, Int32, int32) + ZMACRO_ZValAccessors_Decl_Get(NPVariant_T<T>, Double, double) + ZMACRO_ZValAccessors_Decl_Get(NPVariant_T<T>, String, std::string) + ZMACRO_ZValAccessors_Decl_Get(NPVariant_T<T>, Object, ZRef<T>) + +private: + void pSetString(const char* iChars, size_t iLength); + void pSetString(const std::string& iString); + }; + +} // namespace ZNetscape + +NAMESPACE_ZOOLIB_END + +#endif // __ZNetscape_Variant__ Added: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_VariantPriv.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_VariantPriv.h (rev 0) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_VariantPriv.h 2009-08-06 22:57:49 UTC (rev 916) @@ -0,0 +1,384 @@ +/* ------------------------------------------------------------------------------------------------- +Copyright (c) 2009 Andrew Green +http://www.zoolib.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------------------------- */ + +#ifndef __ZNetscape_VariantPriv__ +#define __ZNetscape_VariantPriv__ 1 +#include "zconfig.h" + +#include "zoolib/netscape/ZNetscape_Variant.h" + +NAMESPACE_ZOOLIB_BEGIN + +namespace ZNetscape { + +// ================================================================================================= +#pragma mark - +#pragma mark * NPVariant_T + +template <class T> +ZVal_Any NPVariant_T<T>::AsVal_Any() const + { return this->AsVal_Any(ZVal_Any()); } + +template <class T> +ZVal_Any NPVariant_T<T>::AsVal_Any(const ZVal_Any& iDefault) const + { + switch (type) + { + case NPVariantType_Bool: + { + return bool(value.boolValue); + } + case NPVariantType_Int32: + { + return int32(value.intValue); + break; + } + case NPVariantType_Double: + { + return value.doubleValue; + } + case NPVariantType_String: + { + return std::string( + sNPStringCharsConst(value.stringValue), + sNPStringLengthConst(value.stringValue)); + } + case NPVariantType_Object: + { + return ZRef<T>(static_cast<T*>(value.objectValue)); + } + } + return iDefault; + } + +template <class T> +void NPVariant_T<T>::pCopyFrom(const NPVariant& iOther) + { + switch (iOther.type) + { + case NPVariantType_Void: + case NPVariantType_Null: + break; + case NPVariantType_Bool: + { + value.boolValue = iOther.value.boolValue; + break; + } + case NPVariantType_Int32: + { + value.intValue = iOther.value.intValue; + break; + } + case NPVariantType_Double: + { + value.doubleValue = iOther.value.doubleValue; + break; + } + case NPVariantType_String: + { + this->pSetString( + sNPStringCharsConst(iOther.value.stringValue), + sNPStringLengthConst(iOther.value.stringValue)); + break; + } + case NPVariantType_Object: + { + value.objectValue = iOther.value.objectValue; + static_cast<T*>(value.objectValue)->Retain(); + break; + } + } + type = iOther.type; + } + +template <class T> +void NPVariant_T<T>::pRelease() + { sRelease_T(*this); } + +template <class T> +NPVariant_T<T>::operator operator_bool_type() const + { return operator_bool_generator_type::translate(type != NPVariantType_Void); } + +template <class T> +NPVariant_T<T>::NPVariant_T() + { type = NPVariantType_Void; } + +template <class T> +NPVariant_T<T>::NPVariant_T(const NPVariant_T& iOther) + { + ZAssert(this != &iOther); + this->pCopyFrom(iOther); + } + +template <class T> +NPVariant_T<T>::~NPVariant_T() + { this->pRelease(); } + +template <class T> +NPVariant_T<T>& NPVariant_T<T>::operator=(const NPVariant_T& iOther) + { + if (this != &iOther) + { + this->pRelease(); + this->pCopyFrom(iOther); + } + return *this; + } + +template <class T> +NPVariant_T<T>::NPVariant_T(const NPVariant& iOther) + { + ZAssert(this != &iOther); + this->pCopyFrom(iOther); + } + +template <class T> +NPVariant_T<T>& NPVariant_T<T>::operator=(const NPVariant& iOther) + { + if (this != &iOther) + { + this->pRelease(); + this->pCopyFrom(iOther); + } + return *this; + } + +template <class T> +NPVariant_T<T>::NPVariant_T(bool iValue) + { + type = NPVariantType_Bool; + value.boolValue = iValue; + } + +template <class T> +NPVariant_T<T>::NPVariant_T(int32 iValue) + { + type = NPVariantType_Int32; + value.intValue = iValue; + } + +template <class T> +NPVariant_T<T>::NPVariant_T(double iValue) + { + type = NPVariantType_Double; + value.doubleValue = iValue; + } + +template <class T> +NPVariant_T<T>::NPVariant_T(const std::string& iValue) + { + this->pSetString(iValue); + type = NPVariantType_String; + } + +template <class T> +NPVariant_T<T>::NPVariant_T(const char* iValue) + { + this->pSetString(iValue); + type = NPVariantType_String; + } + +template <class T> +NPVariant_T<T>::NPVariant_T(T* iValue) + { + type = NPVariantType_Void; + this->SetObject(iValue); + } + +template <class T> +NPVariant_T<T>::NPVariant_T(const ZRef<T>& iValue) + { + type = NPVariantType_Void; + this->SetObject(iValue); + } + +template <class T> +NPVariant_T<T>& NPVariant_T<T>::operator=(bool iValue) + { + this->SetBool(iValue); + return *this; + } + +template <class T> +NPVariant_T<T>& NPVariant_T<T>::operator=(int32 iValue) + { + this->SetInt32(iValue); + return *this; + } + +template <class T> +NPVariant_T<T>& NPVariant_T<T>::operator=(double iValue) + { + this->SetDouble(iValue); + return *this; + } + +template <class T> +NPVariant_T<T>& NPVariant_T<T>::operator=(const char* iValue) + { + this->SetString(iValue); + return *this; + } + +template <class T> +NPVariant_T<T>& NPVariant_T<T>::operator=(const std::string& iValue) + { + this->SetString(iValue); + return *this; + } + +template <class T> +NPVariant_T<T>& NPVariant_T<T>::operator=(T* iValue) + { + this->SetObject(iValue); + return *this; + } + +template <class T> +NPVariant_T<T>& NPVariant_T<T>::operator=(const ZRef<T>& iValue) + { + this->SetObject(iValue.Get()); + return *this; + } + +template <class T> +NPVariant_T<T>::operator ZRef<T>() const + { return ZRef<T>(this->GetObject()); } + +template <class T> +bool NPVariant_T<T>::IsVoid() const + { return type == NPVariantType_Void; } + +template <class T> +bool NPVariant_T<T>::IsNull() const + { return type == NPVariantType_Null; } + +template <class T> +bool NPVariant_T<T>::IsBool() const + { return type == NPVariantType_Bool; } + +template <class T> +bool NPVariant_T<T>::IsInt32() const + { return type == NPVariantType_Int32; } + +template <class T> +bool NPVariant_T<T>::IsDouble() const + { return type == NPVariantType_Double; } + +template <class T> +bool NPVariant_T<T>::IsString() const + { return type == NPVariantType_String; } + +template <class T> +bool NPVariant_T<T>::IsObject() const + { return type == NPVariantType_Object; } + +template <class T> +void NPVariant_T<T>::SetVoid() + { + this->pRelease(); + type = NPVariantType_Void; + } + +template <class T> +void NPVariant_T<T>::SetNull() + { + this->pRelease(); + type = NPVariantType_Null; + } + +template <class T> +void NPVariant_T<T>::SetBool(bool iValue) + { + this->pRelease(); + value.boolValue = iValue; + type = NPVariantType_Bool; + } + +template <class T> +void NPVariant_T<T>::SetInt32(int32 iValue) + { + this->pRelease(); + value.intValue = iValue; + type = NPVariantType_Int32; + } + +template <class T> +void NPVariant_T<T>::SetDouble(double iValue) + { + this->pRelease(); + value.doubleValue = iValue; + type = NPVariantType_Double; + } + +template <class T> +void NPVariant_T<T>::SetString(const std::string& iValue) + { + this->pRelease(); + this->pSetString(iValue); + type = NPVariantType_String; + } + +template <class T> +void NPVariant_T<T>::SetObject(T* iValue) + { + iValue->Retain(); + this->pRelease(); + value.objectValue = iValue; + type = NPVariantType_Object; + } + +template <class T> +void NPVariant_T<T>::SetObject(const ZRef<T>& iValue) + { this->SetObject(iValue.Get()); } + +template <class T> +void NPVariant_T<T>::pSetString(const char* iChars, size_t iLength) + { + sNPStringLength(value.stringValue) = iLength; + char* p = static_cast<char*>(sMalloc_T(*this, iLength + 1)); + strncpy(p, iChars, iLength); + sNPStringChars(value.stringValue) = p; + } + +template <class T> +void NPVariant_T<T>::pSetString(const std::string& iString) + { + if (size_t theLength = iString.length()) + this->pSetString(iString.data(), theLength); + else + this->pSetString(nullptr, 0); + } + +// ================================================================================================= +#pragma mark - +#pragma mark * NPVariant_T<T> typename accessors + +ZMACRO_ZValAccessors_Def_GetP(template <class T>, NPVariant_T<T>, Bool, bool) +ZMACRO_ZValAccessors_Def_GetP(template <class T>, NPVariant_T<T>, Int32, int32) +ZMACRO_ZValAccessors_Def_GetP(template <class T>, NPVariant_T<T>, Double, double) +ZMACRO_ZValAccessors_Def_GetP(template <class T>, NPVariant_T<T>, String, std::string) +ZMACRO_ZValAccessors_Def_GetP(template <class T>, NPVariant_T<T>, Object, ZRef<T>) + +} // namespace ZNetscape + +NAMESPACE_ZOOLIB_END + +#endif // __ZNetscape_VariantPriv__ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2010-06-20 16:16:16
|
Revision: 1438 http://zoolib.svn.sourceforge.net/zoolib/?rev=1438&view=rev Author: agreen Date: 2010-06-20 16:16:10 +0000 (Sun, 20 Jun 2010) Log Message: ----------- Conditionalize on being non-64 bit. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp 2010-06-20 16:15:36 UTC (rev 1437) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp 2010-06-20 16:16:10 UTC (rev 1438) @@ -22,6 +22,7 @@ #include "zoolib/netscape/ZNetscape_Host_Mac.h" +#if ! ZCONFIG_Is64Bit #if defined(XP_MAC) || defined(XP_MACOSX) #include "zoolib/ZLog.h" @@ -887,3 +888,4 @@ } // namespace ZooLib #endif // defined(XP_MAC) || defined(XP_MACOSX) +#endif // ! ZCONFIG_Is64Bit Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.h 2010-06-20 16:15:36 UTC (rev 1437) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.h 2010-06-20 16:16:10 UTC (rev 1438) @@ -22,6 +22,8 @@ #define __ZNetscape_Host_Mac__ 1 #include "zconfig.h" +#if ! ZCONFIG_Is64Bit + #include "zoolib/ZGeometry.h" #include "zoolib/netscape/ZNetscape_Host_Std.h" @@ -161,4 +163,6 @@ } // namespace ZooLib +#endif // ! ZCONFIG_Is64Bit + #endif // __ZNetscape_Host_Mac__ Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp 2010-06-20 16:15:36 UTC (rev 1437) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp 2010-06-20 16:16:10 UTC (rev 1438) @@ -20,6 +20,7 @@ #include "zoolib/netscape/ZNetscape_Host_Win.h" +#if ! ZCONFIG_Is64Bit #if defined(XP_WIN) #include "zoolib/ZLog.h" @@ -273,3 +274,4 @@ } // namespace ZooLib #endif // defined(XP_WIN) +#endif // ! ZCONFIG_Is64Bit Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h 2010-06-20 16:15:36 UTC (rev 1437) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h 2010-06-20 16:16:10 UTC (rev 1438) @@ -22,6 +22,8 @@ #define __ZNetscape_Host_Win__ 1 #include "zconfig.h" +#if ! ZCONFIG_Is64Bit + #include "zoolib/netscape/ZNetscape_Host_Std.h" #if defined(XP_WIN) @@ -75,4 +77,6 @@ #endif // defined(XP_WIN) +#endif // ! ZCONFIG_Is64Bit + #endif // __ZNetscape_Host_Win__ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2011-07-07 22:09:21
|
Revision: 2327 http://zoolib.svn.sourceforge.net/zoolib/?rev=2327&view=rev Author: agreen Date: 2011-07-07 22:09:15 +0000 (Thu, 07 Jul 2011) Log Message: ----------- Conform to ZWorker changes. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.mm trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.h 2011-07-07 22:04:58 UTC (rev 2326) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.h 2011-07-07 22:09:15 UTC (rev 2327) @@ -27,6 +27,7 @@ #if defined(__OBJC__) #if ZCONFIG_SPI_Enabled(Cocoa) +#include "zoolib/ZCallable.h" #include "zoolib/netscape/ZNetscape_Host_Std.h" #include <AppKit/NSView.h> @@ -83,8 +84,7 @@ void pDoSetWindow(); NSView_NetscapeHost* fView; - class Worker_Timer; - ZRef<Worker_Timer> fWorker_Timer; + ZRef<ZCallable_Void> fCallable_Timer; NPWindow fNPWindow; Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.mm =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.mm 2011-07-07 22:04:58 UTC (rev 2326) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.mm 2011-07-07 22:09:15 UTC (rev 2327) @@ -25,13 +25,15 @@ #include <AppKit/NSEvent.h> #include <AppKit/NSGraphicsContext.h> +#include "zoolib/ZCallable_PMF.h" +#include "zoolib/ZCaller_CFRunLoop.h" +#include "zoolib/ZCallScheduler.h" #include "zoolib/ZLog.h" #include "zoolib/ZMemory.h" #include "zoolib/ZRGBA.h" #include "zoolib/ZStream_String.h" #include "zoolib/ZUtil_Strim_Geom.h" #include "zoolib/ZWorker.h" -#include "zoolib/ZWorkerRunner_CFRunLoop.h" // ================================================================================================= #pragma mark - @@ -172,44 +174,17 @@ namespace ZooLib { namespace ZNetscape { -class Host_Cocoa::Worker_Timer : public ZWorker - { -public: - Worker_Timer(Host_Cocoa* iHost) - : fHost(iHost) - {} - - virtual bool Work() - { - if (fHost) - { - fHost->Timer(); - this->WakeIn(50e-3); // 50ms - return true; - } - return false; - } - - virtual void Kill() - { - fHost = nullptr; - } - - Host_Cocoa* fHost; - }; - Host_Cocoa::Host_Cocoa(ZRef<GuestFactory> iGuestFactory, NSView_NetscapeHost* iView) : Host_Std(iGuestFactory) , fView(iView) +, fCallable_Timer(sCallable(this, &Host_Cocoa::Timer)) { ZMemZero_T(fNP_CGContext); ZMemZero_T(fNP_CGContext_Prior); if (fView) fView->fHost = this; - fWorker_Timer = new Worker_Timer(this); - ZWorkerRunner_CFRunLoop::sMain()->Attach(fWorker_Timer); - fWorker_Timer->Wake(); + ZCallScheduler::sGet()->NextCallIn(50e-3, ZCaller_CFRunLoop::sMain(), fCallable_Timer); // fNPWindow.type = NPWindowTypeWindow; fNPWindow.type = NPWindowTypeDrawable;//NPWindowTypeWindow; @@ -226,11 +201,7 @@ Host_Cocoa::~Host_Cocoa() { - if (ZRef<ZWorker> theWorker = fWorker_Timer) - { - fWorker_Timer.Clear(); - theWorker->Kill(); - } + fCallable_Timer.Clear(); if (fView) ZAssert(fView->fHost == this); @@ -440,7 +411,11 @@ void Host_Cocoa::Timer() { - Host_Std::DeliverData(); + if (fCallable_Timer) + { + Host_Std::DeliverData(); + ZCallScheduler::sGet()->NextCallIn(50e-3, ZCaller_CFRunLoop::sMain(), fCallable_Timer); + } } void Host_Cocoa::FrameChanged() Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp 2011-07-07 22:04:58 UTC (rev 2326) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp 2011-07-07 22:09:15 UTC (rev 2327) @@ -32,6 +32,7 @@ #include "zoolib/ZStream_String.h" #include "zoolib/ZUtil_CarbonEvents.h" #include "zoolib/ZUtil_Strim_Geom.h" +#include "zoolib/ZUtil_Strim_Operators.h" #if UNIVERSAL_INTERFACES_VERSION <= 0x0341 enum @@ -56,10 +57,11 @@ static void spWriteEvent(const ZStrimW&s, const EventRecord& iER) { - s << "what: " << ZUtil_CarbonEvents::sEventTypeAsString(iER.what) << ", "; - - s.Writef("message: %u, when: %u, where: (%d, %d), modifiers: %u", - iER.message, iER.when, iER.where.h, iER.where.v, iER.modifiers); + s << "what: " << ZUtil_CarbonEvents::sEventTypeAsString(iER.what) + << ", message: " << iER.message + << ", when: " << iER.when + << ", where: (" << iER.where.h << ", " << iER.where.v + << ", modifiers: " << iER.modifiers; } #if defined(XP_MACOSX) Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp 2011-07-07 22:04:58 UTC (rev 2326) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp 2011-07-07 22:09:15 UTC (rev 2327) @@ -20,6 +20,7 @@ #include "zoolib/netscape/ZNetscape_Host_Std.h" +#include "zoolib/ZCaller_Thread.h" #include "zoolib/ZCompat_string.h" // For strdup #include "zoolib/ZDebug.h" #include "zoolib/ZHTTP_Requests.h" @@ -522,16 +523,16 @@ // ================================================================================================= #pragma mark - -#pragma mark * Host_Std::HTTPer +#pragma mark * Host_Std::HTTPFetcher class Host_Std::HTTPFetcher -: public ZWorker +: public ZCallable_Void { public: HTTPFetcher(Host_Std* iHost, const string& iURL, ZHTTP::Data* iData, void* iNotifyData); -// From ZWorker - virtual bool Work(); +// From ZCallable_Void + virtual void Call(); void Cancel(); @@ -560,7 +561,7 @@ } } -bool Host_Std::HTTPFetcher::Work() +void Host_Std::HTTPFetcher::Call() { try { @@ -587,7 +588,7 @@ fHost->pHTTPFetcher (this, fNotifyData, theURL, theMIME, theRawHeaders, theStreamerR); - return false; + return; } } catch (...) @@ -599,8 +600,6 @@ fHost->pHTTPFetcher (this, fNotifyData, fURL, "", ZHTTP::Data(), null); } - - return false; } void Host_Std::HTTPFetcher::Cancel() @@ -894,7 +893,7 @@ { ZRef<HTTPFetcher> theFetcher = new HTTPFetcher(this, theURL, nullptr, notifyData); fHTTPFetchers.Insert(theFetcher); - sStartWorkerRunner(theFetcher); + sCallOnNewThread(theFetcher); return NPERR_NO_ERROR; } @@ -917,7 +916,7 @@ ZHTTP::Data theData(buf, len); ZRef<HTTPFetcher> theFetcher = new HTTPFetcher(this, theURL, &theData, notifyData); fHTTPFetchers.Insert(theFetcher); - sStartWorkerRunner(theFetcher); + sCallOnNewThread(theFetcher); return NPERR_NO_ERROR; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2009-08-06 23:50:45
|
Revision: 917 http://zoolib.svn.sourceforge.net/zoolib/?rev=917&view=rev Author: agreen Date: 2009-08-06 23:50:31 +0000 (Thu, 06 Aug 2009) Log Message: ----------- Templateize NPObjectG and NPObjectH, so the ZMap-like stuff can be common. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h Added Paths: ----------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_ObjectPriv.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp 2009-08-06 22:57:49 UTC (rev 916) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp 2009-08-06 23:50:31 UTC (rev 917) @@ -19,6 +19,7 @@ ------------------------------------------------------------------------------------------------- */ #include "zoolib/netscape/ZNetscape_Guest.h" +#include "zoolib/netscape/ZNetscape_ObjectPriv.h" #include "zoolib/netscape/ZNetscape_VariantPriv.h" #include "zoolib/ZCompat_algorithm.h" @@ -87,16 +88,26 @@ void* sMalloc_T(NPVariantG&, size_t iLength) { return GuestMeister::sGet()->Host_MemAlloc(iLength); } +template <> +void sFree_T<NPVariantG>(void* iPtr) + { return GuestMeister::sGet()->Host_MemFree(iPtr); } + // ================================================================================================= #pragma mark - #pragma mark * NPObjectG +// Explicitly instantiate NPObjectG +template class NPObject_T<NPVariantG>; + +void sRetain(NPObjectG& iOb) + { iOb.Retain(); } + +void sRelease(NPObjectG& iOb) + { iOb.Release(); } + NPObjectG::NPObjectG() {} -NPObjectG::~NPObjectG() - {} - bool NPObjectG::sIsString(NPIdentifier iNPI) { return GuestMeister::sGet()->Host_IdentifierIsString(iNPI); } @@ -171,137 +182,10 @@ { return GuestMeister::sGet()->Host_RemoveProperty( NPPSetter::sCurrent(), this, sAsNPI(iIndex)); } -NPVariantG NPObjectG::Invoke(const std::string& iName, const NPVariantG* iArgs, size_t iCount) - { - NPVariantG result; - this->Invoke(iName, iArgs, iCount, result); - return result; - } - -NPVariantG NPObjectG::Invoke(const std::string& iName) - { - NPVariantG result; - this->Invoke(iName, nullptr, 0, result); - return result; - } - -NPVariantG NPObjectG::Invoke(const std::string& iName, - const NPVariantG& iP0) - { return this->Invoke(iName, &iP0, 1); } - -NPVariantG NPObjectG::Invoke(const std::string& iName, - const NPVariantG& iP0, - const NPVariantG& iP1) - { - NPVariantG arr[] = { iP0, iP1}; - return this->Invoke(iName, arr, countof(arr)); - } - -NPVariantG NPObjectG::Invoke(const std::string& iName, - const NPVariantG& iP0, - const NPVariantG& iP1, - const NPVariantG& iP2) - { - NPVariantG arr[] = { iP0, iP1, iP2 }; - return this->Invoke(iName, arr, countof(arr)); - } - -NPVariantG NPObjectG::InvokeDefault(const NPVariantG* iArgs, size_t iCount) - { - NPVariantG result; - this->InvokeDefault(iArgs, iCount, result); - return result; - } - -NPVariantG NPObjectG::InvokeDefault() - { return this->InvokeDefault(nullptr, 0); } - -NPVariantG NPObjectG::InvokeDefault( - const NPVariantG& iP0) - { return this->InvokeDefault(&iP0, 1); } - -NPVariantG NPObjectG::InvokeDefault( - const NPVariantG& iP0, - const NPVariantG& iP1) - { - NPVariantG arr[] = { iP0, iP1 }; - return this->InvokeDefault(arr, countof(arr)); - } - -NPVariantG NPObjectG::InvokeDefault( - const NPVariantG& iP0, - const NPVariantG& iP1, - const NPVariantG& iP2) - { - NPVariantG arr[] = { iP0, iP1, iP2 }; - return this->InvokeDefault(arr, countof(arr)); - } - bool NPObjectG::Enumerate(NPIdentifier*& oIdentifiers, uint32_t& oCount) { return GuestMeister::sGet()->Host_Enumerate( NPPSetter::sCurrent(), this, &oIdentifiers, &oCount); } -bool NPObjectG::Enumerate(std::vector<NPIdentifier>& oIdentifiers) - { - oIdentifiers.clear(); - NPIdentifier* theIDs = nullptr; - uint32_t theCount; - if (!this->Enumerate(theIDs, theCount)) - return false; - - oIdentifiers.insert(oIdentifiers.end(), theIDs, theIDs + theCount); - - GuestMeister::sGet()->Host_MemFree(theIDs); - - return true; - } - -bool NPObjectG::QGet(const std::string& iName, NPVariantG& oVal) - { return this->GetProperty(iName, oVal); } - -bool NPObjectG::QGet(size_t iIndex, NPVariantG& oVal) - { return this->GetProperty(iIndex, oVal); } - -NPVariantG NPObjectG::DGet(const std::string& iName, const NPVariantG& iDefault) - { - NPVariantG result; - if (this->GetProperty(iName, result)) - return result; - return iDefault; - } - -NPVariantG NPObjectG::DGet(size_t iIndex, const NPVariantG& iDefault) - { - NPVariantG result; - if (this->GetProperty(iIndex, result)) - return result; - return iDefault; - } - -NPVariantG NPObjectG::Get(const std::string& iName) - { return this->DGet(iName, NPVariantG()); } - -NPVariantG NPObjectG::Get(size_t iIndex) - { return this->DGet(iIndex, NPVariantG()); } - -bool NPObjectG::Set(const std::string& iName, const NPVariantG& iValue) - { return this->SetProperty(iName, iValue); } - -bool NPObjectG::Set(size_t iIndex, const NPVariantG& iValue) - { return this->SetProperty(iIndex, iValue); } - -bool NPObjectG::Erase(const string& iName) - { return this->RemoveProperty(iName); } - -bool NPObjectG::Erase(size_t iIndex) - { return this->RemoveProperty(iIndex); } - -void sRetain(NPObjectG& iOb) - { iOb.Retain(); } - -void sRelease(NPObjectG& iOb) - { iOb.Release(); } - // ================================================================================================= #pragma mark - #pragma mark * ObjectG Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h 2009-08-06 22:57:49 UTC (rev 916) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h 2009-08-06 23:50:31 UTC (rev 917) @@ -23,6 +23,7 @@ #include "zconfig.h" #include "zoolib/netscape/ZNetscape.h" +#include "zoolib/netscape/ZNetscape_Object.h" #include "zoolib/netscape/ZNetscape_Variant.h" #include "zoolib/ZRef.h" #include "zoolib/ZVal.h" @@ -63,11 +64,14 @@ #pragma mark - #pragma mark * NPObjectG -class NPObjectG : public NPObject +void sRetain(NPObjectG& iOb); +void sRelease(NPObjectG& iOb); + +class NPObjectG +: public NPObject_T<NPVariantG> { protected: NPObjectG(); - ~NPObjectG(); public: static bool sIsString(NPIdentifier iNPI); @@ -81,8 +85,12 @@ void Release(); bool HasMethod(const std::string& iName); + + using Base_t::Invoke; bool Invoke( const std::string& iName, const NPVariantG* iArgs, size_t iCount, NPVariantG& oResult); + + using Base_t::InvokeDefault; bool InvokeDefault(const NPVariantG* iArgs, size_t iCount, NPVariantG& oResult); bool HasProperty(const std::string& iName); @@ -97,62 +105,9 @@ bool RemoveProperty(const std::string& iName); bool RemoveProperty(size_t iIndex); - NPVariantG Invoke(const std::string& iName, - const NPVariantG* iArgs, size_t iCount); - - NPVariantG Invoke(const std::string& iName); - - NPVariantG Invoke(const std::string& iName, - const NPVariantG& iP0); - - NPVariantG Invoke(const std::string& iName, - const NPVariantG& iP0, - const NPVariantG& iP1); - - NPVariantG Invoke(const std::string& iName, - const NPVariantG& iP0, - const NPVariantG& iP1, - const NPVariantG& iP2); - - NPVariantG InvokeDefault(const NPVariantG* iArgs, size_t iCount); - - NPVariantG InvokeDefault(); - - NPVariantG InvokeDefault( - const NPVariantG& iP0); - - NPVariantG InvokeDefault( - const NPVariantG& iP0, - const NPVariantG& iP1); - - NPVariantG InvokeDefault( - const NPVariantG& iP0, - const NPVariantG& iP1, - const NPVariantG& iP2); - bool Enumerate(NPIdentifier*& oIdentifiers, uint32_t& oCount); - bool Enumerate(std::vector<NPIdentifier>& oIdentifiers); - -// ZMap protocol (ish) - bool QGet(const std::string& iName, NPVariantG& oVal); - bool QGet(size_t iIndex, NPVariantG& oVal); - - NPVariantG DGet(const std::string& iName, const NPVariantG& iDefault); - NPVariantG DGet(size_t iIndex, const NPVariantG& iDefault); - - NPVariantG Get(const std::string& iName); - NPVariantG Get(size_t iIndex); - - bool Set(const std::string& iName, const NPVariantG& iValue); - bool Set(size_t iIndex, const NPVariantG& iValue); - - bool Erase(const string& iName); - bool Erase(size_t iIndex); }; -void sRetain(NPObjectG& iOb); -void sRelease(NPObjectG& iOb); - // ================================================================================================= #pragma mark - #pragma mark * ObjectG @@ -167,6 +122,7 @@ ObjectG(); virtual ~ObjectG(); + virtual void Imp_Invalidate(); virtual bool Imp_HasMethod(const std::string& iName); @@ -174,7 +130,6 @@ const std::string& iName, const NPVariantG* iArgs, size_t iCount, NPVariantG& oResult); virtual bool Imp_InvokeDefault(const NPVariantG* iArgs, size_t iCount, NPVariantG& oResult); - virtual bool Imp_HasProperty(const std::string& iName); virtual bool Imp_HasProperty(int32_t iInt); virtual bool Imp_GetProperty(const std::string& iName, NPVariantG& oResult); Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp 2009-08-06 22:57:49 UTC (rev 916) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp 2009-08-06 23:50:31 UTC (rev 917) @@ -19,6 +19,7 @@ ------------------------------------------------------------------------------------------------- */ #include "zoolib/netscape/ZNetscape_Host.h" +#include "zoolib/netscape/ZNetscape_ObjectPriv.h" #include "zoolib/netscape/ZNetscape_VariantPriv.h" #include "zoolib/ZDebug.h" @@ -64,10 +65,17 @@ void* sMalloc_T(NPVariantH&, size_t iLength) { return HostMeister::sGet()->MemAlloc(iLength); } +template <> +void sFree_T<NPVariantH>(void* iPtr) + { return HostMeister::sGet()->MemFree(iPtr); } + // ================================================================================================= #pragma mark - #pragma mark * NPObjectH +// Explicitly instantiate NPObjectH +template class NPObject_T<NPVariantH>; + void sRetain(NPObjectH& iOb) { iOb.Retain(); } @@ -79,8 +87,6 @@ NPObjectH::NPObjectH() {} -NPObjectH::~NPObjectH() - {} bool NPObjectH::sIsString(NPIdentifier iNPI) { return HostMeister::sGet()->IdentifierIsString(iNPI); } @@ -145,129 +151,9 @@ bool NPObjectH::RemoveProperty(size_t iIndex) { return HostMeister::sGet()->RemoveProperty(fake, this, sAsNPI(iIndex)); } -NPVariantH NPObjectH::Invoke(const string& iName, const NPVariantH* iArgs, size_t iCount) - { - NPVariantH result; - this->Invoke(iName, iArgs, iCount, result); - return result; - } - -NPVariantH NPObjectH::Invoke(const string& iName) - { - NPVariantH result; - this->Invoke(iName, nullptr, 0, result); - return result; - } - -NPVariantH NPObjectH::Invoke(const string& iName, - const NPVariantH& iP0) - { return this->Invoke(iName, &iP0, 1); } - -NPVariantH NPObjectH::Invoke(const string& iName, - const NPVariantH& iP0, - const NPVariantH& iP1) - { - NPVariantH arr[] = { iP0, iP1}; - return this->Invoke(iName, arr, countof(arr)); - } - -NPVariantH NPObjectH::Invoke(const string& iName, - const NPVariantH& iP0, - const NPVariantH& iP1, - const NPVariantH& iP2) - { - NPVariantH arr[] = { iP0, iP1, iP2 }; - return this->Invoke(iName, arr, countof(arr)); - } - -NPVariantH NPObjectH::InvokeDefault(const NPVariantH* iArgs, size_t iCount) - { - NPVariantH result; - this->InvokeDefault(iArgs, iCount, result); - return result; - } - -NPVariantH NPObjectH::InvokeDefault() - { return this->InvokeDefault(nullptr, 0); } - -NPVariantH NPObjectH::InvokeDefault( - const NPVariantH& iP0) - { return this->InvokeDefault(&iP0, 1); } - -NPVariantH NPObjectH::InvokeDefault( - const NPVariantH& iP0, - const NPVariantH& iP1) - { - NPVariantH arr[] = { iP0, iP1 }; - return this->InvokeDefault(arr, countof(arr)); - } - -NPVariantH NPObjectH::InvokeDefault( - const NPVariantH& iP0, - const NPVariantH& iP1, - const NPVariantH& iP2) - { - NPVariantH arr[] = { iP0, iP1, iP2 }; - return this->InvokeDefault(arr, countof(arr)); - } - bool NPObjectH::Enumerate(NPIdentifier*& oIdentifiers, uint32_t& oCount) { return HostMeister::sGet()->Enumerate(fake, this, &oIdentifiers, &oCount); } -bool NPObjectH::Enumerate(std::vector<NPIdentifier>& oIdentifiers) - { - oIdentifiers.clear(); - NPIdentifier* theIDs = nullptr; - uint32_t theCount; - if (!this->Enumerate(theIDs, theCount)) - return false; - - oIdentifiers.insert(oIdentifiers.end(), theIDs, theIDs + theCount); - HostMeister::sGet()->MemFree(theIDs); - - return true; - } - -bool NPObjectH::QGet(const std::string& iName, NPVariantH& oVal) - { return this->GetProperty(iName, oVal); } - -bool NPObjectH::QGet(size_t iIndex, NPVariantH& oVal) - { return this->GetProperty(iIndex, oVal); } - -NPVariantH NPObjectH::DGet(const std::string& iName, const NPVariantH& iDefault) - { - NPVariantH result; - if (this->GetProperty(iName, result)) - return result; - return iDefault; - } - -NPVariantH NPObjectH::DGet(size_t iIndex, const NPVariantH& iDefault) - { - NPVariantH result; - if (this->GetProperty(iIndex, result)) - return result; - return iDefault; - } - -NPVariantH NPObjectH::Get(const std::string& iName) - { return this->DGet(iName, NPVariantH()); } - -NPVariantH NPObjectH::Get(size_t iIndex) - { return this->DGet(iIndex, NPVariantH()); } - -bool NPObjectH::Set(const string& iName, const NPVariantH& iValue) - { return this->SetProperty(iName, iValue); } - -bool NPObjectH::Set(size_t iIndex, const NPVariantH& iValue) - { return this->SetProperty(iIndex, iValue); } - -bool NPObjectH::Erase(const string& iName) - { return this->RemoveProperty(iName); } - -bool NPObjectH::Erase(size_t iIndex) - { return this->RemoveProperty(iIndex); } - // ================================================================================================= #pragma mark - #pragma mark * ObjectH Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h 2009-08-06 22:57:49 UTC (rev 916) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h 2009-08-06 23:50:31 UTC (rev 917) @@ -23,6 +23,7 @@ #include "zconfig.h" #include "zoolib/netscape/ZNetscape.h" +#include "zoolib/netscape/ZNetscape_Object.h" #include "zoolib/netscape/ZNetscape_Variant.h" #include "zoolib/ZDebug.h" // For ZAssert @@ -49,11 +50,14 @@ #pragma mark - #pragma mark * NPObjectH -class NPObjectH : public NPObject +void sRetain(NPObjectH& iOb); +void sRelease(NPObjectH& iOb); + +class NPObjectH +: public NPObject_T<NPVariantH> { protected: NPObjectH(); - ~NPObjectH(); public: static bool sIsString(NPIdentifier iNPI); @@ -67,8 +71,12 @@ void Release(); bool HasMethod(const string& iName); + + using Base_t::Invoke; bool Invoke( const string& iName, const NPVariantH* iArgs, size_t iCount, NPVariantH& oResult); + + using Base_t::InvokeDefault; bool InvokeDefault(const NPVariantH* iArgs, size_t iCount, NPVariantH& oResult); bool HasProperty(const string& iName); @@ -83,92 +91,11 @@ bool RemoveProperty(const string& iName); bool RemoveProperty(size_t iIndex); - NPVariantH Invoke(const string& iName, - const NPVariantH* iArgs, size_t iCount); - - NPVariantH Invoke(const string& iName); - - NPVariantH Invoke(const string& iName, - const NPVariantH& iP0); - - NPVariantH Invoke(const string& iName, - const NPVariantH& iP0, - const NPVariantH& iP1); - - NPVariantH Invoke(const string& iName, - const NPVariantH& iP0, - const NPVariantH& iP1, - const NPVariantH& iP2); - - NPVariantH InvokeDefault(const NPVariantH* iArgs, size_t iCount); - - NPVariantH InvokeDefault(); - - NPVariantH InvokeDefault( - const NPVariantH& iP0); - - NPVariantH InvokeDefault( - const NPVariantH& iP0, - const NPVariantH& iP1); - - NPVariantH InvokeDefault( - const NPVariantH& iP0, - const NPVariantH& iP1, - const NPVariantH& iP2); - bool Enumerate(NPIdentifier*& oIdentifiers, uint32_t& oCount); - bool Enumerate(std::vector<NPIdentifier>& oIdentifiers); - -// ZMap protocol (ish) - bool QGet(const std::string& iName, NPVariantH& oVal); - bool QGet(size_t iIndex, NPVariantH& oVal); - - NPVariantH DGet(const std::string& iName, const NPVariantH& iDefault); - NPVariantH DGet(size_t iIndex, const NPVariantH& iDefault); - - NPVariantH Get(const string& iName); - NPVariantH Get(size_t iIndex); - - bool Set(const string& iName, const NPVariantH& iValue); - bool Set(size_t iIndex, const NPVariantH& iValue); - - bool Erase(const string& iName); - bool Erase(size_t iIndex); }; -void sRetain(NPObjectH& iOb); -void sRelease(NPObjectH& iOb); - // ================================================================================================= #pragma mark - -#pragma mark * MapH - -// Sketch of API -- value semantics is an issue. - -typedef NPVariantH ValH; - -class MapH -: public ZRef<NPObjectH> - { -public: - MapH(); - MapH(const MapH& iOther); - ~MapH(); - MapH& operator=(const MapH& iOther); - - MapH(const ZRef<NPObjectH>& iOther); - MapH& operator=(const ZRef<NPObjectH>& iOther); - -// Map protocol - bool QGet(const string& iName, ValH& oVal) const; - ValH DGet(const ValH& iDefault, const string& iName) const; - ValH Get(const string& iName) const; - void Set(const string& iName, const ValH& iVal); - void Erase(const string& iName); - }; - -// ================================================================================================= -#pragma mark - #pragma mark * ObjectH class ObjectH : public NPObjectH @@ -176,6 +103,7 @@ protected: ObjectH(); virtual ~ObjectH(); + virtual void Imp_Invalidate(); virtual bool Imp_HasMethod(const string& iName); @@ -183,7 +111,6 @@ const string& iName, const NPVariantH* iArgs, size_t iCount, NPVariantH& oResult); virtual bool Imp_InvokeDefault(const NPVariantH* iArgs, size_t iCount, NPVariantH& oResult); - virtual bool Imp_HasProperty(const string& iName); virtual bool Imp_HasProperty(int32_t iInt); virtual bool Imp_GetProperty(const string& iName, NPVariantH& oResult); Added: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.cpp (rev 0) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.cpp 2009-08-06 23:50:31 UTC (rev 917) @@ -0,0 +1,29 @@ +/* ------------------------------------------------------------------------------------------------- +Copyright (c) 2009 Andrew Green +http://www.zoolib.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------------------------- */ + +#include "zoolib/netscape/ZNetscape_Object.h" + +NAMESPACE_ZOOLIB_BEGIN + +namespace ZNetscape { + +} // namespace ZNetscape + +NAMESPACE_ZOOLIB_END Added: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.h (rev 0) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.h 2009-08-06 23:50:31 UTC (rev 917) @@ -0,0 +1,104 @@ +/* ------------------------------------------------------------------------------------------------- +Copyright (c) 2009 Andrew Green +http://www.zoolib.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------------------------- */ + +#ifndef __ZNetscape_Object__ +#define __ZNetscape_Object__ 1 +#include "zconfig.h" + +#include "zoolib/netscape/ZNetscape.h" + +#include <string> +#include <vector> + +NAMESPACE_ZOOLIB_BEGIN + +namespace ZNetscape { + +// ================================================================================================= +#pragma mark - +#pragma mark * NPObject_T + +template <class Variant_t> +class NPObject_T +: public NPObject + { +protected: + NPObject_T(); + +public: + typedef NPObject_T Base_t; + typedef typename Variant_t::Object_t Self_t; + + Variant_t Invoke(const std::string& iName, const Variant_t* iArgs, size_t iCount); + + Variant_t Invoke(const std::string& iName); + + Variant_t Invoke(const std::string& iName, + const Variant_t& iP0); + + Variant_t Invoke(const std::string& iName, + const Variant_t& iP0, + const Variant_t& iP1); + + Variant_t Invoke(const std::string& iName, + const Variant_t& iP0, + const Variant_t& iP1, + const Variant_t& iP2); + + Variant_t InvokeDefault(const Variant_t* iArgs, size_t iCount); + + Variant_t InvokeDefault(); + + Variant_t InvokeDefault( + const Variant_t& iP0); + + Variant_t InvokeDefault( + const Variant_t& iP0, + const Variant_t& iP1); + + Variant_t InvokeDefault( + const Variant_t& iP0, + const Variant_t& iP1, + const Variant_t& iP2); + + bool Enumerate(std::vector<NPIdentifier>& oIdentifiers); + +// ZMap protocol (ish) + bool QGet(const std::string& iName, Variant_t& oVal); + bool QGet(size_t iIndex, Variant_t& oVal); + + Variant_t DGet(const std::string& iName, const Variant_t& iDefault); + Variant_t DGet(size_t iIndex, const Variant_t& iDefault); + + Variant_t Get(const std::string& iName); + Variant_t Get(size_t iIndex); + + bool Set(const std::string& iName, const Variant_t& iValue); + bool Set(size_t iIndex, const Variant_t& iValue); + + bool Erase(const std::string& iName); + bool Erase(size_t iIndex); + }; + +} // namespace ZNetscape + +NAMESPACE_ZOOLIB_END + +#endif // __ZNetscape_Object__ Added: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_ObjectPriv.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_ObjectPriv.h (rev 0) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_ObjectPriv.h 2009-08-06 23:50:31 UTC (rev 917) @@ -0,0 +1,186 @@ +/* ------------------------------------------------------------------------------------------------- +Copyright (c) 2009 Andrew Green +http://www.zoolib.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------------------------- */ + +#ifndef __ZNetscape_ObjectPriv__ +#define __ZNetscape_ObjectPriv__ 1 +#include "zconfig.h" + +#include "zoolib/netscape/ZNetscape_Object.h" + +NAMESPACE_ZOOLIB_BEGIN + +namespace ZNetscape { + +// ================================================================================================= +#pragma mark - +#pragma mark * NPObject_T + +template <class Variant_t> +NPObject_T<Variant_t>::NPObject_T() + {} + +template <class Variant_t> +Variant_t NPObject_T<Variant_t>::Invoke( + const std::string& iName, const Variant_t* iArgs, size_t iCount) + { + Variant_t result; + static_cast<Self_t*>(this)->Invoke(iName, iArgs, iCount, result); + return result; + } + +template <class Variant_t> +Variant_t NPObject_T<Variant_t>::Invoke(const std::string& iName) + { + Variant_t result; + static_cast<Self_t*>(this)->Invoke(iName, nullptr, 0, result); + return result; + } + +template <class Variant_t> +Variant_t NPObject_T<Variant_t>::Invoke(const std::string& iName, + const Variant_t& iP0) + { return static_cast<Self_t*>(this)->Invoke(iName, &iP0, 1); } + +template <class Variant_t> +Variant_t NPObject_T<Variant_t>::Invoke(const std::string& iName, + const Variant_t& iP0, + const Variant_t& iP1) + { + Variant_t arr[] = { iP0, iP1}; + return static_cast<Self_t*>(this)->Invoke(iName, arr, countof(arr)); + } + +template <class Variant_t> +Variant_t NPObject_T<Variant_t>::Invoke(const std::string& iName, + const Variant_t& iP0, + const Variant_t& iP1, + const Variant_t& iP2) + { + Variant_t arr[] = { iP0, iP1, iP2 }; + return static_cast<Self_t*>(this)->Invoke(iName, arr, countof(arr)); + } + +template <class Variant_t> +Variant_t NPObject_T<Variant_t>::InvokeDefault(const Variant_t* iArgs, size_t iCount) + { + Variant_t result; + static_cast<Self_t*>(this)->InvokeDefault(iArgs, iCount, result); + return result; + } + +template <class Variant_t> +Variant_t NPObject_T<Variant_t>::InvokeDefault() + { return static_cast<Self_t*>(this)->InvokeDefault(nullptr, 0); } + +template <class Variant_t> +Variant_t NPObject_T<Variant_t>::InvokeDefault( + const Variant_t& iP0) + { return static_cast<Self_t*>(this)->InvokeDefault(&iP0, 1); } + +template <class Variant_t> +Variant_t NPObject_T<Variant_t>::InvokeDefault( + const Variant_t& iP0, + const Variant_t& iP1) + { + Variant_t arr[] = { iP0, iP1 }; + return static_cast<Self_t*>(this)->InvokeDefault(arr, countof(arr)); + } + +template <class Variant_t> +Variant_t NPObject_T<Variant_t>::InvokeDefault( + const Variant_t& iP0, + const Variant_t& iP1, + const Variant_t& iP2) + { + Variant_t arr[] = { iP0, iP1, iP2 }; + return static_cast<Self_t*>(this)->InvokeDefault(arr, countof(arr)); + } + +template <class Variant_t> +bool NPObject_T<Variant_t>::Enumerate(std::vector<NPIdentifier>& oIdentifiers) + { + oIdentifiers.clear(); + NPIdentifier* theIDs = nullptr; + uint32_t theCount; + if (!static_cast<Self_t*>(this)->Enumerate(theIDs, theCount)) + return false; + + oIdentifiers.insert(oIdentifiers.end(), theIDs, theIDs + theCount); + + sFree_T<Variant_t>(theIDs); + + return true; + } + +template <class Variant_t> +bool NPObject_T<Variant_t>::QGet(const std::string& iName, Variant_t& oVal) + { return static_cast<Self_t*>(this)->GetProperty(iName, oVal); } + +template <class Variant_t> +bool NPObject_T<Variant_t>::QGet(size_t iIndex, Variant_t& oVal) + { return static_cast<Self_t*>(this)->GetProperty(iIndex, oVal); } + +template <class Variant_t> +Variant_t NPObject_T<Variant_t>::DGet(const std::string& iName, const Variant_t& iDefault) + { + Variant_t result; + if (static_cast<Self_t*>(this)->GetProperty(iName, result)) + return result; + return iDefault; + } + +template <class Variant_t> +Variant_t NPObject_T<Variant_t>::DGet(size_t iIndex, const Variant_t& iDefault) + { + Variant_t result; + if (static_cast<Self_t*>(this)->GetProperty(iIndex, result)) + return result; + return iDefault; + } + +template <class Variant_t> +Variant_t NPObject_T<Variant_t>::Get(const std::string& iName) + { return static_cast<Self_t*>(this)->DGet(iName, Variant_t()); } + +template <class Variant_t> +Variant_t NPObject_T<Variant_t>::Get(size_t iIndex) + { return static_cast<Self_t*>(this)->DGet(iIndex, Variant_t()); } + +template <class Variant_t> +bool NPObject_T<Variant_t>::Set(const std::string& iName, const Variant_t& iValue) + { return static_cast<Self_t*>(this)->SetProperty(iName, iValue); } + +template <class Variant_t> +bool NPObject_T<Variant_t>::Set(size_t iIndex, const Variant_t& iValue) + { return static_cast<Self_t*>(this)->SetProperty(iIndex, iValue); } + +template <class Variant_t> +bool NPObject_T<Variant_t>::Erase(const string& iName) + { return static_cast<Self_t*>(this)->RemoveProperty(iName); } + +template <class Variant_t> +bool NPObject_T<Variant_t>::Erase(size_t iIndex) + { return static_cast<Self_t*>(this)->RemoveProperty(iIndex); } + +} // namespace ZNetscape + +NAMESPACE_ZOOLIB_END + +#endif // __ZNetscape_ObjectPriv__ Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h 2009-08-06 22:57:49 UTC (rev 916) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h 2009-08-06 23:50:31 UTC (rev 917) @@ -71,6 +71,9 @@ void* sMalloc_T(T&, size_t); template <class T> +void sFree_T(void*); + +template <class T> class NPVariant_T : public NPVariantBase { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2009-08-16 21:21:39
|
Revision: 942 http://zoolib.svn.sourceforge.net/zoolib/?rev=942&view=rev Author: agreen Date: 2009-08-16 21:21:27 +0000 (Sun, 16 Aug 2009) Log Message: ----------- Put default param in first position. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_ObjectPriv.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.h 2009-08-16 21:20:47 UTC (rev 941) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.h 2009-08-16 21:21:27 UTC (rev 942) @@ -84,8 +84,8 @@ bool QGet(const std::string& iName, Variant_t& oVal); bool QGet(size_t iIndex, Variant_t& oVal); - Variant_t DGet(const std::string& iName, const Variant_t& iDefault); - Variant_t DGet(size_t iIndex, const Variant_t& iDefault); + Variant_t DGet(const Variant_t& iDefault, const std::string& iName); + Variant_t DGet(const Variant_t& iDefault, size_t iIndex); Variant_t Get(const std::string& iName); Variant_t Get(size_t iIndex); Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_ObjectPriv.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_ObjectPriv.h 2009-08-16 21:20:47 UTC (rev 941) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_ObjectPriv.h 2009-08-16 21:21:27 UTC (rev 942) @@ -138,7 +138,7 @@ { return static_cast<Self_t*>(this)->GetProperty(iIndex, oVal); } template <class Variant_t> -Variant_t NPObject_T<Variant_t>::DGet(const std::string& iName, const Variant_t& iDefault) +Variant_t NPObject_T<Variant_t>::DGet(const Variant_t& iDefault, const std::string& iName) { Variant_t result; if (static_cast<Self_t*>(this)->GetProperty(iName, result)) @@ -147,7 +147,7 @@ } template <class Variant_t> -Variant_t NPObject_T<Variant_t>::DGet(size_t iIndex, const Variant_t& iDefault) +Variant_t NPObject_T<Variant_t>::DGet(const Variant_t& iDefault, size_t iIndex) { Variant_t result; if (static_cast<Self_t*>(this)->GetProperty(iIndex, result)) @@ -157,11 +157,11 @@ template <class Variant_t> Variant_t NPObject_T<Variant_t>::Get(const std::string& iName) - { return static_cast<Self_t*>(this)->DGet(iName, Variant_t()); } + { return static_cast<Self_t*>(this)->DGet(Variant_t(), iName); } template <class Variant_t> Variant_t NPObject_T<Variant_t>::Get(size_t iIndex) - { return static_cast<Self_t*>(this)->DGet(iIndex, Variant_t()); } + { return static_cast<Self_t*>(this)->DGet(Variant_t(), iIndex); } template <class Variant_t> bool NPObject_T<Variant_t>::Set(const std::string& iName, const Variant_t& iValue) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2009-09-04 04:37:44
|
Revision: 964 http://zoolib.svn.sourceforge.net/zoolib/?rev=964&view=rev Author: agreen Date: 2009-09-04 04:37:32 +0000 (Fri, 04 Sep 2009) Log Message: ----------- Conform to ZActor-->ZWorker change. Line lengths. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp 2009-09-04 04:35:40 UTC (rev 963) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp 2009-09-04 04:37:32 UTC (rev 964) @@ -455,8 +455,9 @@ #if defined(XP_MACOSX) if (::GetEventKind(iEventRef) == kEventMouseDown) { - if (inContent == sDGetParam_T<WindowPartCode>(iEventRef, - kEventParamWindowPartCode, typeWindowPartCode, 0)) + if (inContent == sDGetParam_T<WindowPartCode>( + 0, + iEventRef, kEventParamWindowPartCode, typeWindowPartCode)) { this->pDeliverEvent(iEventRef); // Absorb the mousedown, so that the standard handler @@ -740,8 +741,9 @@ case kEventControlSetFocusPart: { bool isFocused = - kControlFocusNoPart != sDGetParam_T<ControlFocusPart>(iEventRef, - kEventParamControlPart, typeControlPartCode, kControlFocusNoPart); + kControlFocusNoPart != sDGetParam_T<ControlFocusPart>( + kControlFocusNoPart, + iEventRef, kEventParamControlPart, typeControlPartCode); Host_Mac::DoFocus(isFocused); Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp 2009-09-04 04:35:40 UTC (rev 963) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp 2009-09-04 04:37:32 UTC (rev 964) @@ -20,7 +20,6 @@ #include "zoolib/netscape/ZNetscape_Host_Std.h" -#include "zoolib/ZActor.h" #include "zoolib/ZCompat_string.h" // For strdup #include "zoolib/ZDebug.h" #include "zoolib/ZHTTP_Requests.h" @@ -29,6 +28,7 @@ #include "zoolib/ZStream_Data_T.h" #include "zoolib/ZString.h" #include "zoolib/ZUtil_STL.h" +#include "zoolib/ZWorker.h" #include <stdlib.h> // For malloc/free @@ -54,7 +54,9 @@ {} HostMeister_Std::~HostMeister_Std() - {} + { + ZLOGFUNCTION(eDebug); + } Host_Std* HostMeister_Std::sHostFromNPP_Std(NPP npp) { return static_cast<Host_Std*>(sHostFromNPP(npp)); } @@ -530,13 +532,13 @@ #pragma mark * Host_Std::HTTPer class Host_Std::HTTPFetcher -: public ZActor +: public ZWorker { public: HTTPFetcher(Host_Std* iHost, const string& iURL, ZHTTP::Data* iData, void* iNotifyData); -// From ZActor - virtual bool Act(); +// From ZWorker + virtual bool Work(); void Cancel(); @@ -565,8 +567,10 @@ } } -bool Host_Std::HTTPFetcher::Act() +bool Host_Std::HTTPFetcher::Work() { + ZLOGFUNCTION(eDebug); + try { string theURL = fURL; @@ -610,6 +614,8 @@ void Host_Std::HTTPFetcher::Cancel() { + ZLOGFUNCTION(eDebug); + fHost = nullptr; } @@ -778,6 +784,8 @@ Host_Std::~Host_Std() { + ZLOGFUNCTION(eDebug); + for (ZSafeSetIterConst<ZRef<HTTPFetcher> > i = fHTTPFetchers;;) { if (ZRef<HTTPFetcher> current = i.ReadInc()) @@ -896,7 +904,7 @@ { ZRef<HTTPFetcher> theFetcher = new HTTPFetcher(this, theURL, nullptr, notifyData); fHTTPFetchers.Add(theFetcher); - sStartActorRunner(theFetcher); + sStartWorkerRunner(theFetcher); return NPERR_NO_ERROR; } @@ -919,7 +927,7 @@ ZHTTP::Data theData(buf, len); ZRef<HTTPFetcher> theFetcher = new HTTPFetcher(this, theURL, &theData, notifyData); fHTTPFetchers.Add(theFetcher); - sStartActorRunner(theFetcher); + sStartWorkerRunner(theFetcher); return NPERR_NO_ERROR; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2009-09-08 17:40:20
|
Revision: 973 http://zoolib.svn.sourceforge.net/zoolib/?rev=973&view=rev Author: agreen Date: 2009-09-08 17:40:10 +0000 (Tue, 08 Sep 2009) Log Message: ----------- Clear up some namespace qualifications. Move variant's operator_bool_type inline, CW objects otherwise. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_VariantPriv.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp 2009-09-08 17:38:47 UTC (rev 972) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp 2009-09-08 17:40:10 UTC (rev 973) @@ -40,14 +40,14 @@ }; #endif +NAMESPACE_ZOOLIB_BEGIN + using std::string; -using ZooLib::ZUtil_CarbonEvents::sGetParam_T; -using ZooLib::ZUtil_CarbonEvents::sDGetParam_T; -using ZooLib::ZUtil_CarbonEvents::sSetParam_T; +using ZUtil_CarbonEvents::sGetParam_T; +using ZUtil_CarbonEvents::sDGetParam_T; +using ZUtil_CarbonEvents::sSetParam_T; -NAMESPACE_ZOOLIB_BEGIN - namespace ZNetscape { // ================================================================================================= Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.h 2009-09-08 17:38:47 UTC (rev 972) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.h 2009-09-08 17:40:10 UTC (rev 973) @@ -96,7 +96,7 @@ { public: Host_WindowRef( - ZooLib::ZRef<ZooLib::ZNetscape::GuestFactory> iGF, bool iAllowCG, WindowRef iWindowRef); + ZRef<GuestFactory> iGF, bool iAllowCG, WindowRef iWindowRef); virtual ~Host_WindowRef(); // From Host_Std @@ -132,7 +132,7 @@ { public: Host_HIViewRef( - ZooLib::ZRef<ZooLib::ZNetscape::GuestFactory> iGF, bool iAllowCG, HIViewRef iHIViewRef); + ZRef<GuestFactory> iGF, bool iAllowCG, HIViewRef iHIViewRef); virtual ~Host_HIViewRef(); // From Host_Std Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h 2009-09-08 17:38:47 UTC (rev 972) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h 2009-09-08 17:40:10 UTC (rev 973) @@ -38,7 +38,7 @@ class Host_Win : public Host_Std, - public ZooLib::ZWNDSubClassW + public ZWNDSubClassW { public: Host_Win(ZRef<GuestFactory> iGuestFactory, HWND iHWND); Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h 2009-09-08 17:38:47 UTC (rev 972) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h 2009-09-08 17:40:10 UTC (rev 973) @@ -85,7 +85,8 @@ ZOOLIB_DEFINE_OPERATOR_BOOL_TYPES_T(NPVariant_T<T>, operator_bool_generator_type, operator_bool_type); - operator operator_bool_type() const; + operator operator_bool_type() const + { return operator_bool_generator_type::translate(type != NPVariantType_Void); } typedef T Object_t; Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_VariantPriv.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_VariantPriv.h 2009-09-08 17:38:47 UTC (rev 972) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_VariantPriv.h 2009-09-08 17:40:10 UTC (rev 973) @@ -113,10 +113,6 @@ { sRelease_T(*this); } template <class T> -NPVariant_T<T>::operator operator_bool_type() const - { return operator_bool_generator_type::translate(type != NPVariantType_Void); } - -template <class T> NPVariant_T<T>::NPVariant_T() { type = NPVariantType_Void; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2009-09-15 17:59:45
|
Revision: 974 http://zoolib.svn.sourceforge.net/zoolib/?rev=974&view=rev Author: agreen Date: 2009-09-15 17:59:23 +0000 (Tue, 15 Sep 2009) Log Message: ----------- Use the client rect, not the structure bounds to size the plugin. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp 2009-09-08 17:40:10 UTC (rev 973) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp 2009-09-15 17:59:23 UTC (rev 974) @@ -126,7 +126,7 @@ else { fNPWindow.type = NPWindowTypeDrawable; - fNPWindow.window = fInnerWND; + fNPWindow.window = nullptr; } this->pStuffNPWindow(theWidth, theHeight); @@ -137,6 +137,7 @@ LRESULT Host_Win::WindowProc(HWND iHWND, UINT iMessage, WPARAM iWPARAM, LPARAM iLPARAM) { +#if 0 // From WebCore's PluginViewWin.cpp switch (iMessage) { @@ -155,6 +156,7 @@ break; } } +#endif //-- @@ -181,27 +183,30 @@ case WM_WINDOWPOSCHANGED: { WINDOWPOS* theWPOS = reinterpret_cast<WINDOWPOS*>(iLPARAM); + if (!(theWPOS->flags & SWP_NOSIZE)) { - this->pStuffNPWindow( - theWPOS->cx, - theWPOS->cy); + RECT theCR; + ::GetClientRect(iHWND, &theCR); + const int theWidth = theCR.right - theCR.left; + const int theHeight = theCR.bottom - theCR.top; if (fInnerWND) { ::SetWindowPos(fInnerWND, nullptr, - 0, 0, theWPOS->cx, theWPOS->cy, + 0, 0, theWidth, theHeight, SWP_NOZORDER | SWP_NOMOVE | SWP_NOACTIVATE); } else { - RECT theCR; - ::GetClientRect(iHWND, &theCR); ::InvalidateRect(fHWND, &theCR, false); } - } + + this->pStuffNPWindow(theWidth, theHeight); + } break; } + case WM_ACTIVATE: case WM_LBUTTONDOWN: case WM_LBUTTONDBLCLK: case WM_RBUTTONDBLCLK: @@ -239,8 +244,7 @@ void Host_Win::pPaint(HWND iHWND, WPARAM iWPARAM, LPARAM iLPARAM) { - if (ZLOG(s, eDebug, "Host_Win")) - s << "+pPaint"; + ZLOGFUNCTION(eDebug + 3); PAINTSTRUCT thePS; HDC theHDC = ::BeginPaint(iHWND, &thePS); @@ -263,9 +267,6 @@ } ::EndPaint(iHWND, &thePS); - - if (ZLOG(s, eDebug, "Host_Win")) - s << "-pPaint"; } void Host_Win::pStuffNPWindow(int iWidth, int iHeight) Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h 2009-09-08 17:40:10 UTC (rev 973) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h 2009-09-15 17:59:23 UTC (rev 974) @@ -62,7 +62,6 @@ void pPaint(HWND iHWND, WPARAM iWPARAM, LPARAM iLPARAM); void pStuffNPWindow(int iWidth, int iHeight); -// HWND fWND; bool fIsWindowed; bool fIsTransparent; NPWindow fNPWindow; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2009-10-06 19:17:02
|
Revision: 997 http://zoolib.svn.sourceforge.net/zoolib/?rev=997&view=rev Author: agreen Date: 2009-10-06 19:16:29 +0000 (Tue, 06 Oct 2009) Log Message: ----------- Neat-freak. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_VariantPriv.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h 2009-10-06 19:15:37 UTC (rev 996) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h 2009-10-06 19:16:29 UTC (rev 997) @@ -105,8 +105,8 @@ explicit NPVariant_T(bool iValue); explicit NPVariant_T(int32 iValue); explicit NPVariant_T(double iValue); + NPVariant_T(const char* iValue); NPVariant_T(const std::string& iValue); - NPVariant_T(const char* iValue); NPVariant_T(T* iValue); NPVariant_T(const ZRef<T>& iValue); Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_VariantPriv.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_VariantPriv.h 2009-10-06 19:15:37 UTC (rev 996) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_VariantPriv.h 2009-10-06 19:16:29 UTC (rev 997) @@ -177,14 +177,14 @@ } template <class T> -NPVariant_T<T>::NPVariant_T(const std::string& iValue) +NPVariant_T<T>::NPVariant_T(const char* iValue) { this->pSetString(iValue); type = NPVariantType_String; } template <class T> -NPVariant_T<T>::NPVariant_T(const char* iValue) +NPVariant_T<T>::NPVariant_T(const std::string& iValue) { this->pSetString(iValue); type = NPVariantType_String; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2009-10-14 17:58:15
|
Revision: 1025 http://zoolib.svn.sourceforge.net/zoolib/?rev=1025&view=rev Author: agreen Date: 2009-10-14 17:57:47 +0000 (Wed, 14 Oct 2009) Log Message: ----------- Use ZRef<> Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_GuestFactory.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_GuestFactory.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_GuestFactory.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_GuestFactory.cpp 2009-10-14 17:56:40 UTC (rev 1024) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_GuestFactory.cpp 2009-10-14 17:57:47 UTC (rev 1025) @@ -24,8 +24,11 @@ #include "zoolib/ZLog.h" #include "zoolib/ZMemory.h" #include "zoolib/ZUnicode.h" +#include "zoolib/ZUtil_CFType.h" #include "zoolib/ZUtil_MacOSX.h" +#include "zoolib/ZRef_WinHANDLE.h" + #if ZCONFIG_SPI_Enabled(Win) #include "zoolib/ZWinHeader.h" #endif @@ -131,19 +134,19 @@ class GuestFactory_Win : public ZNetscape::GuestFactory { public: - GuestFactory_Win(HMODULE iHMODULE); + GuestFactory_Win(const ZRef<HMODULE>& iHMODULE); virtual ~GuestFactory_Win(); virtual const NPPluginFuncs& GetEntryPoints(); private: - HMODULE fHMODULE; + ZRef<HMODULE> fHMODULE; NPNetscapeFuncs_Z fNPNF; NPPluginFuncs fNPPluginFuncs; NPP_ShutdownProcPtr fShutdown; }; -GuestFactory_Win::GuestFactory_Win(HMODULE iHMODULE) +GuestFactory_Win::GuestFactory_Win(const ZRef<HMODULE>& iHMODULE) : fHMODULE(iHMODULE) { // Get our own copy of our host's function pointers @@ -184,8 +187,6 @@ GuestFactory_Win::~GuestFactory_Win() { fShutdown(); - - ::FreeLibrary(fHMODULE); } const NPPluginFuncs& GuestFactory_Win::GetEntryPoints() @@ -437,46 +438,35 @@ #pragma mark - #pragma mark * ZNetscape -ZRef<ZNetscape::GuestFactory> ZNetscape::sMakeGuestFactory(const std::string& iPath) +ZRef<ZNetscape::GuestFactory> ZNetscape::sMakeGuestFactory(const std::string& iNativePath) { - #if ZCONFIG_SPI_Enabled(Win) - string16 thePath = ZUnicode::sAsUTF16(iPath); - if (HMODULE theHMODULE = ::LoadLibraryW(thePath.c_str())) - { - try + try + { + #if ZCONFIG_SPI_Enabled(Win) + if (ZRef<HMODULE> theHMODULE = Adopt(::LoadLibraryW( + ZUnicode::sAsUTF16(iNativePath).c_str()))) { return new GuestFactory_Win(theHMODULE); } - catch (...) - { - ::FreeLibrary(theHMODULE); - } - } - #endif + #endif - #if ZCONFIG_SPI_Enabled(CoreFoundation) - if (ZRef<CFStringRef> thePath = Adopt(::CFStringCreateWithCString( - nullptr, iPath.c_str(), kCFStringEncodingUTF8))) - { + #if ZCONFIG_SPI_Enabled(CoreFoundation) if (ZRef<CFURLRef> theURL = Adopt(::CFURLCreateWithFileSystemPath( - nullptr, thePath, kCFURLPOSIXPathStyle, true))) + nullptr, ZUtil_CFType::sString(iNativePath), kCFURLPOSIXPathStyle, true))) { if (ZRef<CFPlugInRef> thePlugInRef = Adopt(::CFPlugInCreate(nullptr, theURL))) { - try - { - #if __MACH__ - return new GuestFactory_HostMachO(thePlugInRef); - #elif ZCONFIG(Processor,PPC) - return new GuestFactory_HostCFM(thePlugInRef); - #endif - } - catch (...) - {} + #if __MACH__ + return new GuestFactory_HostMachO(thePlugInRef); + #elif ZCONFIG(Processor,PPC) + return new GuestFactory_HostCFM(thePlugInRef); + #endif } } - } - #endif + #endif + } + catch (...) + {} return ZRef<ZNetscape::GuestFactory>(); } Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_GuestFactory.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_GuestFactory.h 2009-10-14 17:56:40 UTC (rev 1024) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_GuestFactory.h 2009-10-14 17:57:47 UTC (rev 1025) @@ -34,7 +34,7 @@ namespace ZNetscape { -ZRef<GuestFactory> sMakeGuestFactory(const std::string& iPath); +ZRef<GuestFactory> sMakeGuestFactory(const std::string& iNativePath); } // namespace ZNetscape This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2010-01-20 06:25:20
|
Revision: 1111 http://zoolib.svn.sourceforge.net/zoolib/?rev=1111&view=rev Author: agreen Date: 2010-01-20 06:24:48 +0000 (Wed, 20 Jan 2010) Log Message: ----------- ZRef fixes. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp 2010-01-19 18:20:39 UTC (rev 1110) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp 2010-01-20 06:24:48 UTC (rev 1111) @@ -80,9 +80,9 @@ return false; } -template <> -void sRelease_T(NPVariantG& iNPVariantG) - { GuestMeister::sGet()->Host_ReleaseVariantValue(&iNPVariantG); } +//template <> +//void sRelease_T(NPVariantG& iNPVariantG) +// { GuestMeister::sGet()->Host_ReleaseVariantValue(&iNPVariantG); } template <> void* sMalloc_T(NPVariantG&, size_t iLength) Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp 2010-01-19 18:20:39 UTC (rev 1110) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp 2010-01-20 06:24:48 UTC (rev 1111) @@ -57,9 +57,9 @@ return false; } -template <> -void sRelease_T(NPVariantH& iNPVariantH) - { HostMeister::sGet()->ReleaseVariantValue(&iNPVariantH); } +//template <> +//void sRelease_T(NPVariantH& iNPVariantH) +// { HostMeister::sGet()->ReleaseVariantValue(&iNPVariantH); } template <> void* sMalloc_T(NPVariantH&, size_t iLength) Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h 2010-01-19 18:20:39 UTC (rev 1110) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Variant.h 2010-01-20 06:24:48 UTC (rev 1111) @@ -66,9 +66,6 @@ #pragma mark * NPVariant_T template <class T> -void sRelease_T(T&); - -template <class T> void* sMalloc_T(T&, size_t); template <class T> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2010-03-30 03:42:06
|
Revision: 1215 http://zoolib.svn.sourceforge.net/zoolib/?rev=1215&view=rev Author: agreen Date: 2010-03-30 03:41:59 +0000 (Tue, 30 Mar 2010) Log Message: ----------- Conform to ZHTTP change. Fix windows flash keystroke dispatch. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp 2010-03-30 03:40:56 UTC (rev 1214) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp 2010-03-30 03:41:59 UTC (rev 1215) @@ -146,14 +146,11 @@ if (ZLOG(s, eDebug, "HostMeister_Std")) s << "UserAgent"; - if (Host_Std* theHost = sHostFromNPP_Std(npp)) - { - if (const char* theUA = theHost->Host_UserAgent(npp)) - return theUA; - } - #if defined(XP_WIN) - return "Mozilla/5.0 (Windows; U; Windows NT 5.1)"; + // From WebKit, PluginViewWin.cpp. + // Flash pre 10.0 will not request windowless mode unless a Mozilla-ish user agent + // is returned. By inspection this seems to be the minimal UA that will work. + return "Mozilla/5.0 (rv:1.8.1) Gecko/20061010"; #elif ZCONFIG(Processor, PPC) return "Mozilla/5.0 (Macintosh; U; PPC Mac OS X)"; #else @@ -842,11 +839,6 @@ void Host_Std::Host_Status(NPP npp, const char* message) {} -const char* Host_Std::Host_UserAgent(NPP npp) - { - return nullptr; - } - void* Host_Std::Host_GetJavaPeer(NPP npp) { return nullptr; @@ -856,7 +848,7 @@ { string relScheme; string relHost; - ip_port relPort = 80; + ip_port relPort; string relPath; if (!ZHTTP::sParseURL(iRelativeURL, &relScheme, &relHost, &relPort, &relPath)) return string(); @@ -874,6 +866,9 @@ if (!ZHTTP::sParseURL(iBaseURL, &baseScheme, &baseHost, &basePort, &basePath)) return string(); + if (!basePort) + basePort = 80; + const string resultURL = baseScheme + "://" + baseHost + ZString::sFormat(":%d", basePort); if (relPath.substr(0, 1) == "/") { Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h 2010-03-30 03:40:56 UTC (rev 1214) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h 2010-03-30 03:41:59 UTC (rev 1215) @@ -48,6 +48,7 @@ static Host_Std* sHostFromNPP_Std(NPP npp); static Host_Std* sHostFromStream_Std(NPStream* iNPStream); +// From HostMeister virtual NPError GetURL(NPP npp, const char* URL, const char* window); virtual NPError PostURL(NPP npp, @@ -167,7 +168,7 @@ Host_Std(ZRef<GuestFactory> iGuestFactory); virtual ~Host_Std(); -// Simple or stub implementations of necessary Host methods +// Our protocol virtual NPError Host_GetURL(NPP npp, const char* URL, const char* window); virtual NPError Host_PostURL(NPP npp, @@ -184,7 +185,9 @@ virtual void Host_Status(NPP npp, const char* message); - virtual const char* Host_UserAgent(NPP npp); +// The defining call to UserAgent generally occurs before we've got a Host instance to +// handle it. If you need to modify the UA response, do so in your HostMeister. +// virtual const char* Host_UserAgent(NPP npp); virtual void* Host_GetJavaPeer(NPP npp); Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp 2010-03-30 03:40:56 UTC (rev 1214) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp 2010-03-30 03:41:59 UTC (rev 1215) @@ -206,8 +206,8 @@ case WM_MOUSEACTIVATE: case WM_KEYDOWN: case WM_KEYUP: - case WM_CHAR: - case WM_DEADCHAR: +//## case WM_CHAR: +//## case WM_DEADCHAR: case WM_SETCURSOR: case WM_KILLFOCUS: { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2010-04-23 14:47:49
|
Revision: 1326 http://zoolib.svn.sourceforge.net/zoolib/?rev=1326&view=rev Author: agreen Date: 2010-04-23 14:47:41 +0000 (Fri, 23 Apr 2010) Log Message: ----------- Tighten up the use of uint32, uint32_t, size_t etc. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp 2010-04-23 14:47:08 UTC (rev 1325) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp 2010-04-23 14:47:41 UTC (rev 1326) @@ -349,7 +349,7 @@ } bool HostMeister_Std::Invoke(NPP npp, - NPObject* obj, NPIdentifier methodName, const NPVariant* args, uint32_t argCount, + NPObject* obj, NPIdentifier methodName, const NPVariant* args, uint32 argCount, NPVariant* result) { if (ZLOG(s, eDebug, "HostMeister_Std")) @@ -365,7 +365,7 @@ } bool HostMeister_Std::InvokeDefault(NPP npp, - NPObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result) + NPObject* obj, const NPVariant* args, uint32 argCount, NPVariant* result) { if (ZLOG(s, eDebug, "HostMeister_Std")) s.Writef("InvokeDefault"); @@ -495,7 +495,7 @@ } bool HostMeister_Std::Enumerate - (NPP, NPObject* obj, NPIdentifier **identifier, uint32_t *count) + (NPP, NPObject* obj, NPIdentifier **identifier, uint32 *count) { if (ZLOG(s, eDebug, "HostMeister_Std")) s.Writef("Enumerate"); @@ -503,7 +503,7 @@ if (NPClass_Z* theClass = sGetClass(obj)) { if (theClass->enumerate) - return theClass->enumerate(obj, identifier, count); + return theClass->enumerate(obj, identifier, (uint32_t*)count); } return false; @@ -517,7 +517,7 @@ } bool HostMeister_Std::Construct - (NPP npp, NPObject* obj, const NPVariant *args, uint32_t argCount, NPVariant *result) + (NPP npp, NPObject* obj, const NPVariant *args, uint32 argCount, NPVariant *result) { if (ZLOG(s, eDebug, "HostMeister_Std")) s.Writef("Construct"); Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h 2010-04-23 14:47:08 UTC (rev 1325) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h 2010-04-23 14:47:41 UTC (rev 1326) @@ -116,11 +116,11 @@ virtual void ReleaseObject(NPObject* obj); virtual bool Invoke(NPP npp, - NPObject* obj, NPIdentifier methodName, const NPVariant* args, uint32_t argCount, + NPObject* obj, NPIdentifier methodName, const NPVariant* args, uint32 argCount, NPVariant* result); virtual bool InvokeDefault(NPP npp, - NPObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result); + NPObject* obj, const NPVariant* args, uint32 argCount, NPVariant* result); virtual bool Evaluate(NPP npp, NPObject* obj, NPString* script, NPVariant* result); @@ -146,13 +146,13 @@ virtual void PopPopupsEnabledState(NPP npp); virtual bool Enumerate - (NPP npp, NPObject *npobj, NPIdentifier **identifier, uint32_t *count); + (NPP npp, NPObject *npobj, NPIdentifier **identifier, uint32 *count); virtual void PluginThreadAsyncCall (NPP npp, void (*func)(void *), void *userData); virtual bool Construct - (NPP npp, NPObject* obj, const NPVariant *args, uint32_t argCount, NPVariant *result); + (NPP npp, NPObject* obj, const NPVariant *args, uint32 argCount, NPVariant *result); private: std::set<std::string> fStrings; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2010-06-15 17:11:21
|
Revision: 1427 http://zoolib.svn.sourceforge.net/zoolib/?rev=1427&view=rev Author: agreen Date: 2010-06-15 17:11:15 +0000 (Tue, 15 Jun 2010) Log Message: ----------- Use int32 rather than int32_t, as the base class requires. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp 2010-06-15 17:10:40 UTC (rev 1426) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp 2010-06-15 17:11:15 UTC (rev 1427) @@ -283,13 +283,13 @@ } void HostMeister_Std::GetStringIdentifiers( - const NPUTF8* *names, int32_t nameCount, NPIdentifier* identifiers) + const NPUTF8* *names, int32 nameCount, NPIdentifier* identifiers) { while (--nameCount) *identifiers++ = this->GetStringIdentifier(*names++); } -NPIdentifier HostMeister_Std::GetIntIdentifier(int32_t intid) +NPIdentifier HostMeister_Std::GetIntIdentifier(int32 intid) { return reinterpret_cast<NPIdentifier>((intptr_t(intid) << 1) | 0x1); } bool HostMeister_Std::IdentifierIsString(NPIdentifier identifier) @@ -302,9 +302,9 @@ return nullptr; } -int32_t HostMeister_Std::IntFromIdentifier(NPIdentifier identifier) +int32 HostMeister_Std::IntFromIdentifier(NPIdentifier identifier) { - const int32_t asInt = reinterpret_cast<intptr_t>(identifier); + const int32 asInt = reinterpret_cast<intptr_t>(identifier); if (asInt & 0x1) return asInt >> 1; return 0; Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h 2010-06-15 17:10:40 UTC (rev 1426) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h 2010-06-15 17:11:15 UTC (rev 1427) @@ -99,15 +99,15 @@ virtual NPIdentifier GetStringIdentifier(const NPUTF8* name); virtual void GetStringIdentifiers( - const NPUTF8* *names, int32_t nameCount, NPIdentifier* identifiers); + const NPUTF8* *names, int32 nameCount, NPIdentifier* identifiers); - virtual NPIdentifier GetIntIdentifier(int32_t intid); + virtual NPIdentifier GetIntIdentifier(int32 intid); virtual bool IdentifierIsString(NPIdentifier identifier); virtual NPUTF8* UTF8FromIdentifier(NPIdentifier identifier); - virtual int32_t IntFromIdentifier(NPIdentifier identifier); + virtual int32 IntFromIdentifier(NPIdentifier identifier); virtual NPObject* CreateObject(NPP npp, NPClass* aClass); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2010-08-09 20:58:17
|
Revision: 1521 http://zoolib.svn.sourceforge.net/zoolib/?rev=1521&view=rev Author: agreen Date: 2010-08-09 20:58:11 +0000 (Mon, 09 Aug 2010) Log Message: ----------- Field and param names. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_GuestFactory.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_ObjectPriv.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_GuestFactory.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_GuestFactory.cpp 2010-08-09 20:57:29 UTC (rev 1520) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_GuestFactory.cpp 2010-08-09 20:58:11 UTC (rev 1521) @@ -149,6 +149,10 @@ NPP_ShutdownProcPtr fShutdown; }; +typedef NPError (*NP_GetEntryPointsFuncPtr)(NPPluginFuncs*); + +typedef NPError (*Flash_DisableLocalSecurityFuncPtr)(void); + GuestFactory_Win::GuestFactory_Win(HMODULE iHMODULE) : fHMODULE(iHMODULE) { @@ -174,6 +178,13 @@ // Windows Flash 10.1 requires theEntryPoints be called first. theEntryPoints(&fNPPluginFuncs); + + if (Flash_DisableLocalSecurityFuncPtr theDLS = + sLookup_T<Flash_DisableLocalSecurityFuncPtr>(fHMODULE, "Flash_DisableLocalSecurity")) + { + theDLS(); + } + theInit(&fNPNF); } Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.h 2010-08-09 20:57:29 UTC (rev 1520) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Object.h 2010-08-09 20:58:11 UTC (rev 1521) @@ -52,32 +52,32 @@ Variant_t Invoke(const std::string& iName); Variant_t Invoke(const std::string& iName, - const Variant_t& iP0); + const Variant_t& i0); Variant_t Invoke(const std::string& iName, - const Variant_t& iP0, - const Variant_t& iP1); + const Variant_t& i0, + const Variant_t& i1); Variant_t Invoke(const std::string& iName, - const Variant_t& iP0, - const Variant_t& iP1, - const Variant_t& iP2); + const Variant_t& i0, + const Variant_t& i1, + const Variant_t& i2); Variant_t InvokeDefault(const Variant_t* iArgs, size_t iCount); Variant_t InvokeDefault(); Variant_t InvokeDefault( - const Variant_t& iP0); + const Variant_t& i0); Variant_t InvokeDefault( - const Variant_t& iP0, - const Variant_t& iP1); + const Variant_t& i0, + const Variant_t& i1); Variant_t InvokeDefault( - const Variant_t& iP0, - const Variant_t& iP1, - const Variant_t& iP2); + const Variant_t& i0, + const Variant_t& i1, + const Variant_t& i2); bool Enumerate(std::vector<NPIdentifier>& oIdentifiers); Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_ObjectPriv.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_ObjectPriv.h 2010-08-09 20:57:29 UTC (rev 1520) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_ObjectPriv.h 2010-08-09 20:58:11 UTC (rev 1521) @@ -55,25 +55,25 @@ template <class Variant_t> Variant_t NPObject_T<Variant_t>::Invoke(const std::string& iName, - const Variant_t& iP0) - { return static_cast<Self_t*>(this)->Invoke(iName, &iP0, 1); } + const Variant_t& i0) + { return static_cast<Self_t*>(this)->Invoke(iName, &i0, 1); } template <class Variant_t> Variant_t NPObject_T<Variant_t>::Invoke(const std::string& iName, - const Variant_t& iP0, - const Variant_t& iP1) + const Variant_t& i0, + const Variant_t& i1) { - Variant_t arr[] = { iP0, iP1}; + Variant_t arr[] = { i0, i1}; return static_cast<Self_t*>(this)->Invoke(iName, arr, countof(arr)); } template <class Variant_t> Variant_t NPObject_T<Variant_t>::Invoke(const std::string& iName, - const Variant_t& iP0, - const Variant_t& iP1, - const Variant_t& iP2) + const Variant_t& i0, + const Variant_t& i1, + const Variant_t& i2) { - Variant_t arr[] = { iP0, iP1, iP2 }; + Variant_t arr[] = { i0, i1, i2 }; return static_cast<Self_t*>(this)->Invoke(iName, arr, countof(arr)); } @@ -91,25 +91,25 @@ template <class Variant_t> Variant_t NPObject_T<Variant_t>::InvokeDefault( - const Variant_t& iP0) - { return static_cast<Self_t*>(this)->InvokeDefault(&iP0, 1); } + const Variant_t& i0) + { return static_cast<Self_t*>(this)->InvokeDefault(&i0, 1); } template <class Variant_t> Variant_t NPObject_T<Variant_t>::InvokeDefault( - const Variant_t& iP0, - const Variant_t& iP1) + const Variant_t& i0, + const Variant_t& i1) { - Variant_t arr[] = { iP0, iP1 }; + Variant_t arr[] = { i0, i1 }; return static_cast<Self_t*>(this)->InvokeDefault(arr, countof(arr)); } template <class Variant_t> Variant_t NPObject_T<Variant_t>::InvokeDefault( - const Variant_t& iP0, - const Variant_t& iP1, - const Variant_t& iP2) + const Variant_t& i0, + const Variant_t& i1, + const Variant_t& i2) { - Variant_t arr[] = { iP0, iP1, iP2 }; + Variant_t arr[] = { i0, i1, i2 }; return static_cast<Self_t*>(this)->InvokeDefault(arr, countof(arr)); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2010-10-12 17:00:26
|
Revision: 1655 http://zoolib.svn.sourceforge.net/zoolib/?rev=1655&view=rev Author: agreen Date: 2010-10-12 17:00:20 +0000 (Tue, 12 Oct 2010) Log Message: ----------- 64 bit compatibility. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp 2010-10-12 16:58:39 UTC (rev 1654) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.cpp 2010-10-12 17:00:20 UTC (rev 1655) @@ -20,7 +20,6 @@ #include "zoolib/netscape/ZNetscape_Host_Win.h" -#if ! ZCONFIG_Is64Bit #if defined(XP_WIN) #include "zoolib/ZLog.h" @@ -29,7 +28,6 @@ #include <cstdio> namespace ZooLib { - namespace ZNetscape { // ================================================================================================= @@ -79,14 +77,14 @@ { case NPPVpluginWindowBool: { - if (ZLOG(s, eDebug, "Host_Win")) + if (ZLOG(s, eDebug - 1, "Host_Win")) s << "Host_SetValue, NPPVpluginWindowBool: " << (value ? "true" : "false"); fIsWindowed = value; return NPERR_NO_ERROR; } case NPPVpluginTransparentBool: { - if (ZLOG(s, eDebug, "Host_Win")) + if (ZLOG(s, eDebug - 1, "Host_Win")) s << "Host_SetValue, NPPVpluginTransparentBool: " << (value ? "true" : "false"); fIsTransparent = value; return NPERR_NO_ERROR; @@ -138,25 +136,22 @@ LRESULT Host_Win::WindowProc(HWND iHWND, UINT iMessage, WPARAM iWPARAM, LPARAM iLPARAM) { + bool callPlugin = false; + bool callDefault = false; + switch (iMessage) { case WM_TIMER: { this->DeliverData(); if (!fIsWindowed) - { - NPEvent theNPEvent; - theNPEvent.event = iMessage; - theNPEvent.wParam = iWPARAM; - theNPEvent.lParam = iLPARAM; - this->Guest_HandleEvent(&theNPEvent); - } - return 0; + callPlugin = true; + break; } case WM_PAINT: { this->pPaint(iHWND, iWPARAM, iLPARAM); - return 0; + break; } case WM_WINDOWPOSCHANGED: { @@ -182,6 +177,7 @@ this->pStuffNPWindow(theWidth, theHeight); } + callDefault = true; break; } case WM_SETFOCUS: @@ -189,59 +185,56 @@ if (fInnerWND) { ::SetFocus(fInnerWND); - return 0; } - // fall through + else + { + callPlugin = true; + callDefault = true; + } + break; } - case WM_SETCURSOR: - case WM_KILLFOCUS: - case WM_ACTIVATE: - case WM_LBUTTONDOWN: - case WM_LBUTTONDBLCLK: - case WM_RBUTTONDBLCLK: - case WM_RBUTTONUP: - case WM_LBUTTONUP: + + case WM_KEYUP: + case WM_KEYDOWN: + case WM_MOUSEMOVE: + case WM_LBUTTONDOWN: case WM_MBUTTONDOWN: + case WM_RBUTTONDOWN: + case WM_LBUTTONUP: case WM_MBUTTONUP: + case WM_RBUTTONUP: + case WM_LBUTTONDBLCLK: case WM_MBUTTONDBLCLK: -// case WM_MOUSEHOVER: - case WM_MOUSEACTIVATE: - case WM_KEYDOWN: - case WM_KEYUP: + case WM_RBUTTONDBLCLK: -#if 0 - case WM_CHAR: - case WM_DEADCHAR: - - case WM_SYSKEYDOWN: - case WM_SYSKEYUP: - case WM_SYSCHAR: - case WM_SYSDEADCHAR: - - case WM_IME_CHAR: - case WM_IME_STARTCOMPOSITION: - case WM_IME_ENDCOMPOSITION: - case WM_IME_COMPOSITION: - - case WM_INPUTLANGCHANGEREQUEST: -#endif - + case WM_SETCURSOR: + case WM_MOUSEACTIVATE: + case WM_ACTIVATE: + case WM_KILLFOCUS: { - if (!fIsWindowed) - { - NPEvent theNPEvent; - theNPEvent.event = iMessage; - theNPEvent.wParam = iWPARAM; - theNPEvent.lParam = iLPARAM; - this->Guest_HandleEvent(&theNPEvent); - return 0; - } + callPlugin = !fIsWindowed; break; } + default: + { + callDefault = true; + } } - return ZWNDSubClassW::WindowProc(iHWND, iMessage, iWPARAM, iLPARAM); + if (callPlugin) + { + NPEvent theNPEvent; + theNPEvent.event = iMessage; + theNPEvent.wParam = iWPARAM; + theNPEvent.lParam = iLPARAM; + this->Guest_HandleEvent(&theNPEvent); + } + + if (callDefault) + return ZWNDSubClassW::WindowProc(iHWND, iMessage, iWPARAM, iLPARAM); + + return 0; } void Host_Win::pPaint(HWND iHWND, WPARAM iWPARAM, LPARAM iLPARAM) @@ -286,8 +279,6 @@ } } // namespace ZNetscape - } // namespace ZooLib #endif // defined(XP_WIN) -#endif // ! ZCONFIG_Is64Bit Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h 2010-10-12 16:58:39 UTC (rev 1654) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Win.h 2010-10-12 17:00:20 UTC (rev 1655) @@ -22,8 +22,6 @@ #define __ZNetscape_Host_Win__ 1 #include "zconfig.h" -#if ! ZCONFIG_Is64Bit - #include "zoolib/netscape/ZNetscape_Host_Std.h" #if defined(XP_WIN) @@ -31,7 +29,6 @@ #include "zoolib/ZWND.h" namespace ZooLib { - namespace ZNetscape { // ================================================================================================= @@ -72,11 +69,8 @@ }; } // namespace ZNetscape - } // namespace ZooLib #endif // defined(XP_WIN) -#endif // ! ZCONFIG_Is64Bit - #endif // __ZNetscape_Host_Win__ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2010-10-16 17:28:36
|
Revision: 1671 http://zoolib.svn.sourceforge.net/zoolib/?rev=1671&view=rev Author: agreen Date: 2010-10-16 17:28:29 +0000 (Sat, 16 Oct 2010) Log Message: ----------- First cut at NSView-based hosting of NPAPI plugins. For now it only supports the Cocoa Event API. Added Paths: ----------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.mm Added: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.h (rev 0) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.h 2010-10-16 17:28:29 UTC (rev 1671) @@ -0,0 +1,98 @@ +/* ------------------------------------------------------------------------------------------------- +Copyright (c) 2010 Andrew Green +http://www.zoolib.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------------------------- */ + +#ifndef __ZNetscape_Host_Cocoa__ +#define __ZNetscape_Host_Cocoa__ 1 +#include "zconfig.h" + +#include "zoolib/ZCONFIG_SPI.h" + +#if defined(__OBJC__) +#if ZCONFIG_SPI_Enabled(Cocoa) + +#include "zoolib/netscape/ZNetscape_Host_Std.h" + +#include <AppKit/NSView.h> + +namespace ZooLib { +namespace ZNetscape { +class Host_Cocoa; +} // namespace ZNetscape +} // namespace ZooLib + +// ================================================================================================= +#pragma mark - +#pragma mark * NSView_NetscapeHost + +@interface NSView_NetscapeHost : NSView + { +@public + ZooLib::ZNetscape::Host_Cocoa* fHost; + } + +@end + +// ================================================================================================= +#pragma mark - +#pragma mark * Host_Cocoa + +namespace ZooLib { +namespace ZNetscape { + +class Host_Cocoa : public Host_Std + { +public: + Host_Cocoa(ZRef<GuestFactory> iGuestFactory, NSView_NetscapeHost* iView); + virtual ~Host_Cocoa(); + +// From Host via Host_Std + virtual NPError Host_GetValue(NPP npp, NPNVariable variable, void* ret_value); + virtual NPError Host_SetValue(NPP npp, NPPVariable variable, void* value); + + virtual void Host_InvalidateRect(NPP npp, NPRect* rect); + virtual void PostCreateAndLoad(); + + void Draw(const NSRect& iRect); + void FlagsChanged(NSEvent* iEvent); + void SendText(NSEvent* iEvent); + bool SendKeyEvent(NSEvent* iEvent, NPCocoaEventType iType); + bool SendMouseEvent(NSEvent* iEvent, NPCocoaEventType iType); + void FocusChanged(bool hasFocus); + void Timer(); +protected: + NSView_NetscapeHost* fView; + + NPWindow fNPWindow; + + NP_CGContext fNP_CGContext; + NP_CGContext fNP_CGContext_Prior; + + float fLeft; + float fTop; + float fRight; + float fBottom; + }; + +} // namespace ZNetscape +} // namespace ZooLib + +#endif // ZCONFIG_SPI_Enabled(Cocoa) +#endif // defined(__OBJC__) +#endif // __ZNetscape_Host_Cocoa__ Added: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.mm =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.mm (rev 0) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.mm 2010-10-16 17:28:29 UTC (rev 1671) @@ -0,0 +1,391 @@ +/* ------------------------------------------------------------------------------------------------- +Copyright (c) 2010 Andrew Green +http://www.zoolib.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------------------------- */ + +#include "zoolib/netscape/ZNetscape_Host_Cocoa.h" + +#if ZCONFIG_SPI_Enabled(Cocoa) + +#include <AppKit/NSEvent.h> +#include <AppKit/NSGraphicsContext.h> + +#include "zoolib/ZLog.h" +#include "zoolib/ZMemory.h" +#include "zoolib/ZRGBA.h" +#include "zoolib/ZStream_String.h" +#include "zoolib/ZUtil_Strim_Geom.h" + +// ================================================================================================= +#pragma mark - +#pragma mark * NSView_NetscapeHost + +@implementation NSView_NetscapeHost + +- (id)init + { + [super init]; + fHost = nullptr; + return self; + } + +- (void)dealloc + { + if (fHost) + { + delete fHost; + fHost = nullptr; + } + [super dealloc]; + } + +- (BOOL)acceptsFirstResponder + { + return YES; + } + +- (BOOL)becomeFirstResponder + { + if (fHost) + fHost->FocusChanged(true); + return YES; + } + +- (BOOL)resignFirstResponder + { + if (fHost) + fHost->FocusChanged(false); + return YES; + } + +- (void)mouseDown:(NSEvent *)theEvent + { + if (fHost) + fHost->SendMouseEvent(theEvent, NPCocoaEventMouseDown); + } + +- (void)mouseUp:(NSEvent *)theEvent + { + if (fHost) + fHost->SendMouseEvent(theEvent, NPCocoaEventMouseUp); + } + +- (void)mouseMoved:(NSEvent *)theEvent + { + ZLOGTRACE(eDebug); + if (fHost) + fHost->SendMouseEvent(theEvent, NPCocoaEventMouseMoved); + } + +- (void)mouseDragged:(NSEvent *)theEvent + { + ZLOGTRACE(eDebug); + if (fHost) + fHost->SendMouseEvent(theEvent, NPCocoaEventMouseDragged); + } + +- (void)mouseEntered:(NSEvent *)theEvent + { + ZLOGTRACE(eDebug); + if (fHost) + fHost->SendMouseEvent(theEvent, NPCocoaEventMouseEntered); + } + +- (void)mouseExited:(NSEvent *)theEvent + { + ZLOGTRACE(eDebug); + if (fHost) + fHost->SendMouseEvent(theEvent, NPCocoaEventMouseExited); + } + +- (void)keyDown:(NSEvent *)theEvent + { + ZLOGTRACE(eDebug); + if (fHost) + { + fHost->SendKeyEvent(theEvent, NPCocoaEventKeyDown); + } + } + +- (void)keyUp:(NSEvent *)theEvent + { + ZLOGTRACE(eDebug); + if (fHost) + fHost->SendKeyEvent(theEvent, NPCocoaEventKeyUp); + } + +- (void)flagsChanged:(NSEvent *)theEvent + { + ZLOGTRACE(eDebug); + if (fHost) + fHost->FlagsChanged(theEvent); + } + +- (void)drawRect:(NSRect)dirtyRect + { + if (fHost) + fHost->Draw(dirtyRect); + } + +- (void)timer:(NSTimer*)timer + { + if (fHost) + fHost->Timer(); + } + +@end + +// ================================================================================================= +#pragma mark - +#pragma mark * Host_Cocoa + +namespace ZooLib { +namespace ZNetscape { + +Host_Cocoa::Host_Cocoa(ZRef<GuestFactory> iGuestFactory, NSView_NetscapeHost* iView) +: Host_Std(iGuestFactory) +, fView(iView) + { + ZMemZero_T(fNP_CGContext); + ZMemZero_T(fNP_CGContext_Prior); + if (fView) + fView->fHost = this; + + [NSTimer scheduledTimerWithTimeInterval:0.1 + target:fView + selector:@selector(timer:) + userInfo:nil + repeats:YES]; + +// fNPWindow.type = NPWindowTypeWindow; + fNPWindow.type = NPWindowTypeDrawable;//NPWindowTypeWindow; + fNPWindow.window = &fNP_CGContext; + fNPWindow.x = 0; + fNPWindow.y = 0; + fNPWindow.width = 400; + fNPWindow.height = 300; + fNPWindow.clipRect.left = 0; + fNPWindow.clipRect.top = 0; + fNPWindow.clipRect.right = 400; + fNPWindow.clipRect.bottom = 300; + } + +Host_Cocoa::~Host_Cocoa() + { + if (fView) + ZAssert(fView->fHost == this); + } + +NPError Host_Cocoa::Host_GetValue(NPP npp, NPNVariable variable, void* ret_value) + { + switch (variable) + { + case 74656: + { + *static_cast<NPBool*>(ret_value) = true; + return NPERR_NO_ERROR; + } + case NPNVsupportsCoreAnimationBool: + { + *static_cast<NPBool*>(ret_value) = false; + return NPERR_NO_ERROR; + } + case NPNVsupportsCoreGraphicsBool: + { + *static_cast<NPBool*>(ret_value) = true; + return NPERR_NO_ERROR; + } + case NPNVsupportsCocoaBool: + { + *static_cast<NPBool*>(ret_value) = true; + return NPERR_NO_ERROR; + } + case NPNVSupportsWindowless: + { + *static_cast<NPBool*>(ret_value) = false; + return NPERR_NO_ERROR; + } + case NPNVprivateModeBool: + { + *static_cast<NPBool*>(ret_value) = false; + return NPERR_NO_ERROR; + } + } + + return Host_Std::Host_GetValue(npp, variable, ret_value); + } + +NPError Host_Cocoa::Host_SetValue(NPP npp, NPPVariable variable, void* value) + { + switch (variable) + { + case NPPVpluginDrawingModel: + { + ZAssert(reinterpret_cast<intptr_t>(value) == NPDrawingModelCoreGraphics); + return NPERR_NO_ERROR; + } + case NPPVpluginTransparentBool: + { + return NPERR_NO_ERROR; + } + case NPPVpluginEventModel: + { + ZAssert(reinterpret_cast<intptr_t>(value) == NPEventModelCocoa); + return NPERR_NO_ERROR; + } + } + + return Host_Std::Host_SetValue(npp, variable, value); + } + +void Host_Cocoa::Host_InvalidateRect(NPP npp, NPRect* rect) + { + NSRect theBounds = + NSMakeRect(rect->left, rect->top, rect->right - rect->left, rect->bottom - rect->top); + [fView setNeedsDisplayInRect:theBounds]; + } + +void Host_Cocoa::PostCreateAndLoad() + { + Host_Std::PostCreateAndLoad(); + this->Guest_SetWindow(&fNPWindow); + [fView setNeedsDisplay:true]; + this->FocusChanged(true); + } + +static inline void spInitialize(NPCocoaEvent& oEvent, NPCocoaEventType iType) + { + ZMemZero_T(oEvent); + oEvent.type = iType; + oEvent.version = 0; + } + +void Host_Cocoa::Draw(const NSRect& iRect) + { + CGContextRef context = static_cast<CGContextRef>([[NSGraphicsContext currentContext] graphicsPort]); + fNP_CGContext.context = context; + + this->Guest_SetWindow(&fNPWindow); + + NPCocoaEvent event; + spInitialize(event, NPCocoaEventDrawRect); + + event.data.draw.context = context; + event.data.draw.x = iRect.origin.x; + event.data.draw.y = iRect.origin.y; + event.data.draw.width = iRect.size.width; + event.data.draw.height = iRect.size.height; + + this->Guest_HandleEvent(&event); + } + +void Host_Cocoa::FlagsChanged(NSEvent* iEvent) + { + NPCocoaEvent event; + spInitialize(event, NPCocoaEventFlagsChanged); + + event.data.key.modifierFlags = [iEvent modifierFlags]; + event.data.key.keyCode = [iEvent keyCode]; + event.data.key.isARepeat = false; + event.data.key.characters = 0; + event.data.key.charactersIgnoringModifiers = 0; + + this->Guest_HandleEvent(&event); + } + +void Host_Cocoa::SendText(NSEvent* iEvent) + { + NPCocoaEvent event; + spInitialize(event, NPCocoaEventTextInput); + event.data.text.text = (NPNSString *)[iEvent characters]; + + this->Guest_HandleEvent(&event); + } + +bool Host_Cocoa::SendKeyEvent(NSEvent* iEvent, NPCocoaEventType iType) + { + this->FocusChanged(true); + NPCocoaEvent event; + spInitialize(event, iType); + + event.data.key.modifierFlags = [iEvent modifierFlags]; + event.data.key.keyCode = [iEvent keyCode]; + event.data.key.isARepeat = [iEvent isARepeat]; + event.data.key.characters = (NPNSString*)[iEvent characters]; + event.data.key.charactersIgnoringModifiers = (NPNSString*)[iEvent charactersIgnoringModifiers]; + + int result = this->Guest_HandleEvent(&event); + + ZAssert(result == 0 || result == 1); + + return result != 0; + } + +bool Host_Cocoa::SendMouseEvent(NSEvent* iEvent, NPCocoaEventType iType) + { + NPCocoaEvent event; + spInitialize(event, iType); + + NSPoint point = [fView convertPoint:[iEvent locationInWindow] fromView:nil]; + + int clickCount; + if (iType == NPCocoaEventMouseEntered + || iType == NPCocoaEventMouseExited + || iType == NPCocoaEventScrollWheel) + { + clickCount = 0; + } + else + { + clickCount = [iEvent clickCount]; + } + + event.data.mouse.modifierFlags = [iEvent modifierFlags]; + event.data.mouse.buttonNumber = [iEvent buttonNumber]; + event.data.mouse.clickCount = clickCount; + event.data.mouse.pluginX = point.x; + event.data.mouse.pluginY = point.y; + event.data.mouse.deltaX = [iEvent deltaX]; + event.data.mouse.deltaY = [iEvent deltaY]; + event.data.mouse.deltaZ = [iEvent deltaZ]; + + return this->Guest_HandleEvent(&event); + } + +void Host_Cocoa::FocusChanged(bool hasFocus) + { + NPCocoaEvent event; + spInitialize(event, NPCocoaEventFocusChanged); + event.data.focus.hasFocus = hasFocus; + this->Guest_HandleEvent(&event); + + spInitialize(event, NPCocoaEventWindowFocusChanged); + event.data.focus.hasFocus = hasFocus; + this->Guest_HandleEvent(&event); + } + +void Host_Cocoa::Timer() + { + Host_Std::DeliverData(); +// Host_Mac::DoIdle(); + } + +} // namespace ZNetscape +} // namespace ZooLib + +#endif // ZCONFIG_SPI_Enabled(Cocoa) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2010-10-16 17:30:54
|
Revision: 1675 http://zoolib.svn.sourceforge.net/zoolib/?rev=1675&view=rev Author: agreen Date: 2010-10-16 17:30:48 +0000 (Sat, 16 Oct 2010) Log Message: ----------- Whitespace and comments. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp 2010-10-16 17:30:25 UTC (rev 1674) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp 2010-10-16 17:30:48 UTC (rev 1675) @@ -65,7 +65,7 @@ #pragma mark - #pragma mark * NPVariantG -// Explicitly instantiate NPVariantG +// Explicitly instantiate NPVariant_T<NPObjectG>, aka NPVariantG template class NPVariant_T<NPObjectG>; // Provide implementation of NPVariantBase::QGet_T<ZRef<NPObjectG> > @@ -93,9 +93,6 @@ #pragma mark - #pragma mark * NPObjectG -// Explicitly instantiate NPObjectG -template class NPObject_T<NPVariantG>; - void sRetain(NPObjectG& iOb) { iOb.Retain(); } Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h 2010-10-16 17:30:25 UTC (rev 1674) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h 2010-10-16 17:30:48 UTC (rev 1675) @@ -33,7 +33,6 @@ #include <vector> namespace ZooLib { - namespace ZNetscape { class NPObjectG; @@ -479,7 +478,6 @@ }; } // namespace ZNetscape - } // namespace ZooLib #endif // __ZNetscape_Guest__ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2010-10-16 17:32:25
|
Revision: 1677 http://zoolib.svn.sourceforge.net/zoolib/?rev=1677&view=rev Author: agreen Date: 2010-10-16 17:31:50 +0000 (Sat, 16 Oct 2010) Log Message: ----------- Add ScheduleTimer support. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp 2010-10-16 17:31:14 UTC (rev 1676) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp 2010-10-16 17:31:50 UTC (rev 1677) @@ -41,7 +41,7 @@ #pragma mark - #pragma mark * NPVariantH -// Explicitly instantiate NPVariantH +// Explicitly instantiate NPVariant_T<NPObjectH>, aka NPVariantH template class NPVariant_T<NPObjectH>; // Provide implementation of NPVariantBase::QGet_T<ZRef<NPObjectH> > @@ -69,9 +69,6 @@ #pragma mark - #pragma mark * NPObjectH -// Explicitly instantiate NPObjectH -template class NPObject_T<NPVariantH>; - void sRetain(NPObjectH& iOb) { iOb.Retain(); } @@ -384,7 +381,7 @@ { ZMemZero_T(oNPNF); - oNPNF.version = NPVERS_HAS_PLUGIN_THREAD_ASYNC_CALL; + oNPNF.version = NP_VERSION_MINOR;//NPVERS_HAS_PLUGIN_THREAD_ASYNC_CALL; oNPNF.size = sizeof(oNPNF); @@ -471,6 +468,8 @@ oNPNF.enumerate = spEnumerate; oNPNF.pluginthreadasynccall = spPluginThreadAsyncCall; oNPNF.construct = spConstruct; + oNPNF.scheduletimer = spScheduleTimer; + oNPNF.unscheduletimer = spUnscheduleTimer; } HostMeister::HostMeister() @@ -833,6 +832,21 @@ ZNETSCAPE_AFTER_RETURN_FALSE } +uint32 HostMeister::spScheduleTimer + (NPP npp, uint32 interval, NPBool repeat, void (*timerFunc)(NPP npp, uint32 timerID)) + { + ZNETSCAPE_BEFORE + return sGet()->ScheduleTimer(npp, interval, repeat, timerFunc); + ZNETSCAPE_AFTER_VOID + } + +void HostMeister::spUnscheduleTimer(NPP npp, uint32 timerID) + { + ZNETSCAPE_BEFORE + return sGet()->UnscheduleTimer(npp, timerID); + ZNETSCAPE_AFTER_VOID + } + // ================================================================================================= #pragma mark - #pragma mark * GuestFactory Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h 2010-10-16 17:31:14 UTC (rev 1676) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.h 2010-10-16 17:31:50 UTC (rev 1677) @@ -33,7 +33,6 @@ #include <string> namespace ZooLib { - namespace ZNetscape { using std::string; @@ -268,6 +267,11 @@ virtual bool Construct (NPP npp, NPObject* obj, const NPVariant *args, uint32 argCount, NPVariant *result) = 0; + virtual uint32 ScheduleTimer + (NPP npp, uint32 interval, NPBool repeat, void (*timerFunc)(NPP npp, uint32 timerID)) = 0; + + virtual void UnscheduleTimer(NPP npp, uint32 timerID) = 0; + private: static NPError spGetURL(NPP npp, const char* URL, const char* window); @@ -374,6 +378,11 @@ static bool spConstruct (NPP npp, NPObject* obj, const NPVariant *args, uint32_t argCount, NPVariant *result); + + static uint32 spScheduleTimer + (NPP npp, uint32 interval, NPBool repeat, void (*timerFunc)(NPP npp, uint32 timerID)); + + static void spUnscheduleTimer(NPP npp, uint32 timerID); }; // ================================================================================================= @@ -444,7 +453,6 @@ }; } // namespace ZNetscape - } // namespace ZooLib #endif // __ZNetscape_Host__ Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp 2010-10-16 17:31:14 UTC (rev 1676) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Mac.cpp 2010-10-16 17:31:50 UTC (rev 1677) @@ -23,6 +23,7 @@ #include "zoolib/netscape/ZNetscape_Host_Mac.h" #if ! ZCONFIG_Is64Bit + #if defined(XP_MAC) || defined(XP_MACOSX) #include "zoolib/ZLog.h" @@ -865,5 +866,5 @@ } // namespace ZooLib +#endif // ! ZCONFIG_Is64Bit #endif // defined(XP_MAC) || defined(XP_MACOSX) -#endif // ! ZCONFIG_Is64Bit Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp 2010-10-16 17:31:14 UTC (rev 1676) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.cpp 2010-10-16 17:31:50 UTC (rev 1677) @@ -43,7 +43,6 @@ using std::vector; namespace ZooLib { - namespace ZNetscape { // ================================================================================================= @@ -54,9 +53,7 @@ {} HostMeister_Std::~HostMeister_Std() - { -//## ZLOGFUNCTION(eDebug); - } + {} Host_Std* HostMeister_Std::sHostFromNPP_Std(NPP npp) { return static_cast<Host_Std*>(sHostFromNPP(npp)); } @@ -66,8 +63,7 @@ NPError HostMeister_Std::GetURL(NPP npp, const char* URL, const char* window) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s << "GetURL"; + ZLOGFUNCTION(eDebug); if (Host_Std* theHost = sHostFromNPP_Std(npp)) return theHost->Host_GetURL(npp, URL, window); @@ -78,8 +74,7 @@ NPError HostMeister_Std::PostURL(NPP npp, const char* URL, const char* window, uint32 len, const char* buf, NPBool file) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s << "PostURL"; + ZLOGFUNCTION(eDebug); if (Host_Std* theHost = sHostFromNPP_Std(npp)) return theHost->Host_PostURL(npp, URL, window, len, buf, file); @@ -89,8 +84,7 @@ NPError HostMeister_Std::RequestRead(NPStream* stream, NPByteRange* rangeList) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s << "RequestRead"; + ZLOGFUNCTION(eDebug); if (Host_Std* theHost = sHostFromStream_Std(stream)) return theHost->Host_RequestRead(stream, rangeList); @@ -101,8 +95,7 @@ NPError HostMeister_Std::NewStream(NPP npp, NPMIMEType type, const char* window, NPStream** stream) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s << "NewStream"; + ZLOGFUNCTION(eDebug); if (Host_Std* theHost = sHostFromNPP_Std(npp)) return theHost->Host_NewStream(npp, type, window, stream); @@ -112,8 +105,7 @@ int32 HostMeister_Std::Write(NPP npp, NPStream* stream, int32 len, void* buffer) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s << "Write"; + ZLOGFUNCTION(eDebug); if (Host_Std* theHost = sHostFromNPP_Std(npp)) return theHost->Host_Write(npp, stream, len, buffer); @@ -123,8 +115,7 @@ NPError HostMeister_Std::DestroyStream(NPP npp, NPStream* stream, NPReason reason) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s << "DestroyStream"; + ZLOGFUNCTION(eDebug); if (Host_Std* theHost = sHostFromNPP_Std(npp)) return theHost->Host_DestroyStream(npp, stream, reason); @@ -134,8 +125,7 @@ void HostMeister_Std::Status(NPP npp, const char* message) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s << "Status"; + ZLOGFUNCTION(eDebug); if (Host_Std* theHost = sHostFromNPP_Std(npp)) theHost->Host_Status(npp, message); @@ -143,8 +133,7 @@ const char* HostMeister_Std::UserAgent(NPP npp) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s << "UserAgent"; + ZLOGFUNCTION(eDebug); #if defined(XP_WIN) // From WebKit, PluginViewWin.cpp. @@ -154,7 +143,9 @@ #elif ZCONFIG(Processor, PPC) return "Mozilla/5.0 (Macintosh; U; PPC Mac OS X)"; #else - return "Mozilla/5.0 (Macintosh; U; Intel Mac OS X)"; + return "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-us) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5"; +// return "Mozilla/5.0 (Macintosh; U; Intel Mac OS X)"; +// return "Mozilla/5.0 (Macintosh; U; Intel Mac OS X)"; #endif } @@ -175,8 +166,7 @@ void* HostMeister_Std::GetJavaPeer(NPP npp) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s << "GetJavaPeer"; + ZLOGFUNCTION(eDebug); if (Host_Std* theHost = sHostFromNPP_Std(npp)) return theHost->Host_GetJavaPeer(npp); @@ -245,7 +235,7 @@ void HostMeister_Std::InvalidateRect(NPP npp, NPRect* rect) { - if (ZLOG(s, eDebug + 1, "HostMeister_Std")) + if (ZLOGF(s, eDebug + 1)) { s.Writef("InvalidateRect, (%u, %u, %u, %u)", rect->left, rect->top, rect->right, rect->bottom); @@ -257,8 +247,7 @@ void HostMeister_Std::InvalidateRegion(NPP npp, NPRegion region) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s << "InvalidateRegion"; + ZLOGFUNCTION(eDebug); if (Host_Std* theHost = sHostFromNPP_Std(npp)) theHost->Host_InvalidateRegion(npp, region); @@ -266,8 +255,7 @@ void HostMeister_Std::ForceRedraw(NPP npp) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s << "ForceRedraw"; + ZLOGFUNCTION(eDebug); if (Host_Std* theHost = sHostFromNPP_Std(npp)) return theHost->Host_ForceRedraw(npp); @@ -312,8 +300,7 @@ NPObject* HostMeister_Std::CreateObject(NPP npp, NPClass* aClass) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s.Writef("CreateObject"); + ZLOGFUNCTION(eDebug); ZAssert(aClass); NPObject* result; @@ -367,8 +354,7 @@ bool HostMeister_Std::InvokeDefault(NPP npp, NPObject* obj, const NPVariant* args, uint32 argCount, NPVariant* result) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s.Writef("InvokeDefault"); + ZLOGFUNCTION(eDebug); if (NPClass_Z* theClass = sGetClass(obj)) { @@ -383,7 +369,11 @@ NPObject* obj, NPString* script, NPVariant* result) { if (ZLOG(s, eDebug, "HostMeister_Std")) - s.Writef("Evaluate"); + s << "Evaluate: " << sAsString(*script); + + if (Host_Std* theHost = sHostFromNPP_Std(npp)) + return theHost->Host_Evaluate(npp, obj, script, result); + return false; } @@ -405,8 +395,7 @@ bool HostMeister_Std::SetProperty(NPP npp, NPObject* obj, NPIdentifier propertyName, const NPVariant* value) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s.Writef("SetProperty"); + ZLOGFUNCTION(eDebug); if (NPClass_Z* theClass = sGetClass(obj)) { @@ -419,8 +408,7 @@ bool HostMeister_Std::RemoveProperty(NPP npp, NPObject* obj, NPIdentifier propertyName) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s.Writef("RemoveProperty"); + ZLOGFUNCTION(eDebug); if (NPClass_Z* theClass = sGetClass(obj)) { @@ -433,8 +421,7 @@ bool HostMeister_Std::HasProperty(NPP, NPObject* obj, NPIdentifier propertyName) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s.Writef("HasProperty"); + ZLOGFUNCTION(eDebug); if (NPClass_Z* theClass = sGetClass(obj)) { @@ -447,8 +434,7 @@ bool HostMeister_Std::HasMethod(NPP npp, NPObject* obj, NPIdentifier methodName) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s.Writef("HasMethod"); + ZLOGFUNCTION(eDebug); if (NPClass_Z* theClass = sGetClass(obj)) { @@ -479,26 +465,24 @@ void HostMeister_Std::SetException(NPObject* obj, const NPUTF8* message) { + ZLOGFUNCTION(eDebug); ZUnimplemented(); } void HostMeister_Std::PushPopupsEnabledState(NPP npp, NPBool enabled) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s.Writef("PushPopupsEnabledState"); + ZLOGFUNCTION(eDebug); } void HostMeister_Std::PopPopupsEnabledState(NPP npp) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s.Writef("PopPopupsEnabledState"); + ZLOGFUNCTION(eDebug); } bool HostMeister_Std::Enumerate (NPP, NPObject* obj, NPIdentifier **identifier, uint32 *count) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s.Writef("Enumerate"); + ZLOGFUNCTION(eDebug); if (NPClass_Z* theClass = sGetClass(obj)) { @@ -512,18 +496,30 @@ void HostMeister_Std::PluginThreadAsyncCall (NPP npp, void (*func)(void *), void *userData) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s.Writef("PluginThreadAsyncCall"); + ZLOGFUNCTION(eDebug); } bool HostMeister_Std::Construct (NPP npp, NPObject* obj, const NPVariant *args, uint32 argCount, NPVariant *result) { - if (ZLOG(s, eDebug, "HostMeister_Std")) - s.Writef("Construct"); + ZLOGFUNCTION(eDebug); return false; } +uint32 HostMeister_Std::ScheduleTimer + (NPP npp, uint32 interval, NPBool repeat, void (*timerFunc)(NPP npp, uint32 timerID)) + { + if (Host_Std* theHost = sHostFromNPP_Std(npp)) + return theHost->Host_ScheduleTimer(npp, interval, repeat, timerFunc); + return 0; + } + +void HostMeister_Std::UnscheduleTimer(NPP npp, uint32 timerID) + { + if (Host_Std* theHost = sHostFromNPP_Std(npp)) + return theHost->Host_UnscheduleTimer(npp, timerID); + } + // ================================================================================================= #pragma mark - #pragma mark * Host_Std::HTTPer @@ -889,6 +885,7 @@ NPError Host_Std::Host_GetURLNotify(NPP npp, const char* URL, const char* window, void* notifyData) { + ZLOGFUNCTION(eDebug); const string theURL = spFixURL(fURL, URL); if (theURL.empty()) return NPERR_INVALID_URL; @@ -967,10 +964,27 @@ void Host_Std::Host_ForceRedraw(NPP npp) {} +bool Host_Std::Host_Evaluate(NPP npp, + NPObject* obj, NPString* script, NPVariant* result) + { return false; } + +uint32 Host_Std::Host_ScheduleTimer + (NPP npp, uint32 interval, NPBool repeat, void (*timerFunc)(NPP npp, uint32 timerID)) + { + ZLOGFUNCTION(eDebug); + return 0; + } + +void Host_Std::Host_UnscheduleTimer(NPP npp, uint32 timerID) + { + ZLOGFUNCTION(eDebug); + } + void Host_Std::pHTTPFetcher(ZRef<HTTPFetcher> iHTTPFetcher, void* iNotifyData, const std::string& iURL, const std::string& iMIME, const ZHTTP::Data& iHeaders, ZRef<ZStreamerR> iStreamerR) { + ZLOGFUNCTION(eDebug); fHTTPFetchers.Erase(iHTTPFetcher); this->SendDataAsync(iNotifyData, iURL, iMIME, iHeaders, iStreamerR); } @@ -1019,6 +1033,7 @@ const std::string& iURL, const std::string& iMIME, const ZHTTP::Data& iHeaders, ZRef<ZStreamerR> iStreamerR) { + ZLOGFUNCTION(eDebug); Sender* theSender = new Sender(this, this->GetNPP(), iNotifyData, iURL, iMIME, iHeaders, iStreamerR); fSenders.Insert(theSender); @@ -1088,7 +1103,7 @@ void Host_Std::DeliverData() { - for (ZSafeSetIterConst<Sender* > i = fSenders;;) + for (ZSafeSetIterConst<Sender*> i = fSenders;;) { if (Sender* current = i.ReadInc()) { @@ -1119,5 +1134,4 @@ } } // namespace ZNetscape - } // namespace ZooLib Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h 2010-10-16 17:31:14 UTC (rev 1676) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Std.h 2010-10-16 17:31:50 UTC (rev 1677) @@ -154,6 +154,11 @@ virtual bool Construct (NPP npp, NPObject* obj, const NPVariant *args, uint32 argCount, NPVariant *result); + virtual uint32 ScheduleTimer + (NPP npp, uint32 interval, NPBool repeat, void (*timerFunc)(NPP npp, uint32 timerID)); + + virtual void UnscheduleTimer(NPP npp, uint32 timerID); + private: std::set<std::string> fStrings; }; @@ -208,6 +213,14 @@ virtual void Host_ForceRedraw(NPP npp); + virtual bool Host_Evaluate(NPP npp, + NPObject* obj, NPString* script, NPVariant* result); + + virtual uint32 Host_ScheduleTimer + (NPP npp, uint32 interval, NPBool repeat, void (*timerFunc)(NPP npp, uint32 timerID)); + + virtual void Host_UnscheduleTimer(NPP npp, uint32 timerID); + // Our protocol typedef std::pair<std::string, std::string> Param_t; void CreateAndLoad( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2010-10-18 18:44:44
|
Revision: 1679 http://zoolib.svn.sourceforge.net/zoolib/?rev=1679&view=rev Author: agreen Date: 2010-10-18 18:44:38 +0000 (Mon, 18 Oct 2010) Log Message: ----------- Some tweaks to allow use of WebKit headers. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZCompat_npapi.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZCompat_npapi.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZCompat_npapi.h 2010-10-16 19:09:32 UTC (rev 1678) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZCompat_npapi.h 2010-10-18 18:44:38 UTC (rev 1679) @@ -31,7 +31,7 @@ #include ZProjectHeader_npapi -#elif 0 // defined(__APPLE__) && ! __LP64__ +#elif defined(__APPLE__) && ! __LP64__ #include <WebKit/npfunctions.h> #if !defined(XP_MACOSX) @@ -178,6 +178,11 @@ #endif #if NP_VERSION_MINOR < NPVERS_HAS_ALL_NETWORK_STREAMS + typedef enum { + NPNURLVCookie = 501, + NPNURLVProxy + } NPNURLVariable; + typedef NPError (*NPN_GetValueForURLProcPtr) (NPP npp, NPNURLVariable variable, const char* url, char** value, uint32_t* len); @@ -191,14 +196,14 @@ const char *realm, char** username, uint32_t* ulen, char** password, uint32_t* plen); #endif -#if 1 +#if NP_VERSION_MINOR < NPVERS_MACOSX_HAS_EVENT_MODELS typedef uint32 (*NPN_ScheduleTimerProcPtr) (NPP npp, uint32 interval, NPBool repeat, void (*timerFunc)(NPP npp, uint32 timerID)); typedef void (*NPN_UnscheduleTimerProcPtr) (NPP npp, uint32 timerID); -// typedef void * NPMenu; + typedef void * NPMenu; typedef NPError (*NPN_PopUpContextMenuProcPtr)(NPP instance, NPMenu* menu); #endif @@ -225,17 +230,31 @@ { NPPVpluginDrawingModel = 1000, NPNVpluginDrawingModel = 1000, + NPPVpluginEventModel = 1001, NPNVsupportsCoreGraphicsBool = 2001, NPNVsupportsOpenGLBool = 2002, #ifndef NP_NO_QUICKDRAW NPNVsupportsQuickDrawBool = 2000, #endif - NPNVSupportsWindowless = 17 + NPNVSupportsWindowless = 17, + NPNVprivateModeBool = 18, + + NPNVsupportsCarbonBool = 3000, + NPNVsupportsCoreAnimationBool = 2003, + NPNVsupportsCocoaBool = 3001 }; typedef enum { + #ifndef NP_NO_CARBON + NPEventModelCarbon = 0, + #endif + NPEventModelCocoa = 1, + } NPEventModel; + +typedef enum + { #ifndef NP_NO_QUICKDRAW NPDrawingModelQuickDraw = 0, #endif Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape.h 2010-10-16 19:09:32 UTC (rev 1678) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape.h 2010-10-18 18:44:38 UTC (rev 1679) @@ -93,10 +93,14 @@ NPN_ConstructProcPtr construct; #endif - #if 0 + #if NP_VERSION_MINOR < NPVERS_MACOSX_HAS_EVENT_MODELS + void* dummy_getvalueforurl; + void* dummy_setvalueforurl; + void* dummy_getauthenticationinfo; NPN_ScheduleTimerProcPtr scheduletimer; NPN_UnscheduleTimerProcPtr unscheduletimer; NPN_PopUpContextMenuProcPtr popupcontextmenu; + void* dummy_convertpoint; #endif }; Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp 2010-10-16 19:09:32 UTC (rev 1678) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp 2010-10-18 18:44:38 UTC (rev 1679) @@ -837,7 +837,7 @@ { ZNETSCAPE_BEFORE return sGet()->ScheduleTimer(npp, interval, repeat, timerFunc); - ZNETSCAPE_AFTER_VOID + ZNETSCAPE_AFTER_RETURN(0) } void HostMeister::spUnscheduleTimer(NPP npp, uint32 timerID) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2010-10-19 16:11:28
|
Revision: 1686 http://zoolib.svn.sourceforge.net/zoolib/?rev=1686&view=rev Author: agreen Date: 2010-10-19 16:11:21 +0000 (Tue, 19 Oct 2010) Log Message: ----------- Hook into view focus state, resize plugin to match view frame. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.h trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.mm Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.h 2010-10-19 16:10:30 UTC (rev 1685) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.h 2010-10-19 16:11:21 UTC (rev 1686) @@ -75,10 +75,17 @@ bool SendKeyEvent(NSEvent* iEvent, NPCocoaEventType iType); bool SendMouseEvent(NSEvent* iEvent, NPCocoaEventType iType); void FocusChanged(bool hasFocus); + void WindowFocusChanged(bool hasFocus); void Timer(); + void FrameChanged(); + protected: + void pDoSetWindow(); NSView_NetscapeHost* fView; + class Worker_Timer; + ZRef<Worker_Timer> fWorker_Timer; + NPWindow fNPWindow; NP_CGContext fNP_CGContext; Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.mm =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.mm 2010-10-19 16:10:30 UTC (rev 1685) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host_Cocoa.mm 2010-10-19 16:11:21 UTC (rev 1686) @@ -30,6 +30,8 @@ #include "zoolib/ZRGBA.h" #include "zoolib/ZStream_String.h" #include "zoolib/ZUtil_Strim_Geom.h" +#include "zoolib/ZWorker.h" +#include "zoolib/ZWorkerRunner_CFRunLoop.h" // ================================================================================================= #pragma mark - @@ -41,11 +43,21 @@ { [super init]; fHost = nullptr; + + NSNotificationCenter* nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self + selector:@selector(frameChanged:) + name:NSViewFrameDidChangeNotification + object:self]; + return self; } - (void)dealloc { + NSNotificationCenter* nc = [NSNotificationCenter defaultCenter]; + [nc removeObserver:self]; + if (fHost) { delete fHost; @@ -54,13 +66,15 @@ [super dealloc]; } +- (BOOL)isFlipped + { return YES; } + - (BOOL)acceptsFirstResponder - { - return YES; - } + { return YES; } - (BOOL)becomeFirstResponder { + ZLOGTRACE(eDebug); if (fHost) fHost->FocusChanged(true); return YES; @@ -68,6 +82,7 @@ - (BOOL)resignFirstResponder { + ZLOGTRACE(eDebug); if (fHost) fHost->FocusChanged(false); return YES; @@ -87,7 +102,7 @@ - (void)mouseMoved:(NSEvent *)theEvent { - ZLOGTRACE(eDebug); + ZLOGTRACE(eDebug + 1); if (fHost) fHost->SendMouseEvent(theEvent, NPCocoaEventMouseMoved); } @@ -142,10 +157,10 @@ fHost->Draw(dirtyRect); } -- (void)timer:(NSTimer*)timer +- (void)frameChanged:(id)sender { if (fHost) - fHost->Timer(); + fHost->FrameChanged(); } @end @@ -157,6 +172,32 @@ namespace ZooLib { namespace ZNetscape { +class Host_Cocoa::Worker_Timer : public ZWorker + { +public: + Worker_Timer(Host_Cocoa* iHost) + : fHost(iHost) + {} + + virtual bool Work() + { + if (fHost) + { + fHost->Timer(); + this->WakeIn(50e-3); // 50ms + return true; + } + return false; + } + + virtual void Kill() + { + fHost = nullptr; + } + + Host_Cocoa* fHost; + }; + Host_Cocoa::Host_Cocoa(ZRef<GuestFactory> iGuestFactory, NSView_NetscapeHost* iView) : Host_Std(iGuestFactory) , fView(iView) @@ -166,11 +207,9 @@ if (fView) fView->fHost = this; - [NSTimer scheduledTimerWithTimeInterval:0.1 - target:fView - selector:@selector(timer:) - userInfo:nil - repeats:YES]; + fWorker_Timer = new Worker_Timer(this); + ZWorkerRunner_CFRunLoop::sMain()->Attach(fWorker_Timer); + fWorker_Timer->Wake(); // fNPWindow.type = NPWindowTypeWindow; fNPWindow.type = NPWindowTypeDrawable;//NPWindowTypeWindow; @@ -187,6 +226,12 @@ Host_Cocoa::~Host_Cocoa() { + if (ZRef<ZWorker> theWorker = fWorker_Timer) + { + fWorker_Timer.Clear(); + theWorker->Kill(); + } + if (fView) ZAssert(fView->fHost == this); } @@ -263,11 +308,27 @@ void Host_Cocoa::PostCreateAndLoad() { Host_Std::PostCreateAndLoad(); - this->Guest_SetWindow(&fNPWindow); + this->pDoSetWindow(); [fView setNeedsDisplay:true]; this->FocusChanged(true); } +void Host_Cocoa::pDoSetWindow() + { + ZGRectf theFrame = [fView frame]; + float width = theFrame.Width(); + float height = theFrame.Height(); + + fNPWindow.width = width; + fNPWindow.height = height; + fNPWindow.clipRect.left = 0; + fNPWindow.clipRect.top = 0; + fNPWindow.clipRect.right = width; + fNPWindow.clipRect.bottom = height; + + this->Guest_SetWindow(&fNPWindow); + } + static inline void spInitialize(NPCocoaEvent& oEvent, NPCocoaEventType iType) { ZMemZero_T(oEvent); @@ -319,7 +380,6 @@ bool Host_Cocoa::SendKeyEvent(NSEvent* iEvent, NPCocoaEventType iType) { - this->FocusChanged(true); NPCocoaEvent event; spInitialize(event, iType); @@ -373,7 +433,11 @@ spInitialize(event, NPCocoaEventFocusChanged); event.data.focus.hasFocus = hasFocus; this->Guest_HandleEvent(&event); + } +void Host_Cocoa::WindowFocusChanged(bool hasFocus) + { + NPCocoaEvent event; spInitialize(event, NPCocoaEventWindowFocusChanged); event.data.focus.hasFocus = hasFocus; this->Guest_HandleEvent(&event); @@ -382,9 +446,14 @@ void Host_Cocoa::Timer() { Host_Std::DeliverData(); -// Host_Mac::DoIdle(); } +void Host_Cocoa::FrameChanged() + { + ZLOGTRACE(eDebug); + this->pDoSetWindow(); + } + } // namespace ZNetscape } // namespace ZooLib This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2010-10-24 22:06:11
|
Revision: 1689 http://zoolib.svn.sourceforge.net/zoolib/?rev=1689&view=rev Author: agreen Date: 2010-10-24 22:06:05 +0000 (Sun, 24 Oct 2010) Log Message: ----------- Reinstate explicit instantiations. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp 2010-10-24 21:19:34 UTC (rev 1688) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp 2010-10-24 22:06:05 UTC (rev 1689) @@ -93,7 +93,10 @@ #pragma mark - #pragma mark * NPObjectG -void sRetain(NPObjectG& iOb) +// Explicitly instantiate NPObject_T<NPVariantG> +template class NPObject_T<NPVariantG>; + + void sRetain(NPObjectG& iOb) { iOb.Retain(); } void sRelease(NPObjectG& iOb) Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp 2010-10-24 21:19:34 UTC (rev 1688) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Host.cpp 2010-10-24 22:06:05 UTC (rev 1689) @@ -69,6 +69,9 @@ #pragma mark - #pragma mark * NPObjectH +// Explicitly instantiate NPObject_T<NPVariantH> +template class NPObject_T<NPVariantH>; + void sRetain(NPObjectH& iOb) { iOb.Retain(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ag...@us...> - 2010-11-26 19:44:25
|
Revision: 1729 http://zoolib.svn.sourceforge.net/zoolib/?rev=1729&view=rev Author: agreen Date: 2010-11-26 19:44:19 +0000 (Fri, 26 Nov 2010) Log Message: ----------- Rename NPPSetter-->SetRestoreNPP (akin to SetRestore_T). Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp 2010-11-11 04:58:20 UTC (rev 1728) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.cpp 2010-11-26 19:44:19 UTC (rev 1729) @@ -34,11 +34,11 @@ using std::string; #define ZNETSCAPE_BEFORE_OBJECT(a) \ - NPPSetter theSetter(static_cast<ObjectG*>(a)->GetNPP()); \ + SetRestoreNPP theSetRestoreNPP(static_cast<ObjectG*>(a)->GetNPP()); \ try { #define ZNETSCAPE_BEFORE_GUESTMEISTER(npp) \ - NPPSetter theSetter(npp);\ + SetRestoreNPP theSetRestoreNPP(npp);\ try { namespace ZooLib { @@ -47,18 +47,18 @@ // ================================================================================================= #pragma mark - -#pragma mark * NPPSetter +#pragma mark * SetRestoreNPP -NPP NPPSetter::spNPP; +static NPP spNPP; -NPPSetter::NPPSetter(NPP iNPP) +SetRestoreNPP::SetRestoreNPP(NPP iNPP) : fPrior(spNPP) { spNPP = iNPP; } -NPPSetter::~NPPSetter() +SetRestoreNPP::~SetRestoreNPP() { spNPP = fPrior; } -NPP NPPSetter::sCurrent() +NPP SetRestoreNPP::sCurrent() { return spNPP; } // ================================================================================================= @@ -136,52 +136,56 @@ { GuestMeister::sGet()->Host_ReleaseObject(this); } bool NPObjectG::HasMethod(const string& iName) - { return GuestMeister::sGet()->Host_HasMethod(NPPSetter::sCurrent(), this, sAsNPI(iName)); } + { return GuestMeister::sGet()->Host_HasMethod(SetRestoreNPP::sCurrent(), this, sAsNPI(iName)); } bool NPObjectG::Invoke( const string& iName, const NPVariantG* iArgs, size_t iCount, NPVariantG& oResult) { return GuestMeister::sGet()->Host_Invoke( - NPPSetter::sCurrent(), this, sAsNPI(iName), iArgs, iCount, &oResult); + SetRestoreNPP::sCurrent(), this, sAsNPI(iName), iArgs, iCount, &oResult); } bool NPObjectG::InvokeDefault(const NPVariantG* iArgs, size_t iCount, NPVariantG& oResult) { return GuestMeister::sGet()->Host_InvokeDefault( - NPPSetter::sCurrent(), this, iArgs, iCount, &oResult); } + SetRestoreNPP::sCurrent(), this, iArgs, iCount, &oResult); } bool NPObjectG::HasProperty(const string& iName) - { return GuestMeister::sGet()->Host_HasProperty(NPPSetter::sCurrent(), this, sAsNPI(iName)); } + { + return GuestMeister::sGet()->Host_HasProperty(SetRestoreNPP::sCurrent(), this, sAsNPI(iName)); + } bool NPObjectG::HasProperty(size_t iIndex) - { return GuestMeister::sGet()->Host_HasProperty(NPPSetter::sCurrent(), this, sAsNPI(iIndex)); } + { + return GuestMeister::sGet()->Host_HasProperty(SetRestoreNPP::sCurrent(), this, sAsNPI(iIndex)); + } bool NPObjectG::GetProperty(const string& iName, NPVariantG& oResult) { return GuestMeister::sGet()->Host_GetProperty( - NPPSetter::sCurrent(), this, sAsNPI(iName), &oResult); } + SetRestoreNPP::sCurrent(), this, sAsNPI(iName), &oResult); } bool NPObjectG::GetProperty(size_t iIndex, NPVariantG& oResult) { return GuestMeister::sGet()->Host_GetProperty( - NPPSetter::sCurrent(), this, sAsNPI(iIndex), &oResult); } + SetRestoreNPP::sCurrent(), this, sAsNPI(iIndex), &oResult); } bool NPObjectG::SetProperty(const string& iName, const NPVariantG& iValue) { return GuestMeister::sGet()->Host_SetProperty( - NPPSetter::sCurrent(), this, sAsNPI(iName), &iValue); } + SetRestoreNPP::sCurrent(), this, sAsNPI(iName), &iValue); } bool NPObjectG::SetProperty(size_t iIndex, const NPVariantG& iValue) { return GuestMeister::sGet()->Host_SetProperty( - NPPSetter::sCurrent(), this, sAsNPI(iIndex), &iValue); } + SetRestoreNPP::sCurrent(), this, sAsNPI(iIndex), &iValue); } bool NPObjectG::RemoveProperty(const string& iName) { return GuestMeister::sGet()->Host_RemoveProperty( - NPPSetter::sCurrent(), this, sAsNPI(iName)); } + SetRestoreNPP::sCurrent(), this, sAsNPI(iName)); } bool NPObjectG::RemoveProperty(size_t iIndex) { return GuestMeister::sGet()->Host_RemoveProperty( - NPPSetter::sCurrent(), this, sAsNPI(iIndex)); } + SetRestoreNPP::sCurrent(), this, sAsNPI(iIndex)); } bool NPObjectG::Enumerate(NPIdentifier*& oIdentifiers, uint32& oCount) { return GuestMeister::sGet()->Host_Enumerate( - NPPSetter::sCurrent(), this, &oIdentifiers, &oCount); } + SetRestoreNPP::sCurrent(), this, &oIdentifiers, &oCount); } // ================================================================================================= #pragma mark - @@ -207,7 +211,7 @@ { this->_class = &spNPClass; this->referenceCount = 0; - fNPP = NPPSetter::sCurrent(); + fNPP = SetRestoreNPP::sCurrent(); } ObjectG::~ObjectG() Modified: trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h 2010-11-11 04:58:20 UTC (rev 1728) +++ trunk/zoolib/source/cxx/more/zoolib/netscape/ZNetscape_Guest.h 2010-11-26 19:44:19 UTC (rev 1729) @@ -39,20 +39,22 @@ // ================================================================================================= #pragma mark - -#pragma mark * NPPSetter +#pragma mark * SetRestoreNPP -class NPPSetter +class SetRestoreNPP { +public: + SetRestoreNPP(NPP iNPP); + ~SetRestoreNPP(); + + static NPP sCurrent(); + private: NPP fPrior; - static NPP spNPP; - -public: - NPPSetter(NPP iNPP); - ~NPPSetter(); - static NPP sCurrent(); }; +typedef SetRestoreNPP NPPSetter; + // ================================================================================================= #pragma mark - #pragma mark * NPVariantG This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |