cvs: php4 / EXTENSIONS /ext/com COM.c /ext/dotnet README dotnet.cpp dotnet.dsp dotnet.php php_dotnet.h /ext/standard info.c

From: Date: Sat, 26 Aug 2000 12:53:13 +0000
Subject: cvs: php4 / EXTENSIONS /ext/com COM.c /ext/dotnet README dotnet.cpp dotnet.dsp dotnet.php php_dotnet.h /ext/standard info.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-1392@lists.php.net to get a copy of this message
rubys Sat Aug 26 05:53:13 2000 EDT Added files: /php4/ext/dotnet README dotnet.cpp dotnet.dsp dotnet.php php_dotnet.h Modified files: /php4 EXTENSIONS /php4/ext/com COM.c /php4/ext/standard info.c Log: Add ***EXPERIMENTAL*** Zend OO Extension support for Microsoft.Net Index: php4/EXTENSIONS diff -u php4/EXTENSIONS:1.5 php4/EXTENSIONS:1.6 --- php4/EXTENSIONS:1.5 Wed Aug 23 11:31:01 2000 +++ php4/EXTENSIONS Sat Aug 26 05:53:12 2000 @@ -65,8 +65,9 @@ STATUS: Unknown ------------------------------------------------------------------------------- EXTENSION: servlet -MAINTENANCE: Unknown -STATUS: Unknown +PRIMARY MAINTAINER: Sam Ruby <rubys@us.ibm.com> +MAINTENANCE: Maintained +STATUS: Working ------------------------------------------------------------------------------- EXTENSION: thttpd MAINTENANCE: Unknown @@ -199,6 +200,11 @@ MAINTENANCE: Maintained STATUS: Experimental ------------------------------------------------------------------------------- +EXTENSION: dotnet +PRIMARY MAINTAINER: Sam Ruby <rubys@us.ibm.com> +MAINTENANCE: Maintained +STATUS: Experimental +------------------------------------------------------------------------------- EXTENSION: exif MAINTENANCE: Unknown STATUS: Unknown @@ -233,7 +239,7 @@ EXTENSION: java PRIMARY MAINTAINER: Sam Ruby <rubys@us.ibm.com> MAINTENANCE: Maintained -STATUS: Unknown +STATUS: Working ------------------------------------------------------------------------------- EXTENSION: ldap PRIMARY MAINTAINER: Rasmus Lerdorf <rasmus@php.net> Index: php4/ext/com/COM.c diff -u php4/ext/com/COM.c:1.37 php4/ext/com/COM.c:1.38 --- php4/ext/com/COM.c:1.37 Fri Jun 16 11:23:56 2000 +++ php4/ext/com/COM.c Sat Aug 26 05:53:12 2000 @@ -66,6 +66,10 @@ {NULL, NULL, NULL} }; +__declspec(dllexport) +int php_COM_get_le_idispatch() { + return le_idispatch; +} static PHP_MINFO_FUNCTION(COM) { @@ -81,7 +85,8 @@ static int php_COM_load_typelib(char *typelib_name, int mode); -static char *php_COM_error_message(HRESULT hr) +__declspec(dllexport) +char *php_COM_error_message(HRESULT hr) { void *pMsgBuf; @@ -428,7 +433,7 @@ var_arg->pdispVal->lpVtbl->Release(var_arg->pdispVal); /* fallthru */ default: - php_error(E_WARNING,"Unsupported variant type"); + php_error(E_WARNING,"Unsupported variant type: %d (0x%X)", var_arg->vt, var_arg->vt); var_reset(pval_arg); break; } @@ -834,6 +839,7 @@ } +__declspec(dllexport) pval php_COM_get_property_handler(zend_property_reference *property_reference) { pval result; @@ -844,6 +850,7 @@ } +__declspec(dllexport) int php_COM_set_property_handler(zend_property_reference *property_reference, pval *value) { pval result; @@ -907,6 +914,7 @@ +__declspec(dllexport) void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference) { zend_overloaded_element *overloaded_property; @@ -933,6 +941,8 @@ pval **arguments; int arg_count = ZEND_NUM_ARGS(); VARIANTARG var_result; + + var_result.vt = VT_EMPTY; if (object_handle.vt != VT_DISPATCH) { /* that shouldn't happen */ Index: php4/ext/standard/info.c diff -u php4/ext/standard/info.c:1.110 php4/ext/standard/info.c:1.111 --- php4/ext/standard/info.c:1.110 Mon Aug 21 02:50:52 2000 +++ php4/ext/standard/info.c Sat Aug 26 05:53:13 2000 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: info.c,v 1.110 2000/08/21 09:50:52 sas Exp $ */ +/* $Id: info.c,v 1.111 2000/08/26 12:53:13 rubys Exp $ */ #include "php.h" #include "php_ini.h" @@ -396,6 +396,7 @@ CREDIT_LINE("DBA", "Sascha Schumann"); CREDIT_LINE("DBM", "Rasmus Lerdorf, Jim Winstead"); CREDIT_LINE("dBase", "Jim Winstead"); + CREDIT_LINE("dotnet", "Sam Ruby"); CREDIT_LINE("FDF", "Uwe Steinmann"); CREDIT_LINE("FilePro", "Chad Robinson"); CREDIT_LINE("FTP", "Andrew Skalski"); Index: php4/ext/dotnet/dotnet.cpp +++ php4/ext/dotnet/dotnet.cpp /* +----------------------------------------------------------------------+ | PHP version 4.0 | +----------------------------------------------------------------------+ | Copyright (c) 1997, 1998, 1999, 2000 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 2.02 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available at through the world-wide-web at | | http://www.php.net/license/2_02.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Author: Sam Ruby <rubys@us.ibm.com> | +----------------------------------------------------------------------+ */ /* * This module implements support for Microsoft .Net components. */ #ifdef PHP_WIN32 #include <iostream.h> #include <math.h> #include <comdef.h> extern "C" { #include "php.h" #include "php_ini.h" pval php_COM_get_property_handler(zend_property_reference *property_reference); int php_COM_set_property_handler(zend_property_reference *property_reference, pval *value); char *php_COM_error_message(HRESULT hr); void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference); int php_COM_get_le_idispatch(); } #include <stdio.h> #include "Mscoree.h" #include "mscorlib.h" using namespace mscorlib; static ICorRuntimeHost *pHost; static mscorlib::_AppDomain *pDomain; static zend_class_entry dotnet_class_entry; static OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen) { OLECHAR *unicode_str = (OLECHAR *) emalloc(sizeof(OLECHAR)*(strlen+1)); OLECHAR *unicode_ptr = unicode_str; while (*C_str) { *unicode_ptr++ = (unsigned short) *C_str++; } *unicode_ptr = 0; return unicode_str; } HRESULT dotnet_init() { HRESULT hr; hr = CoCreateInstance(CLSID_CorRuntimeHost, NULL, CLSCTX_ALL, IID_ICorRuntimeHost, (void **)&pHost); if (FAILED(hr)) return hr; hr = pHost->Start(); if (FAILED(hr)) return hr; IUnknown *uDomain; hr = pHost->GetDefaultDomain(&uDomain); if (FAILED(hr)) return hr; hr = uDomain->QueryInterface(__uuidof(_AppDomain), (void**) &pDomain); if (FAILED(hr)) return -1; uDomain->Release(); return ERROR_SUCCESS; } HRESULT dotnet_create(OLECHAR *assembly, OLECHAR *datatype, struct IDispatch **object) { HRESULT hr; _ObjectHandle *pHandle; hr = pDomain->CreateInstance(_bstr_t(assembly), _bstr_t(datatype), &pHandle); if (FAILED(hr)) return hr; if (!pHandle) return hr; _variant_t unwrapped; hr = pHandle->Unwrap(&unwrapped); pHandle->Release(); if (FAILED(hr)) return hr; *object = unwrapped.pdispVal; return ERROR_SUCCESS; } void dotnet_term() { if (pHost) pHost->Stop(); if (pHost) pHost->Release(); if (pDomain) pDomain->Release(); pHost = 0; pDomain = 0; } /* {{{ proto int dotnet_load(string module_name) Loads a DOTNET module */ PHP_FUNCTION(DOTNET_load) { HRESULT hr; pval *assembly_name, *datatype_name; OLECHAR *assembly, *datatype; IDispatch FAR *i_dispatch = NULL; if (ZEND_NUM_ARGS() != 2) WRONG_PARAM_COUNT; getParameters(ht, 2, &assembly_name, &datatype_name); convert_to_string(assembly_name); assembly = php_char_to_OLECHAR(assembly_name->value.str.val, assembly_name->value.str.len); convert_to_string(datatype_name); datatype = php_char_to_OLECHAR(datatype_name->value.str.val, datatype_name->value.str.len); /* obtain IDispatch */ hr=dotnet_create(assembly, datatype, &i_dispatch); efree(assembly); efree(datatype); if (FAILED(hr)) { char *error_message; error_message = php_COM_error_message(hr); php_error(E_WARNING,"Error obtaining .Net class for %s in assembly %s: %s",datatype_name->value.str.val,assembly_name->value.str.val,error_message); LocalFree(error_message); RETURN_FALSE; } if (!i_dispatch) { php_error(E_WARNING,"Unable to locate %s in assembly %s",datatype_name->value.str.val,assembly_name->value.str.val); RETURN_FALSE; } RETURN_LONG(zend_list_insert(i_dispatch,php_COM_get_le_idispatch())); } /* }}} */ void php_DOTNET_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference) { pval *object = property_reference->object; zend_overloaded_element *function_name = (zend_overloaded_element *) property_reference->elements_list->tail->data; if (zend_llist_count(property_reference->elements_list)==1 && !strcmp(function_name->element.value.str.val, "dotnet")) { /* constructor */ pval *object_handle; PHP_FN(DOTNET_load)(INTERNAL_FUNCTION_PARAM_PASSTHRU); if (!zend_is_true(return_value)) { var_reset(object); return; } ALLOC_ZVAL(object_handle); *object_handle = *return_value; pval_copy_constructor(object_handle); INIT_PZVAL(object_handle); zend_hash_index_update(object->value.obj.properties, 0, &object_handle, sizeof(pval *), NULL); pval_destructor(&function_name->element); } else { php_COM_call_function_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU, property_reference); } } void php_register_DOTNET_class() { INIT_OVERLOADED_CLASS_ENTRY(dotnet_class_entry, "DOTNET", NULL, php_DOTNET_call_function_handler, php_COM_get_property_handler, php_COM_set_property_handler); zend_register_internal_class(&dotnet_class_entry); } function_entry DOTNET_functions[] = { {NULL, NULL, NULL} }; static PHP_MINFO_FUNCTION(DOTNET) { DISPLAY_INI_ENTRIES(); } PHP_INI_BEGIN() PHP_INI_END() PHP_MINIT_FUNCTION(DOTNET) { HRESULT hr; CoInitialize(0); hr = dotnet_init(); if (FAILED(hr)) return hr; php_register_DOTNET_class(); REGISTER_INI_ENTRIES(); return SUCCESS; } PHP_MSHUTDOWN_FUNCTION(DOTNET) { dotnet_term(); CoUninitialize(); UNREGISTER_INI_ENTRIES(); return SUCCESS; } zend_module_entry dotnet_module_entry = { "dotnet", DOTNET_functions, PHP_MINIT(DOTNET), PHP_MSHUTDOWN(DOTNET), NULL, NULL, PHP_MINFO(DOTNET), STANDARD_MODULE_PROPERTIES }; extern "C" { ZEND_GET_MODULE(dotnet) } void php_register_DOTNET_class(); #endif Index: php4/ext/dotnet/dotnet.dsp +++ php4/ext/dotnet/dotnet.dsp # Microsoft Developer Studio Project File - Name="dotnet" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=dotnet - Win32 Debug_TS !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "dotnet.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "dotnet.mak" CFG="dotnet - Win32 Debug_TS" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "dotnet - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "dotnet - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "dotnet - Win32 Debug_TS" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "dotnet - Win32 Release_TS" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "dotnet - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "..\..\Release" # PROP BASE Intermediate_Dir "..\..\Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\..\Release" # PROP Intermediate_Dir "..\..\Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "PHP_WIN32" /D "ZEND_WIN32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /I "..\..\Zend" /I "$(JAVA_HOME)\include\win32" /I "$(JAVA_HOME)\include" /I "..\..\..\bindlib_w32" /D "NDEBUG" /D ZEND_DEBUG=0 /D "PHP_WIN32" /D "ZEND_WIN32" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMPILE_DL_JAVA" /D HAVE_JAVA=1 /YX /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x40d /d "NDEBUG" # ADD RSC /l 0x40d /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"..\..\Release/php_dotnet.dll" /libpath:"$(JAVA_HOME)\lib" /libpath:"..\..\Release" !ELSEIF "$(CFG)" == "dotnet - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "..\..\Debug" # PROP BASE Intermediate_Dir "..\..\Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "..\..\Debug" # PROP Intermediate_Dir "..\..\Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "PHP_WIN32" /D "ZEND_WIN32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /I "..\..\Zend" /I "$(JAVA_HOME)\include\win32" /I "$(JAVA_HOME)\include" /I "..\..\..\bindlib_w32" /D "_DEBUG" /D ZEND_DEBUG=1 /D "PHP_WIN32" /D "ZEND_WIN32" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMPILE_DL_JAVA" /D HAVE_JAVA=1 /FR /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x40d /d "_DEBUG" # ADD RSC /l 0x40d /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"..\..\Debug/php_dotnet.dll" /pdbtype:sept /libpath:"$(JAVA_HOME)\lib" /libpath:"..\..\Debug" !ELSEIF "$(CFG)" == "dotnet - Win32 Debug_TS" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "..\..\Debug_TS" # PROP BASE Intermediate_Dir "..\..\Debug_TS" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "..\..\Debug_TS" # PROP Intermediate_Dir "..\..\Debug_TS" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /I "..\..\..\Zend" /I "$(JAVA_HOME)\include\win32" /I "$(JAVA_HOME)\include" /I "..\..\..\bindlib_w32" /D "_DEBUG" /D "PHP_WIN32" /D "ZEND_WIN32" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMPILE_DL_JAVA" /FR /YX /FD /GZ /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\\" /I "..\..\main" /I "..\..\Zend" /I "$(JAVA_HOME)\include\win32" /I "$(JAVA_HOME)\include" /I "..\..\..\bindlib_w32" /D "_DEBUG" /D ZEND_DEBUG=1 /D "ZTS" /D "PHP_WIN32" /D "ZEND_WIN32" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMPILE_DL_JAVA" /D HAVE_JAVA=1 /FR /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x40d /d "_DEBUG" # ADD RSC /l 0x40d /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib php4ts_debug.lib /nologo /dll /debug /machine:I386 /out:"..\..\Debug_TS/php_dotnet.dll" /pdbtype:sept /libpath:"$(JAVA_HOME)\lib" /libpath:"..\..\Debug_TS" !ELSEIF "$(CFG)" == "dotnet - Win32 Release_TS" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "..\..\Release_TS" # PROP BASE Intermediate_Dir "..\..\Release_TS" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\..\Release_TS" # PROP Intermediate_Dir "..\..\Release_TS" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /I "..\..\..\Zend" /I "$(JAVA_HOME)\include\win32" /I "$(JAVA_HOME)\include" /I "..\..\..\bindlib_w32" /D "NDEBUG" /D "PHP_WIN32" /D "ZEND_WIN32" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMPILE_DL_JAVA" /YX /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\\" /I "..\..\main" /I "..\..\Zend" /I "$(JAVA_HOME)\include\win32" /I "$(JAVA_HOME)\include" /I "..\..\..\bindlib_w32" /D "NDEBUG" /D ZEND_DEBUG=0 /D "ZTS" /D "PHP_WIN32" /D "ZEND_WIN32" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMPILE_DL_JAVA" /D HAVE_JAVA=1 /YX /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x40d /d "NDEBUG" # ADD RSC /l 0x40d /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib php4ts.lib /nologo /dll /machine:I386 /out:"..\..\Release_TS/php_dotnet.dll" /libpath:"$(JAVA_HOME)\lib" /libpath:"..\..\Release_TS" !ENDIF # Begin Target # Name "dotnet - Win32 Release" # Name "dotnet - Win32 Debug" # Name "dotnet - Win32 Debug_TS" # Name "dotnet - Win32 Release_TS" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\dotnet.cpp # End Source File # Begin Source File SOURCE=.\..\..\win32\winutil.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\php_dotnet.h # End Source File # End Group # End Target # End Project Index: php4/ext/dotnet/dotnet.php +++ php4/ext/dotnet/dotnet.php <? $stack = new DOTNET("mscorlib","System.Collections.Stack"); $stack->Push(".Net"); $stack->Push("Hello "); echo $stack->Pop() . $stack->Pop(); ?> Index: php4/ext/dotnet/php_dotnet.h +++ php4/ext/dotnet/php_dotnet.h #ifndef PHP_DOTNET_H #define PHP_DOTNET_H #if WIN32|WINNT extern PHP_MINIT_FUNCTION(DOTNET); extern PHP_MSHUTDOWN_FUNCTION(DOTNET); PHP_FUNCTION(DOTNET_load); extern zend_module_entry DOTNET_module_entry; #define DOTNET_module_ptr &DOTNET_module_entry #else #define DOTNET_module_ptr NULL #endif /* Win32|WINNT */ #define phpext_DOTNET_ptr DOTNET_module_ptr #endif /* PHP_DOTNET_H */

« previous php.cvs (#1392) next »