 retrieving revision 1.1
 diff -u -r1.1 zend_vm_opcodes.h
 --- Zend/zend_vm_opcodes.h	27 Oct 2004 20:13:59 -0000	1.1
-+++ Zend/zend_vm_opcodes.h	6 Jan 2005 18:43:48 -0000
++++ Zend/zend_vm_opcodes.h	6 Jan 2005 18:49:58 -0000
 @@ -127,3 +127,5 @@
  #define ZEND_ASSIGN_DIM              147
  #define ZEND_ISSET_ISEMPTY_PROP_OBJ  148

 /* {{{ proto public static mixed ReflectionClass::export(mixed argument [, bool return]) throws ReflectionException
    Exports a reflection object. Returns the output if TRUE is specified for return, printing it otherwise. */
 ZEND_METHOD(reflection_class, export)
@@ -2539,6 +2660,29 @@
 }
 /* }}} */
 
+/* {{{ proto public ReflectionMethod ReflectionClass::hasMethod(string name)
+   Returns whether a method by a given name exists */
+ZEND_METHOD(reflection_class, hasMethod)
+{
+	reflection_object *intern;
+	zend_class_entry *ce;
+	char *name, *lc_name; 
+	int name_len, exists;
+
+	METHOD_NOTSTATIC;
+	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
+		return;
+	}
+
+	GET_REFLECTION_OBJECT_PTR(ce);
+	lc_name = zend_str_tolower_dup(name, name_len);
+	exists = zend_hash_exists(&ce->function_table, lc_name, name_len + 1);
+	efree(lc_name);
+
+	RETVAL_BOOL(exists);
+}
+/* }}} */
+
 /* {{{ _addmethod */
 static int _addmethod(zend_function *mptr, int num_args, va_list args, zend_hash_key *hash_key TSRMLS_DC)
 {
@@ -2998,6 +3142,107 @@
 }
 /* }}} */
 

retrieving revision 1.255
diff -u -r1.255 zend_builtin_functions.c
--- Zend/zend_builtin_functions.c	27 Dec 2004 18:53:27 -0000	1.255
+++ Zend/zend_builtin_functions.c	6 Jan 2005 18:49:43 -0000
@@ -1205,45 +1205,80 @@
 	zend_uint mask = va_arg(args, zend_uint);
 	zend_uint comply = va_arg(args, zend_uint);
