tal             Tue Sep 17 12:27:27 2002 EDT

  Modified files:              
    /php4/ext/fribidi   README fribidi.c 
  Log:
  
  * The second argument of
  fribidi_log2vis now accepts a constant.
  The old way (using strings) is still available
  but deprecated.
  
  
Index: php4/ext/fribidi/README
diff -u php4/ext/fribidi/README:1.4 php4/ext/fribidi/README:1.5
--- php4/ext/fribidi/README:1.4 Mon Sep 16 11:31:32 2002
+++ php4/ext/fribidi/README     Tue Sep 17 12:27:27 2002
@@ -9,9 +9,13 @@
 Usage
 =====
 
- The only function used is fribidi_log2vis (logical to visual).
-     Input: 1) The Logical string.
-            2) Base direction of application - 'L' or 'R'.
+ The only function used is fribidi_log2vis (logical [non-reversed] to visual 
+[reversed]).
+     Input: 
+            1) The Logical string.
+            2) Base direction of application. Possible values:
+                 a) FRIBIDI_RTL  - right to left
+                 b) FRIBIDI_LTR  - left to right
+                 c) FRIBIDI_AUTO - autodetect the base direction
             3) The char code being used, which can be one of the following
                constants:
                  a) FRIBIDI_CHARSET_UTF8
@@ -43,7 +47,7 @@
 
 The function fribidi_log2vis computes three more arrays which are currently not 
passed back as output.
 These arrays are:
-       1) mapping from the logical to the visual sting.
+       1) mapping from the logical to the visual string.
        2) mapping from the visual to the logical string.
        3) embedding level of characters as figured out by the FriBidi algorithm.
 
Index: php4/ext/fribidi/fribidi.c
diff -u php4/ext/fribidi/fribidi.c:1.17 php4/ext/fribidi/fribidi.c:1.18
--- php4/ext/fribidi/fribidi.c:1.17     Mon Sep 16 11:31:32 2002
+++ php4/ext/fribidi/fribidi.c  Tue Sep 17 12:27:27 2002
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: fribidi.c,v 1.17 2002/09/16 15:31:32 sniper Exp $ */
+/* $Id: fribidi.c,v 1.18 2002/09/17 16:27:27 tal Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -57,13 +57,19 @@
  */
 PHP_MINIT_FUNCTION(fribidi)
 {
+       /* Charsets */
        REGISTER_LONG_CONSTANT("FRIBIDI_CHARSET_UTF8", FRIBIDI_CHARSET_UTF8, CONST_CS 
| CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("FRIBIDI_CHARSET_8859_6", FRIBIDI_CHARSET_ISO8859_6, 
CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("FRIBIDI_CHARSET_8859_8", FRIBIDI_CHARSET_ISO8859_8, 
CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("FRIBIDI_CHARSET_CP1255", FRIBIDI_CHARSET_CP1255, 
CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("FRIBIDI_CHARSET_CP1256", FRIBIDI_CHARSET_CP1256, 
CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("FRIBIDI_CHARSET_ISIRI_3342", 
FRIBIDI_CHARSET_ISIRI_3342, CONST_CS | CONST_PERSISTENT);
-
+       
+       /* Directions */
+       REGISTER_LONG_CONSTANT("FRIBIDI_AUTO", FRIBIDI_TYPE_ON, CONST_CS | 
+CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("FRIBIDI_LTR", FRIBIDI_TYPE_LTR, CONST_CS | 
+CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("FRIBIDI_RTL", FRIBIDI_TYPE_RTL, CONST_CS | 
+CONST_PERSISTENT);
+       
        return SUCCESS;
 }
 /* }}} */
@@ -127,12 +133,27 @@
        if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &parameter1, 
&parameter2, &parameter3) == FAILURE) {
                WRONG_PARAM_COUNT;
        }
-
+       
        /* convert input to expected type.... */
        convert_to_string_ex(parameter1);
-       convert_to_string_ex(parameter2);
        convert_to_long_ex(parameter3);
-       
+
+       if (Z_TYPE_PP(parameter2) == IS_LONG) {
+               convert_to_long_ex(parameter2);
+               base_dir = Z_LVAL_PP(parameter2);
+       } else if (Z_TYPE_PP(parameter2) == IS_STRING) {
+               convert_to_string_ex(parameter2);
+               if ((Z_STRVAL_PP(parameter2))[0] == 'R') {
+                       base_dir = FRIBIDI_TYPE_RTL;
+               } else if (Z_STRVAL_PP(parameter2)[0] == 'L') {
+                       base_dir = FRIBIDI_TYPE_LTR;
+               } else {
+                       base_dir = FRIBIDI_TYPE_ON;
+               }
+                       
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "The use of strings to 
+mark the base direction is deprecated, please use the FRIBIDI_LTR, FRIBIDI_RTL and 
+FRIBIDI_AUTO constants");
+       }
+
        /* allocate space and prepare all local variables */
        len = Z_STRLEN_PP(parameter1);
        inString = estrndup(Z_STRVAL_PP(parameter1), len);
@@ -180,13 +201,6 @@
        }
        
        /* visualize the logical.... */
-       if ((Z_STRVAL_PP(parameter2))[0] == 'R') {
-               base_dir = FRIBIDI_TYPE_RTL;
-       } else if (Z_STRVAL_PP(parameter2)[0] == 'L') {
-               base_dir = FRIBIDI_TYPE_LTR;
-       } else {
-               base_dir = FRIBIDI_TYPE_N;
-       }
        
        outString = (char *) emalloc(sizeof(char)*alloc_len);
 



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to