PHP  
 PHP: Test and Code Coverage Analysis
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

LTP GCOV extension - code coverage report
Current view: directory - mbstring/libmbfl/mbfl - mbfl_ident.c
Test: PHP Code Coverage
Date: 2009-11-19 Instrumented lines: 53
Code covered: 71.7 % Executed lines: 38
Legend: not executed executed

       1                 : /*
       2                 :  * "streamable kanji code filter and converter"
       3                 :  * Copyright (c) 1998-2002 HappySize, Inc. All rights reserved.
       4                 :  *
       5                 :  * LICENSE NOTICES
       6                 :  *
       7                 :  * This file is part of "streamable kanji code filter and converter",
       8                 :  * which is distributed under the terms of GNU Lesser General Public 
       9                 :  * License (version 2) as published by the Free Software Foundation.
      10                 :  *
      11                 :  * This software is distributed in the hope that it will be useful,
      12                 :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      13                 :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14                 :  * GNU Lesser General Public License for more details.
      15                 :  *
      16                 :  * You should have received a copy of the GNU Lesser General Public
      17                 :  * License along with "streamable kanji code filter and converter";
      18                 :  * if not, write to the Free Software Foundation, Inc., 59 Temple Place,
      19                 :  * Suite 330, Boston, MA  02111-1307  USA
      20                 :  *
      21                 :  * The author of this file:
      22                 :  *
      23                 :  */
      24                 : /*
      25                 :  * The source code included in this files was separated from mbfilter.c
      26                 :  * by Moriyoshi Koizumi <moriyoshi@php.net> on 20 Dec 2002. The file
      27                 :  * mbfilter.c is included in this package .
      28                 :  *
      29                 :  */
      30                 : 
      31                 : #ifdef HAVE_CONFIG_H
      32                 : #include "config.h"
      33                 : #endif
      34                 : 
      35                 : #ifdef HAVE_STDDEF_H
      36                 : #include <stddef.h>
      37                 : #endif
      38                 : 
      39                 : #include "mbfl_ident.h"
      40                 : #include "mbfl_allocators.h"
      41                 : #include "mbfilter_pass.h"
      42                 : #include "mbfilter_8bit.h"
      43                 : #include "mbfilter_wchar.h"
      44                 : 
      45                 : #include "filters/mbfilter_euc_cn.h"
      46                 : #include "filters/mbfilter_hz.h"
      47                 : #include "filters/mbfilter_euc_tw.h"
      48                 : #include "filters/mbfilter_big5.h"
      49                 : #include "filters/mbfilter_uhc.h"
      50                 : #include "filters/mbfilter_euc_kr.h"
      51                 : #include "filters/mbfilter_iso2022_kr.h"
      52                 : #include "filters/mbfilter_sjis.h"
      53                 : #include "filters/mbfilter_jis.h"
      54                 : #include "filters/mbfilter_iso2022_jp_ms.h"
      55                 : #include "filters/mbfilter_euc_jp.h"
      56                 : #include "filters/mbfilter_euc_jp_win.h"
      57                 : #include "filters/mbfilter_ascii.h"
      58                 : #include "filters/mbfilter_koi8r.h"
      59                 : #include "filters/mbfilter_cp866.h"
      60                 : #include "filters/mbfilter_cp932.h"
      61                 : #include "filters/mbfilter_cp936.h"
      62                 : #include "filters/mbfilter_cp1251.h"
      63                 : #include "filters/mbfilter_cp1252.h"
      64                 : #include "filters/mbfilter_cp51932.h"
      65                 : #include "filters/mbfilter_iso8859_1.h"
      66                 : #include "filters/mbfilter_iso8859_2.h"
      67                 : #include "filters/mbfilter_iso8859_3.h"
      68                 : #include "filters/mbfilter_iso8859_4.h"
      69                 : #include "filters/mbfilter_iso8859_5.h"
      70                 : #include "filters/mbfilter_iso8859_6.h"
      71                 : #include "filters/mbfilter_iso8859_7.h"
      72                 : #include "filters/mbfilter_iso8859_8.h"
      73                 : #include "filters/mbfilter_iso8859_9.h"
      74                 : #include "filters/mbfilter_iso8859_10.h"
      75                 : #include "filters/mbfilter_iso8859_13.h"
      76                 : #include "filters/mbfilter_iso8859_14.h"
      77                 : #include "filters/mbfilter_iso8859_15.h"
      78                 : #include "filters/mbfilter_base64.h"
      79                 : #include "filters/mbfilter_qprint.h"
      80                 : #include "filters/mbfilter_uuencode.h"
      81                 : #include "filters/mbfilter_7bit.h"
      82                 : #include "filters/mbfilter_utf7.h"
      83                 : #include "filters/mbfilter_utf7imap.h"
      84                 : #include "filters/mbfilter_utf8.h"
      85                 : #include "filters/mbfilter_utf16.h"
      86                 : #include "filters/mbfilter_utf32.h"
      87                 : #include "filters/mbfilter_byte2.h"
      88                 : #include "filters/mbfilter_byte4.h"
      89                 : #include "filters/mbfilter_ucs4.h"
      90                 : #include "filters/mbfilter_ucs2.h"
      91                 : #include "filters/mbfilter_htmlent.h"
      92                 : #include "filters/mbfilter_armscii8.h"
      93                 : 
      94                 : static const struct mbfl_identify_vtbl vtbl_identify_false = {
      95                 :         mbfl_no_encoding_pass,
      96                 :         mbfl_filt_ident_false_ctor,
      97                 :         mbfl_filt_ident_common_dtor,
      98                 :         mbfl_filt_ident_false };
      99                 : 
     100                 : 
     101                 : static const struct mbfl_identify_vtbl *mbfl_identify_filter_list[] = {
     102                 :         &vtbl_identify_utf8,
     103                 :         &vtbl_identify_utf7,
     104                 :         &vtbl_identify_ascii,
     105                 :         &vtbl_identify_eucjp,
     106                 :         &vtbl_identify_sjis,
     107                 :         &vtbl_identify_eucjpwin,
     108                 :         &vtbl_identify_sjiswin,
     109                 :         &vtbl_identify_jis,
     110                 :         &vtbl_identify_2022jp,
     111                 :         &vtbl_identify_2022jpms,
     112                 :         &vtbl_identify_cp51932,
     113                 :         &vtbl_identify_euccn,
     114                 :         &vtbl_identify_cp936,
     115                 :         &vtbl_identify_hz,
     116                 :         &vtbl_identify_euctw,
     117                 :         &vtbl_identify_big5,
     118                 :         &vtbl_identify_euckr,
     119                 :         &vtbl_identify_uhc,
     120                 :         &vtbl_identify_2022kr,
     121                 :         &vtbl_identify_cp1251,
     122                 :         &vtbl_identify_cp866,
     123                 :         &vtbl_identify_koi8r,
     124                 :         &vtbl_identify_cp1252,
     125                 :         &vtbl_identify_8859_1,
     126                 :         &vtbl_identify_8859_2,
     127                 :         &vtbl_identify_8859_3,
     128                 :         &vtbl_identify_8859_4,
     129                 :         &vtbl_identify_8859_5,
     130                 :         &vtbl_identify_8859_6,
     131                 :         &vtbl_identify_8859_7,
     132                 :         &vtbl_identify_8859_8,
     133                 :         &vtbl_identify_8859_9,
     134                 :         &vtbl_identify_8859_10,
     135                 :         &vtbl_identify_8859_13,
     136                 :         &vtbl_identify_8859_14,
     137                 :         &vtbl_identify_8859_15,
     138                 :         &vtbl_identify_armscii8,
     139                 :         &vtbl_identify_false,
     140                 :         NULL
     141                 : };
     142                 : 
     143                 : 
     144                 : 
     145                 : /*
     146                 :  * identify filter
     147                 :  */
     148                 : const struct mbfl_identify_vtbl * mbfl_identify_filter_get_vtbl(enum mbfl_no_encoding encoding)
     149             118 : {
     150                 :         const struct mbfl_identify_vtbl * vtbl;
     151                 :         int i;
     152                 : 
     153             118 :         i = 0;
     154             619 :         while ((vtbl = mbfl_identify_filter_list[i++]) != NULL) {
     155             501 :                 if (vtbl->encoding == encoding) {
     156             118 :                         break;
     157                 :                 }
     158                 :         }
     159                 : 
     160             118 :         return vtbl;
     161                 : }
     162                 : 
     163                 : mbfl_identify_filter *mbfl_identify_filter_new(enum mbfl_no_encoding encoding)
     164              30 : {
     165                 :         mbfl_identify_filter *filter;
     166                 : 
     167                 :         /* allocate */
     168              30 :         filter = (mbfl_identify_filter *)mbfl_malloc(sizeof(mbfl_identify_filter));
     169              30 :         if (filter == NULL) {
     170               0 :                 return NULL;
     171                 :         }
     172                 : 
     173              30 :         if (mbfl_identify_filter_init(filter, encoding)) {
     174               0 :                 mbfl_free(filter);
     175               0 :                 return NULL;
     176                 :         }
     177                 : 
     178              30 :         return filter;
     179                 : }
     180                 : 
     181                 : int mbfl_identify_filter_init(mbfl_identify_filter *filter, enum mbfl_no_encoding encoding)
     182             118 : {
     183                 :         const struct mbfl_identify_vtbl *vtbl;
     184                 : 
     185                 :         /* encoding structure */
     186             118 :         filter->encoding = mbfl_no2encoding(encoding);
     187             118 :         if (filter->encoding == NULL) {
     188               0 :                 filter->encoding = &mbfl_encoding_pass;
     189                 :         }
     190                 : 
     191             118 :         filter->status = 0;
     192             118 :         filter->flag = 0;
     193             118 :         filter->score = 0;
     194                 : 
     195                 :         /* setup the function table */
     196             118 :         vtbl = mbfl_identify_filter_get_vtbl(filter->encoding->no_encoding);
     197             118 :         if (vtbl == NULL) {
     198               0 :                 vtbl = &vtbl_identify_false;
     199                 :         }
     200             118 :         filter->filter_ctor = vtbl->filter_ctor;
     201             118 :         filter->filter_dtor = vtbl->filter_dtor;
     202             118 :         filter->filter_function = vtbl->filter_function;
     203                 : 
     204                 :         /* constructor */
     205             118 :         (*filter->filter_ctor)(filter);
     206                 : 
     207             118 :         return 0;
     208                 : }
     209                 : 
     210                 : void mbfl_identify_filter_delete(mbfl_identify_filter *filter)
     211              30 : {
     212              30 :         if (filter == NULL) {
     213               0 :                 return;
     214                 :         }
     215                 : 
     216              30 :         mbfl_identify_filter_cleanup(filter);
     217              30 :         mbfl_free((void*)filter);
     218                 : }
     219                 : 
     220                 : void mbfl_identify_filter_cleanup(mbfl_identify_filter *filter)
     221             118 : {
     222             118 :         (*filter->filter_dtor)(filter);
     223             118 : }
     224                 : 
     225                 : void mbfl_filt_ident_common_ctor(mbfl_identify_filter *filter)
     226             118 : {
     227             118 :         filter->status = 0;
     228             118 :         filter->flag = 0;
     229             118 : }
     230                 : 
     231                 : void mbfl_filt_ident_common_dtor(mbfl_identify_filter *filter)
     232             118 : {
     233             118 :         filter->status = 0;
     234             118 : }
     235                 : 
     236                 : int mbfl_filt_ident_false(int c, mbfl_identify_filter *filter)
     237               0 : {
     238               0 :         filter->flag = 1;    /* bad */
     239               0 :         return c;
     240                 : }
     241                 : 
     242                 : void mbfl_filt_ident_false_ctor(mbfl_identify_filter *filter)
     243               0 : {
     244               0 :         filter->status = 0;
     245               0 :         filter->flag = 1;
     246               0 : }
     247                 : 
     248                 : int mbfl_filt_ident_true(int c, mbfl_identify_filter *filter)
     249               0 : {
     250               0 :         return c;
     251                 : }

Generated by: LTP GCOV extension version 1.5

Generated at Thu, 19 Nov 2009 08:20:11 +0000 (5 days ago)

Copyright © 2005-2009 The PHP Group
All rights reserved.