[php-i18n-commits] cvs commit: libmbfl/mbfl mbfl_buffer_converter.c mbfl_buffer_converter.h Makefile.am mbfilter.c mbfilter.h

Back to archive index

Moriyoshi Koizumi moriy****@users*****
2002年 12月 25日 (水) 02:32:14 JST


moriyoshi    02/12/25 02:32:14

  Modified:    mbfl     Makefile.am mbfilter.c mbfilter.h
  Added:       mbfl     mbfl_buffer_converter.c mbfl_buffer_converter.h
  Log:
  Separated buffer_converter code from mbfilter.c
  
  Revision  Changes    Path
  1.9       +2 -2      libmbfl/mbfl/Makefile.am
  
  Index: Makefile.am
  ===================================================================
  RCS file: /cvsroot/php-i18n/libmbfl/mbfl/Makefile.am,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Makefile.am	20 Dec 2002 19:36:28 -0000	1.8
  +++ Makefile.am	24 Dec 2002 17:32:14 -0000	1.9
  @@ -1,10 +1,10 @@
   lib_LTLIBRARIES=libmbfl.la
  -libmbfl_la_SOURCES=mbfilter.c mbfl_string.c mbfl_language.c mbfl_encoding.c mbfl_convert.c mbfl_ident.c mbfl_memory_device.c mbfl_allocators.c mbfl_filter_output.c mbfilter_pass.c mbfilter_wchar.c mbfilter_8bit.c
  +libmbfl_la_SOURCES=mbfilter.c mbfl_string.c mbfl_language.c mbfl_encoding.c mbfl_convert.c mbfl_ident.c mbfl_memory_device.c mbfl_allocators.c mbfl_filter_output.c mbfilter_pass.c mbfilter_wchar.c mbfilter_8bit.c mbfl_buffer_converter.c
   libmbfl_filters_la=../filters/libmbfl_filters.la
   libmbfl_nls_la=../nls/libmbfl_nls.la
   libmbfl_la_LIBADD=$(libmbfl_filters_la) $(libmbfl_nls_la)
   libmbfl_includedir=$(includedir)/mbfl
  -libmbfl_include_HEADERS=mbfilter.h mbfl_consts.h mbfl_encoding.h mbfl_language.h mbfl_string.h mbfl_convert.h mbfl_ident.h mbfl_memory_device.h mbfl_allocators.h
  +libmbfl_include_HEADERS=mbfilter.h mbfl_consts.h mbfl_encoding.h mbfl_language.h mbfl_string.h mbfl_convert.h mbfl_ident.h mbfl_memory_device.h mbfl_allocators.h mbfl_buffer_converter.h
   
   $(libmbfl_filters_la):
   	$(MAKE) -C `dirname $(libmbfl_filters_la)`
  
  
  
  1.13      +0 -245    libmbfl/mbfl/mbfilter.c
  
  Index: mbfilter.c
  ===================================================================
  RCS file: /cvsroot/php-i18n/libmbfl/mbfl/mbfilter.c,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- mbfilter.c	20 Dec 2002 22:15:38 -0000	1.12
  +++ mbfilter.c	24 Dec 2002 17:32:14 -0000	1.13
  @@ -104,255 +104,11 @@
   	0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46
   };
   
  -
  -
   /*
    * encoding filter
    */
   #define CK(statement)	do { if ((statement) < 0) return (-1); } while (0)
   
  -
  -/*
  - *  buffering converter
  - */
  -mbfl_buffer_converter * mbfl_buffer_converter_new(mbfl_encoding_id from, mbfl_encoding_id to, int buf_initsz)
  -{
  -	mbfl_buffer_converter *convd;
  -
  -	/* allocate */
  -	convd = (mbfl_buffer_converter*)mbfl_malloc(sizeof (mbfl_buffer_converter));
  -	if (convd == NULL) {
  -		return NULL;
  -	}
  -
  -	/* initialize */
  -	convd->from = mbfl_get_encoding_by_id(from);
  -	convd->to = mbfl_get_encoding_by_id(to);
  -	if (convd->from == NULL) {
  -		convd->from = &mbfl_encoding_pass;
  -	}
  -	if (convd->to == NULL) {
  -		convd->to = &mbfl_encoding_pass;
  -	}
  -
  -	/* create convert filter */
  -	convd->filter1 = NULL;
  -	convd->filter2 = NULL;
  -	if (mbfl_convert_filter_get_vtbl(convd->from->no_encoding, convd->to->no_encoding) != NULL) {
  -		convd->filter1 = mbfl_convert_filter_new(convd->from->no_encoding, convd->to->no_encoding, mbfl_memory_device_output, 0, &convd->device);
  -	} else {
  -		convd->filter2 = mbfl_convert_filter_new(mbfl_encoding_id_wchar, convd->to->no_encoding, mbfl_memory_device_output, 0, &convd->device);
  -		if (convd->filter2 != NULL) {
  -			convd->filter1 = mbfl_convert_filter_new(convd->from->no_encoding, mbfl_encoding_id_wchar, (int (*)(int, void*))convd->filter2->filter_function, NULL, convd->filter2);
  -			if (convd->filter1 == NULL) {
  -				mbfl_convert_filter_delete(convd->filter2);
  -			}
  -		}
  -	}
  -	if (convd->filter1 == NULL) {
  -		return NULL;
  -	}
  -
  -	mbfl_memory_device_init(&convd->device, buf_initsz, buf_initsz/4);
  -
  -	return convd;
  -}
  -
  -void mbfl_buffer_converter_delete(mbfl_buffer_converter *convd)
  -{
  -	if (convd != NULL) {
  -		if (convd->filter1) {
  -			mbfl_convert_filter_delete(convd->filter1);
  -		}
  -		if (convd->filter2) {
  -			mbfl_convert_filter_delete(convd->filter2);
  -		}
  -		mbfl_memory_device_clear(&convd->device);
  -		mbfl_free((void*)convd);
  -	}
  -}
  -
  -void mbfl_buffer_converter_reset(mbfl_buffer_converter *convd)
  -{
  -	mbfl_memory_device_reset(&convd->device);
  -}
  -
  -int mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode)
  -{
  -	if (convd != NULL) {
  -		if (convd->filter2 != NULL) {
  -			convd->filter2->illegal_mode = mode;
  -		} else if (convd->filter1 != NULL) {
  -			convd->filter1->illegal_mode = mode;
  -		} else {
  -			return 0;
  -		}
  -	}
  -
  -	return 1;
  -}
  -
  -int mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar)
  -{
  -	if (convd != NULL) {
  -		if (convd->filter2 != NULL) {
  -			convd->filter2->illegal_substchar = substchar;
  -		} else if (convd->filter1 != NULL) {
  -			convd->filter1->illegal_substchar = substchar;
  -		} else {
  -			return 0;
  -		}
  -	}
  -
  -	return 1;
  -}
  -
  -int mbfl_buffer_converter_strncat(mbfl_buffer_converter *convd, const unsigned char *p, int n)
  -{
  -	mbfl_convert_filter *filter;
  -	int (*filter_function)(int c, mbfl_convert_filter *filter);
  -
  -	if (convd != NULL && p != NULL) {
  -		filter = convd->filter1;
  -		if (filter != NULL) {
  -			filter_function = filter->filter_function;
  -			while (n > 0) {
  -				if ((*filter_function)(*p++, filter) < 0) {
  -					break;
  -				}
  -				n--;
  -			}
  -		}
  -	}
  -
  -	return n;
  -}
  -
  -int mbfl_buffer_converter_feed(mbfl_buffer_converter *convd, mbfl_string *string)
  -{
  -	int n;
  -	unsigned char *p;
  -	mbfl_convert_filter *filter;
  -	int (*filter_function)(int c, mbfl_convert_filter *filter);
  -
  -	if (convd == NULL || string == NULL) {
  -		return -1;
  -	}
  -	mbfl_memory_device_realloc(&convd->device, convd->device.pos + string->len, string->len/4);
  -	/* feed data */
  -	n = string->len;
  -	p = string->val;
  -	filter = convd->filter1;
  -	if (filter != NULL) {
  -		filter_function = filter->filter_function;
  -		while (n > 0) {
  -			if ((*filter_function)(*p++, filter) < 0) {
  -				return -1;
  -			}
  -			n--;
  -		}
  -	}
  -
  -	return 0;
  -}
  -
  -int mbfl_buffer_converter_flush(mbfl_buffer_converter *convd)
  -{
  -	if (convd == NULL) {
  -		return -1;
  -	}
  -
  -	if (convd->filter1 != NULL) {
  -		mbfl_convert_filter_flush(convd->filter1);
  -	}
  -	if (convd->filter2 != NULL) {
  -		mbfl_convert_filter_flush(convd->filter2);
  -	}
  -
  -	return 0;
  -}
  -
  -mbfl_string * mbfl_buffer_converter_getbuffer(mbfl_buffer_converter *convd, mbfl_string *result)
  -{
  -	if (convd != NULL && result != NULL && convd->device.buffer != NULL) {
  -		result->no_encoding = convd->to->no_encoding;
  -		result->val = convd->device.buffer;
  -		result->len = convd->device.pos;
  -	} else {
  -		result = NULL;
  -	}
  -
  -	return result;
  -}
  -
  -mbfl_string * mbfl_buffer_converter_result(mbfl_buffer_converter *convd, mbfl_string *result)
  -{
  -	if (convd == NULL || result == NULL) {
  -		return NULL;
  -	}
  -	result->no_encoding = convd->to->no_encoding;
  -	return mbfl_memory_device_result(&convd->device, result);
  -}
  -
  -mbfl_string * mbfl_buffer_converter_feed_result(mbfl_buffer_converter *convd, mbfl_string *string, 
  -				  mbfl_string *result)
  -{
  -	if (convd == NULL || string == NULL || result == NULL) {
  -		return NULL;
  -	}
  -	mbfl_buffer_converter_feed(convd, string);
  -	if (convd->filter1 != NULL) {
  -		mbfl_convert_filter_flush(convd->filter1);
  -	}
  -	if (convd->filter2 != NULL) {
  -		mbfl_convert_filter_flush(convd->filter2);
  -	}
  -	result->no_encoding = convd->to->no_encoding;
  -	return mbfl_memory_device_result(&convd->device, result);
  -}
  -
  -
  -/*
  - * encoding detector
  - */
  -mbfl_encoding_detector * mbfl_encoding_detector_new(mbfl_encoding *elist, int eliztsz)
  -{
  -	mbfl_encoding_detector *identd;
  -
  -	int i, num;
  -	mbfl_identify_filter *filter;
  -
  -	if (elist == NULL || eliztsz <= 0) {
  -		return NULL;
  -	}
  -
  -	/* allocate */
  -	identd = (mbfl_encoding_detector*)mbfl_malloc(sizeof(mbfl_encoding_detector));
  -	if (identd == NULL) {
  -		return NULL;
  -	}
  -	identd->filter_list = (mbfl_identify_filter **)mbfl_calloc(eliztsz, sizeof(mbfl_identify_filter *));
  -	if (identd->filter_list == NULL) {
  -		mbfl_free(identd);
  -		return NULL;
  -	}
  -
  -	/* create filters */
  -	i = 0;
  -	num = 0;
  -	while (i < eliztsz) {
  -		filter = mbfl_identify_filter_new(&elist[i]);
  -		if (filter != NULL) {
  -			identd->filter_list[num] = filter;
  -			num++;
  -		}
  -		i++;
  -	}
  -	identd->filter_list_size = num;
  -
  -	return identd;
  -}
  -
   void mbfl_encoding_detector_delete(mbfl_encoding_detector *identd)
   {
   	int i;
  @@ -426,7 +182,6 @@
   
   	return encoding;
   }
  -
   
   /*
    * encoding converter
  
  
  
  1.9       +0 -23     libmbfl/mbfl/mbfilter.h
  
  Index: mbfilter.h
  ===================================================================
  RCS file: /cvsroot/php-i18n/libmbfl/mbfl/mbfilter.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- mbfilter.h	20 Dec 2002 22:15:38 -0000	1.8
  +++ mbfilter.h	24 Dec 2002 17:32:14 -0000	1.9
  @@ -109,29 +109,6 @@
   /*
    * buffering converter
    */
  -typedef struct _mbfl_buffer_converter mbfl_buffer_converter;
  -
  -struct _mbfl_buffer_converter {
  -	mbfl_convert_filter *filter1;
  -	mbfl_convert_filter *filter2;
  -	mbfl_memory_device device;
  -	const mbfl_encoding *from;
  -	const mbfl_encoding *to;
  -};
  -
  -mbfl_buffer_converter * mbfl_buffer_converter_new(mbfl_encoding_id from, mbfl_encoding_id to, int buf_initsz);
  -void mbfl_buffer_converter_delete(mbfl_buffer_converter *convd);
  -void mbfl_buffer_converter_reset(mbfl_buffer_converter *convd);
  -int mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode);
  -int mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar);
  -int mbfl_buffer_converter_strncat(mbfl_buffer_converter *convd, const unsigned char *p, int n);
  -int mbfl_buffer_converter_feed(mbfl_buffer_converter *convd, mbfl_string *string);
  -int mbfl_buffer_converter_flush(mbfl_buffer_converter *convd);
  -mbfl_string * mbfl_buffer_converter_getbuffer(mbfl_buffer_converter *convd, mbfl_string *result);
  -mbfl_string * mbfl_buffer_converter_result(mbfl_buffer_converter *convd, mbfl_string *result);
  -mbfl_string * mbfl_buffer_converter_feed_result(mbfl_buffer_converter *convd, mbfl_string *string, mbfl_string *result);
  -
  -
   /*
    * encoding detector
    */
  
  
  
  1.1                  libmbfl/mbfl/mbfl_buffer_converter.c
  
  Index: mbfl_buffer_converter.c
  ===================================================================
  /*
   * "streamable kanji code filter and converter"
   * Copyright (c) 1998-2002 HappySize, Inc. All rights reserved.
   *
   * LICENSE NOTICES
   *
   * This file is part of "streamable kanji code filter and converter",
   * which is distributed under the terms of GNU Lesser General Public 
   * License (version 2) as published by the Free Software Foundation.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with "streamable kanji code filter and converter";
   * if not, write to the Free Software Foundation, Inc., 59 Temple Place,
   * Suite 330, Boston, MA  02111-1307  USA
   *
   * The author of this file:
   *
   */
  /*
   * The source code included in this files was separated from mbfilter.c
   * by Moriyoshi Koizumi <moriy****@php*****> on 20 Dec 2002. The file
   * mbfilter.c is included in this package .
   *
   */
  
  #ifdef HAVE_CONFIG_H
  #include "config.h"
  #endif
  
  #include <stddef.h>
  
  #include "mbfl_allocators.h"
  #include "mbfl_buffer_converter.h"
  #include "mbfilter_pass.h"
  
  /*
   *  buffering converter
   */
  mbfl_buffer_converter * mbfl_buffer_converter_new(mbfl_encoding_id from, mbfl_encoding_id to, int buf_initsz)
  {
  	mbfl_buffer_converter *convd;
  
  	/* allocate */
  	convd = (mbfl_buffer_converter*)mbfl_malloc(sizeof (mbfl_buffer_converter));
  	if (convd == NULL) {
  		return NULL;
  	}
  
  	/* initialize */
  	convd->from = mbfl_get_encoding_by_id(from);
  	convd->to = mbfl_get_encoding_by_id(to);
  	if (convd->from == NULL) {
  		convd->from = &mbfl_encoding_pass;
  	}
  	if (convd->to == NULL) {
  		convd->to = &mbfl_encoding_pass;
  	}
  
  	/* create convert filter */
  	convd->filter1 = NULL;
  	convd->filter2 = NULL;
  	if (mbfl_convert_filter_get_vtbl(convd->from->no_encoding, convd->to->no_encoding) != NULL) {
  		convd->filter1 = mbfl_convert_filter_new(convd->from->no_encoding, convd->to->no_encoding, mbfl_memory_device_output, 0, &convd->device);
  	} else {
  		convd->filter2 = mbfl_convert_filter_new(mbfl_encoding_id_wchar, convd->to->no_encoding, mbfl_memory_device_output, 0, &convd->device);
  		if (convd->filter2 != NULL) {
  			convd->filter1 = mbfl_convert_filter_new(convd->from->no_encoding, mbfl_encoding_id_wchar, (int (*)(int, void*))convd->filter2->filter_function, NULL, convd->filter2);
  			if (convd->filter1 == NULL) {
  				mbfl_convert_filter_delete(convd->filter2);
  			}
  		}
  	}
  	if (convd->filter1 == NULL) {
  		return NULL;
  	}
  
  	mbfl_memory_device_init(&convd->device, buf_initsz, buf_initsz/4);
  
  	return convd;
  }
  
  void mbfl_buffer_converter_delete(mbfl_buffer_converter *convd)
  {
  	if (convd != NULL) {
  		if (convd->filter1) {
  			mbfl_convert_filter_delete(convd->filter1);
  		}
  		if (convd->filter2) {
  			mbfl_convert_filter_delete(convd->filter2);
  		}
  		mbfl_memory_device_clear(&convd->device);
  		mbfl_free((void*)convd);
  	}
  }
  
  void mbfl_buffer_converter_reset(mbfl_buffer_converter *convd)
  {
  	mbfl_memory_device_reset(&convd->device);
  }
  
  int mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode)
  {
  	if (convd != NULL) {
  		if (convd->filter2 != NULL) {
  			convd->filter2->illegal_mode = mode;
  		} else if (convd->filter1 != NULL) {
  			convd->filter1->illegal_mode = mode;
  		} else {
  			return 0;
  		}
  	}
  
  	return 1;
  }
  
  int mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar)
  {
  	if (convd != NULL) {
  		if (convd->filter2 != NULL) {
  			convd->filter2->illegal_substchar = substchar;
  		} else if (convd->filter1 != NULL) {
  			convd->filter1->illegal_substchar = substchar;
  		} else {
  			return 0;
  		}
  	}
  
  	return 1;
  }
  
  int mbfl_buffer_converter_strncat(mbfl_buffer_converter *convd, const unsigned char *p, int n)
  {
  	mbfl_convert_filter *filter;
  	int (*filter_function)(int c, mbfl_convert_filter *filter);
  
  	if (convd != NULL && p != NULL) {
  		filter = convd->filter1;
  		if (filter != NULL) {
  			filter_function = filter->filter_function;
  			while (n > 0) {
  				if ((*filter_function)(*p++, filter) < 0) {
  					break;
  				}
  				n--;
  			}
  		}
  	}
  
  	return n;
  }
  
  int mbfl_buffer_converter_feed(mbfl_buffer_converter *convd, mbfl_string *string)
  {
  	int n;
  	unsigned char *p;
  	mbfl_convert_filter *filter;
  	int (*filter_function)(int c, mbfl_convert_filter *filter);
  
  	if (convd == NULL || string == NULL) {
  		return -1;
  	}
  	mbfl_memory_device_realloc(&convd->device, convd->device.pos + string->len, string->len/4);
  	/* feed data */
  	n = string->len;
  	p = string->val;
  	filter = convd->filter1;
  	if (filter != NULL) {
  		filter_function = filter->filter_function;
  		while (n > 0) {
  			if ((*filter_function)(*p++, filter) < 0) {
  				return -1;
  			}
  			n--;
  		}
  	}
  
  	return 0;
  }
  
  int mbfl_buffer_converter_flush(mbfl_buffer_converter *convd)
  {
  	if (convd == NULL) {
  		return -1;
  	}
  
  	if (convd->filter1 != NULL) {
  		mbfl_convert_filter_flush(convd->filter1);
  	}
  	if (convd->filter2 != NULL) {
  		mbfl_convert_filter_flush(convd->filter2);
  	}
  
  	return 0;
  }
  
  mbfl_string * mbfl_buffer_converter_getbuffer(mbfl_buffer_converter *convd, mbfl_string *result)
  {
  	if (convd != NULL && result != NULL && convd->device.buffer != NULL) {
  		result->no_encoding = convd->to->no_encoding;
  		result->val = convd->device.buffer;
  		result->len = convd->device.pos;
  	} else {
  		result = NULL;
  	}
  
  	return result;
  }
  
  mbfl_string * mbfl_buffer_converter_result(mbfl_buffer_converter *convd, mbfl_string *result)
  {
  	if (convd == NULL || result == NULL) {
  		return NULL;
  	}
  	result->no_encoding = convd->to->no_encoding;
  	return mbfl_memory_device_result(&convd->device, result);
  }
  
  mbfl_string * mbfl_buffer_converter_feed_result(mbfl_buffer_converter *convd, mbfl_string *string, 
  				  mbfl_string *result)
  {
  	if (convd == NULL || string == NULL || result == NULL) {
  		return NULL;
  	}
  	mbfl_buffer_converter_feed(convd, string);
  	if (convd->filter1 != NULL) {
  		mbfl_convert_filter_flush(convd->filter1);
  	}
  	if (convd->filter2 != NULL) {
  		mbfl_convert_filter_flush(convd->filter2);
  	}
  	result->no_encoding = convd->to->no_encoding;
  	return mbfl_memory_device_result(&convd->device, result);
  }
  
  
  /*
   * encoding detector
   */
  mbfl_encoding_detector * mbfl_encoding_detector_new(mbfl_encoding *elist, int eliztsz)
  {
  	mbfl_encoding_detector *identd;
  
  	int i, num;
  	mbfl_identify_filter *filter;
  
  	if (elist == NULL || eliztsz <= 0) {
  		return NULL;
  	}
  
  	/* allocate */
  	identd = (mbfl_encoding_detector*)mbfl_malloc(sizeof(mbfl_encoding_detector));
  	if (identd == NULL) {
  		return NULL;
  	}
  	identd->filter_list = (mbfl_identify_filter **)mbfl_calloc(eliztsz, sizeof(mbfl_identify_filter *));
  	if (identd->filter_list == NULL) {
  		mbfl_free(identd);
  		return NULL;
  	}
  
  	/* create filters */
  	i = 0;
  	num = 0;
  	while (i < eliztsz) {
  		filter = mbfl_identify_filter_new(&elist[i]);
  		if (filter != NULL) {
  			identd->filter_list[num] = filter;
  			num++;
  		}
  		i++;
  	}
  	identd->filter_list_size = num;
  
  	return identd;
  }
  
  
  
  
  1.1                  libmbfl/mbfl/mbfl_buffer_converter.h
  
  Index: mbfl_buffer_converter.h
  ===================================================================
  /*
   * "streamable kanji code filter and converter"
   * Copyright (c) 1998-2002 HappySize, Inc. All rights reserved.
   *
   * LICENSE NOTICES
   *
   * This file is part of "streamable kanji code filter and converter",
   * which is distributed under the terms of GNU Lesser General Public 
   * License (version 2) as published by the Free Software Foundation.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with "streamable kanji code filter and converter";
   * if not, write to the Free Software Foundation, Inc., 59 Temple Place,
   * Suite 330, Boston, MA  02111-1307  USA
   *
   * The author of this file:
   *
   */
  /*
   * The source code included in this files was separated from mbfilter.h
   * by Moriyoshi Koizumi <moriy****@php*****> on 20 Dec 2002. The file
   * mbfilter.h is included in this package .
   *
   */
  
  #ifndef MBFL_BUFFER_CONVERTER_H
  #define MBFL_BUFFER_CONVERTER_H
  
  #include "mbfl_convert.h"
  #include "mbfl_memory_device.h"
  #include "mbfl_encoding.h"
  #include "mbfl_string.h"
  
  typedef struct _mbfl_buffer_converter mbfl_buffer_converter;
  
  struct _mbfl_buffer_converter {
  	mbfl_convert_filter *filter1;
  	mbfl_convert_filter *filter2;
  	mbfl_memory_device device;
  	const mbfl_encoding *from;
  	const mbfl_encoding *to;
  };
  
  mbfl_buffer_converter * mbfl_buffer_converter_new(mbfl_encoding_id from, mbfl_encoding_id to, int buf_initsz);
  void mbfl_buffer_converter_delete(mbfl_buffer_converter *convd);
  void mbfl_buffer_converter_reset(mbfl_buffer_converter *convd);
  int mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode);
  int mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar);
  int mbfl_buffer_converter_strncat(mbfl_buffer_converter *convd, const unsigned char *p, int n);
  int mbfl_buffer_converter_feed(mbfl_buffer_converter *convd, mbfl_string *string);
  int mbfl_buffer_converter_flush(mbfl_buffer_converter *convd);
  mbfl_string * mbfl_buffer_converter_getbuffer(mbfl_buffer_converter *convd, mbfl_string *result);
  mbfl_string * mbfl_buffer_converter_result(mbfl_buffer_converter *convd, mbfl_string *result);
  mbfl_string * mbfl_buffer_converter_feed_result(mbfl_buffer_converter *convd, mbfl_string *string, mbfl_string *result);
  
  #endif /* MBFL_BUFFER_CONVERTER_H */
  
  
  



php-i18n-commits メーリングリストの案内
Back to archive index