#define DL_HANDLE HMODULE
#define ZEND_EXTENSIONS_SUPPORT 1
-#ifdef COMPILE_LIBZEND
+#ifdef LIBZEND_EXPORTS
# define ZEND_API __declspec(dllexport)
#else
# define ZEND_API __declspec(dllimport)
!IF "$(CFG)" == "libzend - 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 Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDebug" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDebug" /D "_MBCS" /D "_LIB" /D "COMPILE_LIBZEND" /FR /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /D "NDebug" /D "_LIB" /D "TSRM_EXPORTS" /D "LIBZEND_EXPORTS" /D "WIN32" /D "_MBCS" /FR /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x40d /d "NDebug"
# ADD RSC /l 0x40d /d "NDebug"
!ELSEIF "$(CFG)" == "libzend - 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 Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_Debug" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_Debug" /D "_MBCS" /D "_LIB" /D "COMPILE_LIBZEND" /FR /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_Debug" /D "_LIB" /D "LIBZEND_EXPORTS" /D "TSRM_EXPORTS" /D "WIN32" /D "_MBCS" /FR /YX /FD /GZ /c
# ADD BASE RSC /l 0x40d /d "_Debug"
# ADD RSC /l 0x40d /d "_Debug"
BSC32=bscmake.exe
# End Source File
# Begin Source File
+SOURCE=.\FlexLexer.h
+# End Source File
+# Begin Source File
+
SOURCE=.\modules.h
# End Source File
# Begin Source File
!IF "$(CFG)" == "libzend - Win32 Release"
+# Begin Custom Build
+InputPath=".\zend-scanner.l"
+
+"zend-scanner.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ flex -i -Pzend -ozend-scanner.c zend-scanner.l
+
+# End Custom Build
+
!ELSEIF "$(CFG)" == "libzend - Win32 Debug"
# Begin Custom Build
# PROP Intermediate_Dir "Release_TS"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDebug_TS" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /D "NDebug_TS" /D "WIN32" /D "_MBCS" /D "_LIB" /D "COMPILE_LIBZEND" /D "ZTS" /D "TSRM_EXPORTS" /FR /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /D "NDebug_TS" /D "_LIB" /D "TSRM_EXPORTS" /D "LIBZEND_EXPORTS" /D "ZTS" /D "WIN32" /D "_MBCS" /FR /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x40d /d "NDebug_TS"
# ADD RSC /l 0x40d /d "NDebug_TS"
# PROP Intermediate_Dir "Debug_TS"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_Debug_TS" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_Debug_TS" /D "WIN32" /D "_MBCS" /D "_LIB" /D "COMPILE_LIBZEND" /D "ZTS" /D "TSRM_EXPORTS" /FR /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_Debug_TS" /D "WIN32" /D "_MBCS" /D "_LIB" /D "LIBZEND_EXPORTS" /D "ZTS" /D "TSRM_EXPORTS" /FR /YX /FD /GZ /c
# ADD BASE RSC /l 0x40d /d "_Debug_TS"
# ADD RSC /l 0x40d /d "_Debug_TS"
BSC32=bscmake.exe
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
-SOURCE=".\zend-parser.c"
-# End Source File
-# Begin Source File
-
SOURCE=".\zend-scanner.cpp"
# End Source File
# Begin Source File
!IF "$(CFG)" == "libzendts - Win32 Release_TS"
+# Begin Custom Build
+InputPath=".\zend-scanner.l"
+
+"zend-scanner.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ flex -+ -i -Sflex.skl -Pzend -ozend-scanner.cpp zend-scanner.l
+
+# End Custom Build
+
!ELSEIF "$(CFG)" == "libzendts - Win32 Debug_TS"
# Begin Custom Build
BEGIN_EXTERN_C()
-inline int open_file_for_scanning(zend_file_handle *file_handle CLS_DC)
+ZEND_API inline int open_file_for_scanning(zend_file_handle *file_handle CLS_DC)
{
#ifndef ZTS
FILE *tmp;
yyin = tmp;
yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));
BEGIN(INITIAL);
-
-#else
+ #else
ifstream *input_file = new ifstream(file_handle->filename);
CG(ZFL) = new ZendFlexLexer;
#ifdef ZTS
static void compiler_globals_ctor(zend_compiler_globals *compiler_globals)
{
+ zend_function tmp_func;
+ zend_class_entry tmp_class;
+
compiler_globals->function_table = (HashTable *) malloc(sizeof(HashTable));
zend_hash_init(compiler_globals->function_table, 100, NULL, (void (*)(void *)) destroy_zend_function, 1);
- zend_hash_copy(compiler_globals->function_table, global_function_table, NULL, NULL, 0);
+ zend_hash_copy(compiler_globals->function_table, global_function_table, NULL, &tmp_func, sizeof(zend_function));
compiler_globals->class_table = (HashTable *) malloc(sizeof(HashTable));
zend_hash_init(compiler_globals->class_table, 10, NULL, (void (*)(void *)) destroy_zend_class, 1);
- zend_hash_copy(compiler_globals->class_table, global_class_table, NULL, NULL, 0);
+ zend_hash_copy(compiler_globals->class_table, global_class_table, zend_class_add_ref, &tmp_class, sizeof(zend_class_entry));
}
}
+static void alloc_globals_ctor(zend_alloc_globals *alloc_globals)
+{
+ start_memory_manager();
+}
+
#endif
int zend_startup(zend_utility_functions *utility_functions, char **extensions)
{
#ifdef ZTS
+ zend_compiler_globals *compiler_globals;
zend_executor_globals *executor_globals;
tsrm_startup(1,1,0);
#ifdef ZTS
compiler_globals_id = ts_allocate_id(sizeof(zend_compiler_globals), (void (*)(void *)) compiler_globals_ctor, (void (*)(void *)) compiler_globals_dtor);
executor_globals_id = ts_allocate_id(sizeof(zend_executor_globals), (void (*)(void *)) executor_globals_ctor, (void (*)(void *)) executor_globals_dtor);
+ compiler_globals = ts_resource(compiler_globals_id);
executor_globals = ts_resource(executor_globals_id);
+ zend_hash_destroy(compiler_globals->function_table);
+ zend_hash_destroy(compiler_globals->class_table);
+ compiler_globals->function_table = GLOBAL_FUNCTION_TABLE;
+ compiler_globals->class_table = GLOBAL_CLASS_TABLE;
#endif
init_resource_plist(ELS_C);
}
-#ifdef ZTS
-
-void alloc_globals_ctor(zend_alloc_globals *alloc_globals)
-{
- start_memory_manager();
-}
-
-
-#endif
/*
* Local variables:
* tab-width: 4
void do_extended_fcall_begin(CLS_D);
void do_extended_fcall_end(CLS_D);
+#define INITIAL_OP_ARRAY_SIZE 64
+
/* helper functions in zend-scanner.l */
BEGIN_EXTERN_C()
ZEND_API zend_op_array *v_compile_files(int mark_as_ref CLS_DC, int file_count, va_list files);
ZEND_API zend_op_array *compile_string(zval *source_string CLS_DC);
ZEND_API zend_op_array *compile_filename(zval *filename CLS_DC);
-inline int open_file_for_scanning(zend_file_handle *file_handle CLS_DC);
-END_EXTERN_C()
-
-#define INITIAL_OP_ARRAY_SIZE 64
-
-
-BEGIN_EXTERN_C()
+ZEND_API inline int open_file_for_scanning(zend_file_handle *file_handle CLS_DC);
ZEND_API void init_op_array(zend_op_array *op_array, int initial_ops_size);
ZEND_API void destroy_op_array(zend_op_array *op_array);
END_EXTERN_C()
ZEND_API void destroy_zend_function(zend_function *function);
ZEND_API void destroy_zend_class(zend_class_entry *ce);
+void zend_class_add_ref(zend_class_entry *ce);
+
zend_op *get_next_op(zend_op_array *op_array CLS_DC);
int get_next_op_number(zend_op_array *op_array);
int print_class(zend_class_entry *class_entry);
# define ALS_CC , ALS_C
# define AG(v) (((zend_alloc_globals *) alloc_globals)->v)
# define ALS_FETCH() zend_alloc_globals *alloc_globals = (zend_alloc_globals *) ts_resource(alloc_globals_id)
-void alloc_globals_ctor(zend_alloc_globals *alloc_globals);
#else
# define ALS_D
# define ALS_DC
-void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini)
+ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini)
{
zval token;
int token_type;
BEGIN_EXTERN_C()
-void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini);
+ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini);
int highlight_file(char *filename, zend_syntax_highlighter_ini *syntax_highlighter_ini);
int highlight_string(zval *str, zend_syntax_highlighter_ini *syntax_highlighter_ini);
END_EXTERN_C()
}
-void zend_indent()
+ZEND_API void zend_indent()
{
zval token;
int token_type;
#ifndef _ZEND_INDENT_H
#define _ZEND_INDENT_H
-void zend_indent();
+ZEND_API void zend_indent();
#endif /* _ZEND_INDENT_H */
#include "zend_extensions.h"
#include "zend_API.h"
+
static void zend_extension_op_array_ctor_handler(zend_extension *extension, zend_op_array *op_array)
{
if (extension->op_array_ctor) {
}
+void zend_class_add_ref(zend_class_entry *ce)
+{
+ (*ce->refcount)++;
+}
+
+
ZEND_API void destroy_op_array(zend_op_array *op_array)
{
zend_op *opline = op_array->opcodes;
#include <stdarg.h>
#endif
+#if BROKEN_SPRINTF
int zend_sprintf(char *buffer, const char *format, ...)
{
va_list args;
return strlen(buffer);
}
+#endif
\ No newline at end of file