1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-05 19:42:17 +02:00

fixed hyperlink processing in epub files

added liblinebreak sources and a stub for java liblinebreak bindings


git-svn-id: https://only.mawhrin.net/repos/FBReaderJ/trunk@1002 6a642e6f-84f6-412e-ac94-c4a38d5a04b0
This commit is contained in:
Nikolay Pultsin 2009-07-26 19:16:42 +00:00
parent f8435f12d4
commit 76dcfea536
70 changed files with 49274 additions and 32 deletions

View file

@ -0,0 +1,9 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := liblinebreak
LOCAL_SRC_FILES := linebreak-jni.c liblinebreak-1.2/linebreak.c liblinebreak-1.2/linebreakdata.c liblinebreak-1.2/linebreakdef.c
LOCAL_ALLOW_UNDEFINED_SYMBOLS := false
include $(BUILD_SHARED_LIBRARY)

View file

@ -0,0 +1,6 @@
Wu Yongwei. Designed and implemented liblinebreak.
Nikolay Pultsin. Put forward the original requirements on liblinebreak,
performed tests, and made a lot of suggestions on the initial versions.
Thomas Klausner. Autoconfiscated and libtoolized liblinebreak.

View file

@ -0,0 +1,365 @@
2009-05-03 Wu Yongwei <wuyongwei@gmail.com>
* configure.ac (AC_INIT): Increase the version to 1.2.
* Doxyfile (PROJECT_NUMBER): Set to 1.2.
* Makefile.am (liblinebreak_la_LDFLAGS): Set the version-info to
`1:2'.
* NEWS: Add information about the 1.2 release.
2009-05-03 Wu Yongwei <wuyongwei@gmail.com>
Deal with a bug in Doxygen when the documentation comment for one
entity is given twice and includes the @deprecated tag.
* linebreak.h (is_line_breakable): Move some of the documentation
comment of is_breakable here.
(is_breakable): Remove the documentation comment since
the result from recent versions of Doxygen is incorrect otherwise.
* linebreakdef.h (get_next_char_utf8): Ditto.
(get_next_char_utf16): Ditto.
(get_next_char_utf32): Ditto.
2009-04-30 Wu Yongwei <wuyongwei@gmail.com>
Optimize the Doxygen output.
* linebreak.c (lb_prop_index): Use the `@deprecated' tag to
deprecate it.
(get_next_char_utf16): Ditto.
(get_next_char_utf32): Ditto.
(is_breakable): Ditto.
(lb_prop_index): Adjust its definition format slightly.
2009-04-30 Wu Yongwei <wuyongwei@gmail.com>
* Doxyfile (USE_WINDOWS_ENCODING): Remove obsolete tag.
(DETAILS_AT_TOP): Ditto.
(MAX_DOT_GRAPH_WIDTH): Ditto.
(MAX_DOT_GRAPH_HEIGHT): Ditto.
(REFERENCED_BY_RELATION): Set to `NO'.
(REFERENCES_RELATION): Ditto.
(EXCLUDE): Add `filter_dup.c'.
2009-04-29 Wu Yongwei <wuyongwei@gmail.com>
Backport patches from the main trunk.
* linebreak.c (get_next_char_utf8): Fix the issue that the index can
point to the middle of a UTF-8 sequence if End of String (EOS) is
encountered prematurely (thanks to Nikolay Pultsin and Rick Xu).
(get_next_char_utf16): Fix the issue that the index can point to the
middle of a UTF-16 surrogate pair if EOS is encountered prematurely.
* linebreakdef.c (lb_prop_English): Remove the specialization of
right single quotation mark as closing punctuation mark, because it
can be used as apostrophe.
(lb_prop_Spanish): Ditto.
(lb_prop_French): Ditto.
2009-03-05 Wu Yongwei <wuyongwei@gmail.com>
* configure.ac (AC_INIT): Increase the version to 1.1.1.
2009-03-05 Wu Yongwei <wuyongwei@gmail.com>
* linebreak.h: Correct the wrong date in the documentation comment.
* linebreakdef.h: Ditto.
2009-02-06 Wu Yongwei <wuyongwei@gmail.com>
* configure.ac (AC_INIT): Increase the version to 1.1.
* Doxyfile (PROJECT_NUMBER): Set to 1.1.
* Makefile.am (liblinebreak_la_LDFLAGS): Set the version-info to
`1:1'.
* NEWS: Add information about the 1.1 release.
2009-01-29 Wu Yongwei <wuyongwei@gmail.com>
* linebreak.h: Copy function documentation comments from the
definition to the header file.
* linebreakdef.h: Ditto.
2009-01-29 Wu Yongwei <wuyongwei@gmail.com>
Prepare to reduce namespace pollution.
* linebreak.c (get_lb_prop_lang): Mark as static.
(get_next_char_utf8): Add a comment that it will be renamed.
(get_next_char_utf16): Ditto.
(get_next_char_utf32): Ditto.
(is_breakable): Ditto.
* linebreak.h (get_next_char_utf8): Remove the prototype
declaration.
(get_next_char_utf16): Ditto.
(get_next_char_utf32): Ditto.
(is_line_breakable): Add the replacement macro for is_breakable to
ease the API change transition.
* linebreakdef.h (get_next_char_utf8): Add the prototype declaration
and comment about renaming.
(get_next_char_utf16): Ditto.
(get_next_char_utf32): Ditto.
2009-01-02 Wu Yongwei <wuyongwei@gmail.com>
* Makefile.am (EXTRA_DIST): Add the missing `LICENCE' file.
2008-12-31 Wu Yongwei <wuyongwei@gmail.com>
* linebreak.c: Update the version number in comment to 1.0.
* linebreak.h: Ditto.
* linebreakdef.c: Ditto.
* linebreakdef.h: Ditto.
2008-12-31 Wu Yongwei <wuyongwei@gmail.com>
* NEWS: Update for the 1.0 release.
2008-12-31 Wu Yongwei <wuyongwei@gmail.com>
* README: Correct two typos.
2008-12-31 Wu Yongwei <wuyongwei@gmail.com>
* README: Add the online URL reference.
2008-12-30 Wu Yongwei <wuyongwei@gmail.com>
* README: Update the reference to UAX #14-22, for Unicode 5.1.0.
2008-12-13 Wu Yongwei <wuyongwei@gmail.com>
Update files according to UAX #14-22, for Unicode 5.1.0.
* linebreak.c (baTable): Update according to Table 2 of UAX #14-22.
* linebreakdef.c (lb_prop_Spanish): Remove the unnecessary
customization for inverted marks in Spanish.
* linebreakdata.c: Regenerate from LineBreak-5.1.0.txt.
* linebreak.h: Update comment only.
* linebreakdef.h: Ditto.
2008-12-12 Wu Yongwei <wuyongwei@gmail.com>
* README: Update for the new build methods and better readability.
2008-12-12 Wu Yongwei <wuyongwei@gmail.com>
* Makefile.msvc: Correct the inconsistent naming in the output
message.
2008-12-12 Wu Yongwei <wuyongwei@gmail.com>
* configure.ac (AM_INIT_AUTOMAKE): Mark `foreign'.
* bootstrap: New file.
* purge: New file.
* Makefile.gcc (purge): Remove this target.
2008-12-10 Wu Yongwei <wuyongwei@gmail.com>
* NEWS: New file.
2008-12-10 Wu Yongwei <wuyongwei@gmail.com>
* AUTHORS: New file.
2008-12-10 Wu Yongwei <wuyongwei@gmail.com>
* Makefile.gcc (purge): New phony target to purge files generated by
autoconfiscation.
2008-12-10 Thomas Klausner <tk@giga.or.at>
* configure.ac: New file.
* Makefile.am: New file.
2008-12-10 Wu Yongwei <wuyongwei@gmail.com>
* Doxyfile (OUTPUT_DIRECTORY): Set to `doc'.
(ALPHABETICAL_INDEX): Set to `YES'.
2008-12-09 Wu Yongwei <wuyongwei@gmail.com>
* Makefile.msvc: New file.
2008-12-09 Wu Yongwei <wuyongwei@gmail.com>
* Makefile: Remove (to become Makefile.gcc).
* Makefile.gcc: New file (was Makefile).
2008-12-07 Wu Yongwei <wuyongwei@gmail.com>
* linebreak.c: Adjust the comment that refers to Unicode Annex 14.
* linebreak.h: Ditto.
* linebreakdef.c: Ditto.
* linebreakdef.h: Ditto.
2008-12-07 Wu Yongwei <wuyongwei@gmail.com>
Use only POSIX basic regexp to ensure maximum portability (issues
have been found on Mac OS X, where GNU extensions do not work).
* LineBreak1.sed: Replace `[:xdigit:]' with `0-9A-F', and `\+' with
`\{1,\}'.
* LineBreak2.sed: Ditto.
2008-12-07 Wu Yongwei <wuyongwei@gmail.com>
* Makefile: Replace `*.exe' with `filter_dup$(EXEEXT)', since the
extension `.exe' is specific to Windows.
2008-04-20 Wu Yongwei <wuyongwei@gmail.com>
Add README and LICENCE files, as well as a Doxyfile to generate
documents.
* README: New file.
* LICENCE: New file.
* Doxyfile: New file.
* Makefile (doc): Add new phony target.
2008-04-04 Wu Yongwei <wuyongwei@gmail.com>
Remove the English override for plus sign: it is better treated in
the text breaking program (see ../breaktext/ for an example).
* linebreakdef.c (lb_prop_English): Remove the line for plus sign.
2008-03-29 Wu Yongwei <wuyongwei@gmail.com>
* Makefile: Correct the dependency-making rules when OLDGCC=Y.
2008-03-23 Wu Yongwei <wuyongwei@gmail.com>
* Makefile (clean): Do not remove *.exe and tags here.
(distclean): Remove *.exe and tags.
2008-03-23 Wu Yongwei <wuyongwei@gmail.com>
Remove the English override for solidus: it is better treated in the
text breaking program (see ../breaktext/ for an example).
* linebreakdef.c (lb_prop_English): Remove the line for solidus.
2008-03-16 Wu Yongwei <wuyongwei@gmail.com>
Rename init_linebreak_prop_index to init_linebreak for future
safety; make visible certain functions that are potentially useful.
* linebreak.c (init_linebreak_prop_index): Rename to init_linebreak.
(get_next_char_t): Move to linebreakdef.h.
(get_next_char_utf8): Make non-static.
(get_next_char_utf16): Ditto.
(get_next_char_utf32): Ditto.
(set_linebreaks): Ditto.
* linebreak.h (init_linebreak_prop_index): Rename to init_linebreak.
(get_next_char_utf8): Add the function prototype.
(get_next_char_utf16): Ditto.
(get_next_char_utf32): Ditto.
* linebreakdef.h (get_next_char_t): Add the typedef.
(set_linebreaks): Add the function prototype.
2008-03-16 Wu Yongwei <wuyongwei@gmail.com>
* Makefile (OLDGCC): Add support for GCC 2.95.3 (when OLDGCC=Y).
2008-03-15 Wu Yongwei <wuyongwei@gmail.com>
* linebreak.c (set_linebreaks): Fix a bug that `==' was wrongly used
for `='.
2008-03-05 Wu Yongwei <wuyongwei@gmail.com>
Improve the performance by reducing the look-ups of the
language-specific line breaking properties array from the language
name (thanks to Nikolay Pultsin).
* linebreak.c (get_lb_prop_lang): New function.
(get_char_lb_class_lang): Change the second parameter from the
language name to the line breaking properties array.
(set_linebreaks): Look up the language-specific line breaking
properties array from the language name only once in one function
call.
2008-03-03 Wu Yongwei <wuyongwei@gmail.com>
Make minor adjustments in code and comments.
* linebreak.c: Adjust the doc comments.
(init_linebreak_prop_index): Modify a conditional to make it more
robust and consistent.
* linebreakdef.c (lb_prop_lang_map): Replace the pointer
lb_prop_default with NULL, since the value is never used.
2008-03-03 Wu Yongwei <wuyongwei@gmail.com>
Accelerate get_char_lb_class for invalid Unicode code points.
* linebreak.c (get_char_lb_class): Adjust the conditionals so that
getting the line breaking class for an invalid code point is much
faster, which requires the array of line breaking properties be
sorted.
* linebreakdef.h: Adjust a comment that the array of line break
properties must be sorted.
2008-03-02 Wu Yongwei <wuyongwei@gmail.com>
Change the values of enum BreakAction to more complete forms.
* linebreak.c (INDRCT_BRK): Rename to INDIRECT_BRK.
(CM_INDRCT_BRK): Rename to CM_INDIRECT_BRK.
(CM_PROHIBTD_BRK): Rename to CM_PROHIBITED_BRK.
(PROHIBTD_BRK): Rename to PROHIBITED_BRK.
2008-03-02 Wu Yongwei <wuyongwei@gmail.com>
Implement a two-stage search in get_char_lb_class_default to
accelerate the overall performance, especially for non-Latin
languages.
* linebreak.c (LINEBREAK_INDEX_SIZE): New constant macro.
(struct LineBreakPropertiesIndex): New struct.
(lb_prop_index): New static variable.
(init_linebreak_prop_index): New function.
(get_char_lb_class_default): New function.
(get_char_lb_class_lang): Use get_char_lb_class_default.
* linebreak.h: Detect C++ and add extern "C" guard if necessary.
(init_linebreak_prop_index): Add the prototype declaration.
* linebreakdef.h: Adjust a comment.
2008-03-02 Wu Yongwei <wuyongwei@gmail.com>
Split/refactor the code; add (doc) comments.
* Makefile (CFILES): Add linebreakdata.c and linebreakdef.c.
* linebreak.c: Add and adjust comments.
(linebreakdef.h): Add include file.
(linebreakdata.c): Remove include file.
(EOS): Remove (now in linebreakdef.h).
(enum LineBreakClass): Ditto.
(struct LineBreakProperties): Ditto.
(lbpEnglish): Remove (now in linebreakdef.c as lb_prop_English).
(lbpGerman): Remove (now in linebreakdef.c as lb_prop_German).
(lbpSpanish): Remove (now in linebreakdef.c as lb_prop_Spanish).
(lbpFrench): Remove (now in linebreakdef.c as lb_prop_French).
(lbpRussian): Remove (now in linebreakdef.c as lb_prop_Russian).
(lbpChinese): Remove (now in linebreakdef.c as lb_prop_Chinese).
(struct LineBreakPropertiesLang): Remove (now in linebreakdef.h).
(lbpLangs): Remove (now in linebreakdef.c as lb_prop_lang_map).
(get_next_char_utf16): Make sure memory access not go beyond len.
* linebreak.h: Add copyright information and adjust comments.
(stddef.h): Add include file.
* linebreakdata.c (linebreak.h): Add include file.
(linebreakdef.h): Add include file.
(lbpDefault): Make global and rename to lb_prop_default.
* linebreakdata2.tmpl: Add two include files, a comment line, and
remove `static'.
* linebreakdef.c: New file.
* linebreakdef.h: New file.
2008-02-26 Wu Yongwei <wuyongwei@gmail.com>
* linebreak.c (lbpSpanish): New array for Spanish-specific data.
(lbpLangs): Update the index array for Spanish.
(resolve_lb_class): Resolve AmbIguous class to IDeographic in
Chinese, Japanese, and Korean.
2008-02-26 Wu Yongwei <wuyongwei@gmail.com>
* Makefile (LineBreak.txt): Add new rule to retrieve it from the Web
if it is not already there.
2008-02-23 Wu Yongwei <wuyongwei@gmail.com>
Add files for linebreak.
* LineBreak1.sed: New file.
* LineBreak2.sed: New file.
* Makefile: New file.
* filter_dup.c: New file.
* linebreak.c: New file.
* linebreak.h: New file.
* linebreakdata.c: New file.
* linebreakdata1.tmpl: New file.
* linebreakdata2.tmpl: New file.
* linebreakdata3.tmpl: New file.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,18 @@
Copyright (C) 2008 Wu Yongwei <wuyongwei at gmail dot com>
This software is provided 'as-is', without any express or implied
warranty. In no event will the author be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgement in the product documentation would
be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not
be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.

View file

@ -0,0 +1 @@
s/\(^[0-9A-F.]\{1,\};[A-Z][A-Z0-9]\) #.*/\1/p

View file

@ -0,0 +1,2 @@
s/^\([0-9A-F]\{1,\}\);/\1..\1;/
s/^\([0-9A-F]\{1,\}\)\.\.\([0-9A-F]\{1,\}\);\([A-Z][A-Z0-9]\)/ { 0x\1, 0x\2, LBP_\3 },/

View file

@ -0,0 +1,37 @@
#noinst_PROGRAMS = filter_dup
include_HEADERS = linebreak.h linebreakdef.h
lib_LTLIBRARIES = liblinebreak.la
liblinebreak_la_LDFLAGS = -no-undefined -version-info 1:2
liblinebreak_la_SOURCES = \
linebreak.c \
linebreakdata.c \
linebreakdef.c
EXTRA_DIST = \
LineBreak1.sed \
LineBreak2.sed \
linebreakdata1.tmpl \
linebreakdata2.tmpl \
linebreakdata3.tmpl \
LICENCE \
Doxyfile \
Makefile.gcc \
Makefile.msvc \
doc
distclean-local:
rm -f LineBreak.txt filter_dup${EXEEXT}
doc:
cd ${top_srcdir} && doxygen
LineBreak.txt:
wget http://unicode.org/Public/UNIDATA/LineBreak.txt
linebreakdata: ${builddir}/filter_dup LineBreak.txt
sed -n -f ${top_srcdir}/LineBreak1.sed LineBreak.txt > tmp.txt
sed -f ${top_srcdir}/LineBreak2.sed tmp.txt | ${builddir}/filter_dup > tmp.c
head -2 LineBreak.txt > tmp.txt
cat ${top_srcdir}/linebreakdata1.tmpl tmp.txt ${top_srcdir}/linebreakdata2.tmpl tmp.c ${top_srcdir}/linebreakdata3.tmpl > ${top_srcdir}/linebreakdata.c
rm tmp.txt tmp.c

View file

@ -0,0 +1,162 @@
# Windows/Cygwin support
ifdef windir
WINDOWS := 1
CYGWIN := 0
else
ifdef WINDIR
WINDOWS := 1
CYGWIN := 1
else
WINDOWS := 0
endif
endif
ifeq ($(WINDOWS),1)
EXEEXT := .exe
DLLEXT := .dll
DEVNUL := nul
ifeq ($(CYGWIN),1)
PATHSEP := /
else
PATHSEP := $(strip \ )
endif
else
EXEEXT :=
DLLEXT := .so
DEVNUL := /dev/null
PATHSEP := /
endif
CFG ?= Debug
ifeq ($(CFG),Debug)
all: debug
else
all: release
endif
OLDGCC ?= N
DEBUG := DebugDir
RELEASE := ReleaseDir
$(DEBUG)/%.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) $(DBGFLAGS) $(TARGET_ARCH) -c -o $@ $<
$(RELEASE)/%.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) $(RELFLAGS) $(TARGET_ARCH) -c -o $@ $<
$(DEBUG)/%.o: %.cpp
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(DBGFLAGS) $(TARGET_ARCH) -c -o $@ $<
$(RELEASE)/%.o: %.cpp
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(RELFLAGS) $(TARGET_ARCH) -c -o $@ $<
ifeq ($(OLDGCC),N)
$(DEBUG)/%.dep: %.c
$(CC) -MM -MT $(patsubst %.dep,%.o,$@) $(CFLAGS) $(CPPFLAGS) $(DBGFLAGS) $(TARGET_ARCH) -o $@ $<
$(RELEASE)/%.dep: %.c
$(CC) -MM -MT $(patsubst %.dep,%.o,$@) $(CFLAGS) $(CPPFLAGS) $(RELFLAGS) $(TARGET_ARCH) -o $@ $<
$(DEBUG)/%.dep: %.cpp
$(CXX) -MM -MT $(patsubst %.dep,%.o,$@) $(CXXFLAGS) $(CPPFLAGS) $(DBGFLAGS) $(TARGET_ARCH) -o $@ $<
$(RELEASE)/%.dep: %.cpp
$(CXX) -MM -MT $(patsubst %.dep,%.o,$@) $(CXXFLAGS) $(CPPFLAGS) $(RELFLAGS) $(TARGET_ARCH) -o $@ $<
else
$(DEBUG)/%.dep: %.c
$(CC) -MM $(CFLAGS) $(CPPFLAGS) $(DBGFLAGS) $(TARGET_ARCH) $< | sed "s!^!$(DEBUG)/!" > $@
$(RELEASE)/%.dep: %.c
$(CC) -MM $(CFLAGS) $(CPPFLAGS) $(RELFLAGS) $(TARGET_ARCH) $< | sed "s!^!$(RELEASE)/!" > $@
$(DEBUG)/%.dep: %.cpp
$(CXX) -MM $(CXXFLAGS) $(CPPFLAGS) $(DBGFLAGS) $(TARGET_ARCH) $< | sed "s!^!$(DEBUG)/!" > $@
$(RELEASE)/%.dep: %.cpp
$(CXX) -MM $(CXXFLAGS) $(CPPFLAGS) $(RELFLAGS) $(TARGET_ARCH) $< | sed "s!^!$(RELEASE)/!" > $@
endif
CC = gcc
CXX = g++
AR = ar
LD = $(CXX) $(CXXFLAGS) $(TARGET_ARCH)
INCLUDE = -I. $(patsubst %,-I%,$(VPATH))
CFLAGS = -W -Wall $(INCLUDE)
CXXFLAGS = $(CFLAGS)
DBGFLAGS = -D_DEBUG -g
RELFLAGS = -DNDEBUG -O2
CPPFLAGS =
ifeq ($(OLDGCC),N)
CFLAGS += -fmessage-length=0
endif
HFILES = $(wildcard $(patsubst -I%,%/*.h,$(INCLUDE)))
OBJFILES = $(CFILES:.c=.o) $(CXXFILES:.cpp=.o)
DEBUG_OBJS = $(patsubst %.o,$(DEBUG)/%.o,$(OBJFILES))
RELEASE_OBJS = $(patsubst %.o,$(RELEASE)/%.o,$(OBJFILES))
DEBUG_DEPS = $(patsubst %.o,%.dep,$(DEBUG_OBJS))
RELEASE_DEPS = $(patsubst %.o,%.dep,$(RELEASE_OBJS))
CFILES := linebreak.c linebreakdata.c linebreakdef.c
CXXFILES :=
LIBS :=
TARGET = liblinebreak.a
DEBUG_TARGET = $(patsubst %,$(DEBUG)/%,$(TARGET))
RELEASE_TARGET = $(patsubst %,$(RELEASE)/%,$(TARGET))
debug: $(DEBUG) $(DEBUG_TARGET)
release: $(RELEASE) $(RELEASE_TARGET)
$(DEBUG):
mkdir $(DEBUG)
$(RELEASE):
mkdir $(RELEASE)
$(DEBUG_TARGET): $(DEBUG_DEPS) $(DEBUG_OBJS)
$(AR) -r $(DEBUG_TARGET) $(DEBUG_OBJS)
$(RELEASE_TARGET): $(RELEASE_DEPS) $(RELEASE_OBJS)
$(AR) -r $(RELEASE_TARGET) $(RELEASE_OBJS)
doc:
doxygen
linebreakdata: filter_dup$(EXEEXT) LineBreak.txt
sed -n -f LineBreak1.sed LineBreak.txt > tmp.txt
sed -f LineBreak2.sed tmp.txt | .$(PATHSEP)filter_dup > tmp.c
head -2 LineBreak.txt > tmp.txt
cat linebreakdata1.tmpl tmp.txt linebreakdata2.tmpl tmp.c linebreakdata3.tmpl > linebreakdata.c
$(RM) tmp.txt tmp.c
filter_dup$(EXEEXT): filter_dup.c
gcc -O2 -o filter_dup$(EXEEXT) $<
LineBreak.txt:
wget http://unicode.org/Public/UNIDATA/LineBreak.txt
.PHONY: all debug release clean distclean doc linebreakdata
clean:
$(RM) $(DEBUG)/*.o $(DEBUG)/*.dep $(DEBUG_TARGET)
$(RM) $(RELEASE)/*.o $(RELEASE)/*.dep $(RELEASE_TARGET)
distclean: clean
$(RM) $(DEBUG)/* $(RELEASE)/* filter_dup$(EXEEXT) tags LineBreak.txt
-rmdir $(DEBUG) 2> $(DEVNUL)
-rmdir $(RELEASE) 2> $(DEVNUL)
-include $(wildcard $(DEBUG)/*.dep) $(wildcard $(RELEASE)/*.dep)

View file

@ -0,0 +1,669 @@
# Makefile.in generated by automake 1.10 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = .
DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \
$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(srcdir)/config.h.in $(top_srcdir)/configure AUTHORS \
ChangeLog NEWS config.guess config.sub depcomp install-sh \
ltmain.sh missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
libLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(lib_LTLIBRARIES)
liblinebreak_la_LIBADD =
am_liblinebreak_la_OBJECTS = linebreak.lo linebreakdata.lo \
linebreakdef.lo
liblinebreak_la_OBJECTS = $(am_liblinebreak_la_OBJECTS)
liblinebreak_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(liblinebreak_la_LDFLAGS) $(LDFLAGS) -o $@
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
SOURCES = $(liblinebreak_la_SOURCES)
DIST_SOURCES = $(liblinebreak_la_SOURCES)
includeHEADERS_INSTALL = $(INSTALL_HEADER)
HEADERS = $(include_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
#noinst_PROGRAMS = filter_dup
include_HEADERS = linebreak.h linebreakdef.h
lib_LTLIBRARIES = liblinebreak.la
liblinebreak_la_LDFLAGS = -no-undefined -version-info 1:2
liblinebreak_la_SOURCES = \
linebreak.c \
linebreakdata.c \
linebreakdef.c
EXTRA_DIST = \
LineBreak1.sed \
LineBreak2.sed \
linebreakdata1.tmpl \
linebreakdata2.tmpl \
linebreakdata3.tmpl \
LICENCE \
Doxyfile \
Makefile.gcc \
Makefile.msvc \
doc
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
cd $(srcdir) && $(AUTOMAKE) --foreign \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
f=$(am__strip_dir) \
echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
$(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
else :; fi; \
done
uninstall-libLTLIBRARIES:
@$(NORMAL_UNINSTALL)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
p=$(am__strip_dir) \
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
done
clean-libLTLIBRARIES:
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
test "$$dir" != "$$p" || dir=.; \
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
liblinebreak.la: $(liblinebreak_la_OBJECTS) $(liblinebreak_la_DEPENDENCIES)
$(liblinebreak_la_LINK) -rpath $(libdir) $(liblinebreak_la_OBJECTS) $(liblinebreak_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linebreak.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linebreakdata.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linebreakdef.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
install-includeHEADERS: $(include_HEADERS)
@$(NORMAL_INSTALL)
test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
@list='$(include_HEADERS)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
$(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
done
uninstall-includeHEADERS:
@$(NORMAL_UNINSTALL)
@list='$(include_HEADERS)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
rm -f "$(DESTDIR)$(includedir)/$$f"; \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
test -d $(distdir) || mkdir $(distdir)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-am
all-am: Makefile $(LTLIBRARIES) $(HEADERS) config.h
installdirs:
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
mostlyclean-am
distclean: distclean-am
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-hdr distclean-libtool distclean-local distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-includeHEADERS
install-dvi: install-dvi-am
install-exec-am: install-libLTLIBRARIES
install-html: install-html-am
install-info: install-info-am
install-man:
install-pdf: install-pdf-am
install-ps: install-ps-am
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \
clean-generic clean-libLTLIBRARIES clean-libtool ctags dist \
dist-all dist-bzip2 dist-gzip dist-shar dist-tarZ dist-zip \
distcheck distclean distclean-compile distclean-generic \
distclean-hdr distclean-libtool distclean-local distclean-tags \
distcleancheck distdir distuninstallcheck dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am \
install-includeHEADERS install-info install-info-am \
install-libLTLIBRARIES install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-includeHEADERS \
uninstall-libLTLIBRARIES
distclean-local:
rm -f LineBreak.txt filter_dup${EXEEXT}
doc:
cd ${top_srcdir} && doxygen
LineBreak.txt:
wget http://unicode.org/Public/UNIDATA/LineBreak.txt
linebreakdata: ${builddir}/filter_dup LineBreak.txt
sed -n -f ${top_srcdir}/LineBreak1.sed LineBreak.txt > tmp.txt
sed -f ${top_srcdir}/LineBreak2.sed tmp.txt | ${builddir}/filter_dup > tmp.c
head -2 LineBreak.txt > tmp.txt
cat ${top_srcdir}/linebreakdata1.tmpl tmp.txt ${top_srcdir}/linebreakdata2.tmpl tmp.c ${top_srcdir}/linebreakdata3.tmpl > ${top_srcdir}/linebreakdata.c
rm tmp.txt tmp.c
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View file

@ -0,0 +1,173 @@
# Makefile for Microsoft Visual C++ and NMAKE
!IF "$(CFG)" == ""
CFG=linebreak - Win32 Debug
!MESSAGE No configuration specified. Defaulting to linebreak - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "linebreak - Win32 Release" && "$(CFG)" != "linebreak - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f Makefile.msvc CFG="linebreak - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "linebreak - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "linebreak - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "linebreak - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
ALL : "$(OUTDIR)\linebreak.lib"
CLEAN :
-@erase "$(INTDIR)\linebreak.obj"
-@erase "$(INTDIR)\linebreakdata.obj"
-@erase "$(INTDIR)\linebreakdef.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(OUTDIR)\linebreak.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\linebreak.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\linebreak.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\linebreak.lib"
LIB32_OBJS= \
"$(INTDIR)\linebreak.obj" \
"$(INTDIR)\linebreakdata.obj" \
"$(INTDIR)\linebreakdef.obj"
"$(OUTDIR)\linebreak.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ELSEIF "$(CFG)" == "linebreak - Win32 Debug"
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
ALL : "$(OUTDIR)\linebreak.lib"
CLEAN :
-@erase "$(INTDIR)\linebreak.obj"
-@erase "$(INTDIR)\linebreakdata.obj"
-@erase "$(INTDIR)\linebreakdef.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(OUTDIR)\linebreak.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\linebreak.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\linebreak.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\linebreak.lib"
LIB32_OBJS= \
"$(INTDIR)\linebreak.obj" \
"$(INTDIR)\linebreakdata.obj" \
"$(INTDIR)\linebreakdef.obj"
"$(OUTDIR)\linebreak.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ENDIF
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.\linebreak.c : \
".\linebreak.h"\
".\linebreakdef.h"\
.\linebreakdata.c : \
".\linebreak.h"\
".\linebreakdef.h"\
.\linebreakdef.c : \
".\linebreak.h"\
".\linebreakdef.h"\
!IF "$(CFG)" == "linebreak - Win32 Release" || "$(CFG)" == "linebreak - Win32 Debug"
SOURCE=.\linebreak.c
"$(INTDIR)\linebreak.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\linebreakdata.c
"$(INTDIR)\linebreakdata.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\linebreakdef.c
"$(INTDIR)\linebreakdef.obj" : $(SOURCE) "$(INTDIR)"
!ENDIF

View file

@ -0,0 +1,30 @@
New in 1.2
- Fix the bug that an assertion in code can fail if an invalid UTF-8 or
UTF-16 sequence is encountered near the end of input
- Remove the specialization of right single quotation mark as closing
punctuation mark in English, French, and Spanish, because it can be
used as apostrophe
- Make Doxygen documentation better
New in 1.1
- Make get_lb_prop_lang static and not an exported symbol
- Define is_line_breakable to alias to is_breakable
- Declare get_next_char_utf* will be changed to lb_get_next_char_utf*
- Move the declarations of get_next_char_utf* from linebreak.h to
linebreakdef.h
- Add the function documentation comments to the header files
New in 1.0
- Update the line breaking data according to UAX #14-22 and
LineBreak-5.1.0.txt
- Add autoconfiscation support (./configure, make, make install)
- Add Makefile for MSVC
First public release (0.9.6, or 20080421)
- Implement line breaking algorithm according to UAX #14-19
- Line breaking data is generated from LineBreak-5.0.0.txt
- Makefile only supports GCC

View file

@ -0,0 +1,83 @@
L I B L I N E B R E A K
=======================
Overview
--------
This is the README file for liblinebreak, an implementation of the line
breaking algorithm as described in Unicode 5.1.0 Standard Annex 14,
Revision 22, available at
<URL:http://www.unicode.org/reports/tr14/tr14-22.html>
Check this URL for up-to-date information:
<URL:http://vimgadgets.sourceforge.net/liblinebreak/>
Licence
-------
This library is released under an open-source licence, the zlib/libpng
licence. Please check the file LICENCE for details.
Apart from using the algorithm, part of the code is derived from the
data provided under
<URL:http://www.unicode.org/Public/>
And the Unicode Terms of Use may apply:
<URL:http://www.unicode.org/copyright.html>
Installation
------------
There are three ways to build the library:
1) On *NIX systems supported by the autoconfiscation tools, do the
normal
./configure
make
sudo make install
to build and install both the dynamic and static libraries. In
addition, one may
- type `make doc' to generate the doxygen documentation; or
- type `make linebreakdata' to regenerate linebreakdata.c from
LineBreak.txt.
2) On systems where GCC and Binutils are supported, one can type
cp -p Makefile.gcc Makefile
make
to build the static library. In addition, one may
- type `make debug' or `make release' to explicitly generate the
debug or release build;
- type `make doc' to generate the doxygen documentation; or
- type `make linebreakdata' to regenerate linebreakdata.c from
LineBreak.txt.
3) On Windows, apart from using method 1 (Cygwin/MSYS) and method 2
(MinGW), MSVC can also be used. Type
nmake -f Makefile.msvc
to build the static library. By default the debug release is built.
To build the release version
nmake -f Makefile.msvc CFG="linebreak - Win32 Release"
Documentation
-------------
Check the generated document doc/html/linebreak_8h.html for the public
interfaces exposed to applications.
$Id: README,v 1.5 2008/12/31 04:24:12 adah Exp $
vim:autoindent:expandtab:formatoptions=tcqlmn:textwidth=72:

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,55 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Version number of package */
#undef VERSION

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,11 @@
AC_PREREQ(2.57)
AC_INIT([liblinebreak],[1.2],[wuyongwei@gmail.com])
AC_CONFIG_SRCDIR([linebreak.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([foreign])
AC_PROG_CC
AC_EXEEXT
AM_PROG_LIBTOOL
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

View file

@ -0,0 +1,584 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2006-10-15.18
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
# Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program 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 General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by `PROGRAMS ARGS'.
object Object file output by `PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputing dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
*) set fnord "$@" "$arg" ;;
esac
shift # fnord
shift # $arg
done
"$@"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say).
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
tr ' ' '
' < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
tr '
' ' ' >> $depfile
echo >> $depfile
# The second pass generates a dummy entry for each header file.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> $depfile
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts `$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
tmpdepfile="$stripped.u"
if test "$libtool" = yes; then
"$@" -Wc,-M
else
"$@" -M
fi
stat=$?
if test -f "$tmpdepfile"; then :
else
stripped=`echo "$stripped" | sed 's,^.*/,,'`
tmpdepfile="$stripped.u"
fi
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
if test -f "$tmpdepfile"; then
outname="$stripped.o"
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
icc)
# Intel's C compiler understands `-MD -MF file'. However on
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
# which is wrong. We want:
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using \ :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp2)
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
"$@" +Maked
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
# Add `dependent.h:' lines.
sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
# static library. This mechanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
# compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
tmpdepfile2=$dir$base.o.d # libtool 1.5
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.o.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
tmpdepfile4=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for `:'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
"$@" $dashmflag |
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tr ' ' '
' < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no
for arg in "$@"; do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix="`echo $object | sed 's/^.*\././'`"
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
sed '1,2d' "$tmpdepfile" | tr ' ' '
' | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
"$@" -E |
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
"$@" || exit $?
IFS=" "
for arg
do
case "$arg" in
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
echo " " >> "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View file

@ -0,0 +1,36 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: Data Structures</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
<li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>Data Structures</h1>Here are the data structures with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="structLineBreakProperties.html">LineBreakProperties</a></td><td class="indexvalue">Struct for entries of line break properties </td></tr>
<tr><td class="indexkey"><a class="el" href="structLineBreakPropertiesIndex.html">LineBreakPropertiesIndex</a></td><td class="indexvalue">Struct for the second-level index to the line breaking properties </td></tr>
<tr><td class="indexkey"><a class="el" href="structLineBreakPropertiesLang.html">LineBreakPropertiesLang</a></td><td class="indexvalue">Struct for association of language-specific line breaking properties with language names </td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,35 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: Alphabetical List</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
<li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>Data Structure Index</h1><p><div class="qindex"><a class="qindex" href="#letter_L">L</a></div><p>
<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;L&nbsp;&nbsp;</div></td></tr></table>
</td><td><a class="el" href="structLineBreakProperties.html">LineBreakProperties</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structLineBreakPropertiesIndex.html">LineBreakPropertiesIndex</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structLineBreakPropertiesLang.html">LineBreakPropertiesLang</a>&nbsp;&nbsp;&nbsp;</td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_L">L</a></div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,43 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: Deprecated List</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1><a class="anchor" name="deprecated">Deprecated List </a></h1><a class="anchor" name="_deprecated000002"></a> <dl>
<dt>Global <a class="el" href="linebreak_8c.html#1358bfc18e5c58f3bf86d41da9915964">get_next_char_utf16</a> </dt>
<dd>This function will be prefixed with <code>lb_</code> in the future. </dd>
</dl>
<p>
<a class="anchor" name="_deprecated000003"></a> <dl>
<dt>Global <a class="el" href="linebreak_8c.html#b436dc6eadd1cfe258159ac671798653">get_next_char_utf32</a> </dt>
<dd>This function will be prefixed with <code>lb_</code> in the future. </dd>
</dl>
<p>
<a class="anchor" name="_deprecated000001"></a> <dl>
<dt>Global <a class="el" href="linebreak_8c.html#d6e67ab4880e304d6ac730d545027a7f">get_next_char_utf8</a> </dt>
<dd>This function will be prefixed with <code>lb_</code> in the future. </dd>
</dl>
<p>
<a class="anchor" name="_deprecated000004"></a> <dl>
<dt>Global <a class="el" href="linebreak_8c.html#22abef1024a6392cf2bd2281fc1bd151">is_breakable</a> </dt>
<dd>This function will be renamed to <a class="el" href="linebreak_8h.html#9d54c1b18d4fc526a66ef64d9de9c63a" title="Replacement form for the deprecated function is_breakable.">is_line_breakable</a> in the future. The name is already defined as a macro&mdash;please use it. </dd>
</dl>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,441 @@
body, table, div, p, dl {
font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
font-size: 12px;
}
/* @group Heading Levels */
h1 {
text-align: center;
font-size: 150%;
}
h2 {
font-size: 120%;
}
h3 {
font-size: 100%;
}
/* @end */
caption {
font-weight: bold;
}
div.qindex, div.navtab{
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
padding: 2px;
}
div.qindex, div.navpath {
width: 100%;
line-height: 140%;
}
div.navtab {
margin-right: 15px;
}
/* @group Link Styling */
a {
color: #153788;
font-weight: normal;
text-decoration: none;
}
.contents a:visited {
color: #1b77c5;
}
a:hover {
text-decoration: underline;
}
a.qindex {
font-weight: bold;
}
a.qindexHL {
font-weight: bold;
background-color: #6666cc;
color: #ffffff;
border: 1px double #9295C2;
}
.contents a.qindexHL:visited {
color: #ffffff;
}
a.el {
font-weight: bold;
}
a.elRef {
}
a.code {
}
a.codeRef {
}
/* @end */
dl.el {
margin-left: -1cm;
}
.fragment {
font-family: monospace, fixed;
font-size: 105%;
}
pre.fragment {
border: 1px solid #CCCCCC;
background-color: #f5f5f5;
padding: 4px 6px;
margin: 4px 8px 4px 2px;
}
div.ah {
background-color: black;
font-weight: bold;
color: #ffffff;
margin-bottom: 3px;
margin-top: 3px
}
div.groupHeader {
margin-left: 16px;
margin-top: 12px;
margin-bottom: 6px;
font-weight: bold;
}
div.groupText {
margin-left: 16px;
font-style: italic;
}
body {
background: white;
color: black;
margin-right: 20px;
margin-left: 20px;
}
td.indexkey {
background-color: #e8eef2;
font-weight: bold;
border: 1px solid #CCCCCC;
margin: 2px 0px 2px 0;
padding: 2px 10px;
}
td.indexvalue {
background-color: #e8eef2;
border: 1px solid #CCCCCC;
padding: 2px 10px;
margin: 2px 0px;
}
tr.memlist {
background-color: #f0f0f0;
}
p.formulaDsp {
text-align: center;
}
img.formulaDsp {
}
img.formulaInl {
vertical-align: middle;
}
/* @group Code Colorization */
span.keyword {
color: #008000
}
span.keywordtype {
color: #604020
}
span.keywordflow {
color: #e08000
}
span.comment {
color: #800000
}
span.preprocessor {
color: #806020
}
span.stringliteral {
color: #002080
}
span.charliteral {
color: #008080
}
span.vhdldigit {
color: #ff00ff
}
span.vhdlchar {
color: #000000
}
span.vhdlkeyword {
color: #700070
}
span.vhdllogic {
color: #ff0000
}
/* @end */
.search {
color: #003399;
font-weight: bold;
}
form.search {
margin-bottom: 0px;
margin-top: 0px;
}
input.search {
font-size: 75%;
color: #000080;
font-weight: normal;
background-color: #e8eef2;
}
td.tiny {
font-size: 75%;
}
.dirtab {
padding: 4px;
border-collapse: collapse;
border: 1px solid #84b0c7;
}
th.dirtab {
background: #e8eef2;
font-weight: bold;
}
hr {
height: 0;
border: none;
border-top: 1px solid #666;
}
/* @group Member Descriptions */
.mdescLeft, .mdescRight,
.memItemLeft, .memItemRight,
.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
background-color: #FAFAFA;
border: none;
margin: 4px;
padding: 1px 0 0 8px;
}
.mdescLeft, .mdescRight {
padding: 0px 8px 4px 8px;
color: #555;
}
.memItemLeft, .memItemRight, .memTemplParams {
border-top: 1px solid #ccc;
}
.memTemplParams {
color: #606060;
}
/* @end */
/* @group Member Details */
/* Styles for detailed member documentation */
.memtemplate {
font-size: 80%;
color: #606060;
font-weight: normal;
margin-left: 3px;
}
.memnav {
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
.memitem {
padding: 0;
}
.memname {
white-space: nowrap;
font-weight: bold;
}
.memproto, .memdoc {
border: 1px solid #84b0c7;
}
.memproto {
padding: 0;
background-color: #d5e1e8;
font-weight: bold;
-webkit-border-top-left-radius: 8px;
-webkit-border-top-right-radius: 8px;
-moz-border-radius-topleft: 8px;
-moz-border-radius-topright: 8px;
}
.memdoc {
padding: 2px 5px;
background-color: #eef3f5;
border-top-width: 0;
-webkit-border-bottom-left-radius: 8px;
-webkit-border-bottom-right-radius: 8px;
-moz-border-radius-bottomleft: 8px;
-moz-border-radius-bottomright: 8px;
}
.paramkey {
text-align: right;
}
.paramtype {
white-space: nowrap;
}
.paramname {
color: #602020;
white-space: nowrap;
}
.paramname em {
font-style: normal;
}
/* @end */
/* @group Directory (tree) */
/* for the tree view */
.ftvtree {
font-family: sans-serif;
margin: 0.5em;
}
/* these are for tree view when used as main index */
.directory {
font-size: 9pt;
font-weight: bold;
}
.directory h3 {
margin: 0px;
margin-top: 1em;
font-size: 11pt;
}
/*
The following two styles can be used to replace the root node title
with an image of your choice. Simply uncomment the next two styles,
specify the name of your image and be sure to set 'height' to the
proper pixel height of your image.
*/
/*
.directory h3.swap {
height: 61px;
background-repeat: no-repeat;
background-image: url("yourimage.gif");
}
.directory h3.swap span {
display: none;
}
*/
.directory > h3 {
margin-top: 0;
}
.directory p {
margin: 0px;
white-space: nowrap;
}
.directory div {
display: none;
margin: 0px;
}
.directory img {
vertical-align: -30%;
}
/* these are for tree view when not used as main index */
.directory-alt {
font-size: 100%;
font-weight: bold;
}
.directory-alt h3 {
margin: 0px;
margin-top: 1em;
font-size: 11pt;
}
.directory-alt > h3 {
margin-top: 0;
}
.directory-alt p {
margin: 0px;
white-space: nowrap;
}
.directory-alt div {
display: none;
margin: 0px;
}
.directory-alt img {
vertical-align: -30%;
}
/* @end */
address {
font-style: normal;
color: #333;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,37 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: File Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li class="current"><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>File List</h1>Here is a list of all files with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="linebreak_8c.html">linebreak.c</a></td><td class="indexvalue">Implementation of the line breaking algorithm as described in Unicode Standard Annex 14 </td></tr>
<tr><td class="indexkey"><a class="el" href="linebreak_8h.html">linebreak.h</a> <a href="linebreak_8h_source.html">[code]</a></td><td class="indexvalue">Header file for the line breaking algorithm </td></tr>
<tr><td class="indexkey"><a class="el" href="linebreakdata_8c.html">linebreakdata.c</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="linebreakdef_8c.html">linebreakdef.c</a></td><td class="indexvalue">Definition of language-specific data </td></tr>
<tr><td class="indexkey"><a class="el" href="linebreakdef_8h.html">linebreakdef.h</a> <a href="linebreakdef_8h_source.html">[code]</a></td><td class="indexvalue">Definitions of internal data structures, declarations of global variables, and function prototypes for the line breaking algorithm </td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,55 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: Data Fields</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
<li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li class="current"><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</div>
</div>
<div class="contents">
Here is a list of all struct and union fields with links to the structures/unions they belong to:
<p>
<ul>
<li>end
: <a class="el" href="structLineBreakPropertiesIndex.html#7a5207276632f772309f8cf2877c9eae">LineBreakPropertiesIndex</a>
, <a class="el" href="structLineBreakProperties.html#f6ff463e88f6c694661aa10222404a14">LineBreakProperties</a>
<li>lang
: <a class="el" href="structLineBreakPropertiesLang.html#e961b49d11e272adc590cf06e9f6100d">LineBreakPropertiesLang</a>
<li>lbp
: <a class="el" href="structLineBreakPropertiesLang.html#e4b7339a372a0ccbf97e380aa440ff9d">LineBreakPropertiesLang</a>
, <a class="el" href="structLineBreakPropertiesIndex.html#de56f82faa0703e4eafddb0fc4ba6528">LineBreakPropertiesIndex</a>
<li>namelen
: <a class="el" href="structLineBreakPropertiesLang.html#b5132ed92c5964a5cfecbb21de206488">LineBreakPropertiesLang</a>
<li>prop
: <a class="el" href="structLineBreakProperties.html#46d34ea3f514f8f082d92a441a6665ba">LineBreakProperties</a>
<li>start
: <a class="el" href="structLineBreakProperties.html#1fe368ff9b53f52305c8dca687395372">LineBreakProperties</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,55 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: Data Fields - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
<li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="functions.html"><span>All</span></a></li>
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;
<p>
<ul>
<li>end
: <a class="el" href="structLineBreakPropertiesIndex.html#7a5207276632f772309f8cf2877c9eae">LineBreakPropertiesIndex</a>
, <a class="el" href="structLineBreakProperties.html#f6ff463e88f6c694661aa10222404a14">LineBreakProperties</a>
<li>lang
: <a class="el" href="structLineBreakPropertiesLang.html#e961b49d11e272adc590cf06e9f6100d">LineBreakPropertiesLang</a>
<li>lbp
: <a class="el" href="structLineBreakPropertiesLang.html#e4b7339a372a0ccbf97e380aa440ff9d">LineBreakPropertiesLang</a>
, <a class="el" href="structLineBreakPropertiesIndex.html#de56f82faa0703e4eafddb0fc4ba6528">LineBreakPropertiesIndex</a>
<li>namelen
: <a class="el" href="structLineBreakPropertiesLang.html#b5132ed92c5964a5cfecbb21de206488">LineBreakPropertiesLang</a>
<li>prop
: <a class="el" href="structLineBreakProperties.html#46d34ea3f514f8f082d92a441a6665ba">LineBreakProperties</a>
<li>start
: <a class="el" href="structLineBreakProperties.html#1fe368ff9b53f52305c8dca687395372">LineBreakProperties</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,249 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: Data Fields</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="#index_b"><span>b</span></a></li>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_d"><span>d</span></a></li>
<li><a href="#index_e"><span>e</span></a></li>
<li><a href="#index_g"><span>g</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
<li><a href="#index_l"><span>l</span></a></li>
<li><a href="#index_p"><span>p</span></a></li>
<li><a href="#index_r"><span>r</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
<li><a href="#index_u"><span>u</span></a></li>
</ul>
</div>
</div>
<div class="contents">
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
<li>baTable
: <a class="el" href="linebreak_8c.html#e334fc5c93e9d07c1f6731774cdc07d4">linebreak.c</a>
<li>BreakAction
: <a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d">linebreak.c</a>
</ul>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
<li>CM_INDIRECT_BRK
: <a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d3e854663bba91b604d4a5f633b62c74a">linebreak.c</a>
<li>CM_PROHIBITED_BRK
: <a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d9ae64fb627a84203f331f718eaf942c8">linebreak.c</a>
</ul>
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
<li>DIRECT_BRK
: <a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d570708fb66d60c437dc3e8c1c784eef6">linebreak.c</a>
</ul>
<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
<li>EOS
: <a class="el" href="linebreakdef_8h.html#adbbc7b02d94a4c18646813ac8d7dec1">linebreakdef.h</a>
</ul>
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
<li>get_char_lb_class()
: <a class="el" href="linebreak_8c.html#4eb765d3c50b5be0f694f9dd875bf5bb">linebreak.c</a>
<li>get_char_lb_class_default()
: <a class="el" href="linebreak_8c.html#a8be95ab8e6ee731e55279772b5aec91">linebreak.c</a>
<li>get_char_lb_class_lang()
: <a class="el" href="linebreak_8c.html#41ec5a32a31d007d60ea57caa38a2f3e">linebreak.c</a>
<li>get_lb_prop_lang()
: <a class="el" href="linebreak_8c.html#ec14ede6c9c839852210a729274c7fbc">linebreak.c</a>
<li>get_next_char_t
: <a class="el" href="linebreakdef_8h.html#d76de249e1f8334f318f9ee97ccc77c3">linebreakdef.h</a>
<li>get_next_char_utf16()
: <a class="el" href="linebreakdef_8h.html#1358bfc18e5c58f3bf86d41da9915964">linebreakdef.h</a>
, <a class="el" href="linebreak_8c.html#1358bfc18e5c58f3bf86d41da9915964">linebreak.c</a>
<li>get_next_char_utf32()
: <a class="el" href="linebreakdef_8h.html#b436dc6eadd1cfe258159ac671798653">linebreakdef.h</a>
, <a class="el" href="linebreak_8c.html#b436dc6eadd1cfe258159ac671798653">linebreak.c</a>
<li>get_next_char_utf8()
: <a class="el" href="linebreak_8c.html#d6e67ab4880e304d6ac730d545027a7f">linebreak.c</a>
, <a class="el" href="linebreakdef_8h.html#d6e67ab4880e304d6ac730d545027a7f">linebreakdef.h</a>
</ul>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
<li>INDIRECT_BRK
: <a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d246deb66413ac197d95680d31d4d5436">linebreak.c</a>
<li>init_linebreak()
: <a class="el" href="linebreak_8c.html#57c2b88b7e1277cbba23cfffbc782c4f">linebreak.c</a>
, <a class="el" href="linebreak_8h.html#57c2b88b7e1277cbba23cfffbc782c4f">linebreak.h</a>
<li>is_breakable()
: <a class="el" href="linebreak_8c.html#22abef1024a6392cf2bd2281fc1bd151">linebreak.c</a>
, <a class="el" href="linebreak_8h.html#22abef1024a6392cf2bd2281fc1bd151">linebreak.h</a>
<li>is_line_breakable
: <a class="el" href="linebreak_8h.html#9d54c1b18d4fc526a66ef64d9de9c63a">linebreak.h</a>
</ul>
<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
<li>lb_prop_Chinese
: <a class="el" href="linebreakdef_8c.html#945fbc26db32e1f4fbce4f6e9ae70189">linebreakdef.c</a>
<li>lb_prop_default
: <a class="el" href="linebreakdata_8c.html#bbd8c6b6e4e1c8ad2da83f23f81ac29a">linebreakdata.c</a>
, <a class="el" href="linebreakdef_8h.html#bbd8c6b6e4e1c8ad2da83f23f81ac29a">linebreakdef.h</a>
<li>lb_prop_English
: <a class="el" href="linebreakdef_8c.html#cb15b3309e7e1c7a48da9535c4e2855f">linebreakdef.c</a>
<li>lb_prop_French
: <a class="el" href="linebreakdef_8c.html#f75c60d3b0f882032e6932da25b9c9fa">linebreakdef.c</a>
<li>lb_prop_German
: <a class="el" href="linebreakdef_8c.html#c39e3f65a289864edb8a38a201481627">linebreakdef.c</a>
<li>lb_prop_index
: <a class="el" href="linebreak_8c.html#5f6f6df49c934134e8fb043ce6230931">linebreak.c</a>
<li>lb_prop_lang_map
: <a class="el" href="linebreakdef_8c.html#82efdfa4115828df9158e183f1a9983d">linebreakdef.c</a>
, <a class="el" href="linebreakdef_8h.html#82efdfa4115828df9158e183f1a9983d">linebreakdef.h</a>
<li>lb_prop_Russian
: <a class="el" href="linebreakdef_8c.html#980ede377c1ded0d24a58fb429f237f4">linebreakdef.c</a>
<li>lb_prop_Spanish
: <a class="el" href="linebreakdef_8c.html#41ee5277b95d453efdfb0e0242e1cb5f">linebreakdef.c</a>
<li>LBP_AI
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070c9dcacac1d71f0f8ca7bbfe670620dd3">linebreakdef.h</a>
<li>LBP_AL
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407099a0353e48d4453d0acf01da43655281">linebreakdef.h</a>
<li>LBP_B2
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407046fe18e486c79c3835a587fb15ad0c63">linebreakdef.h</a>
<li>LBP_BA
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040708487a95ef080e81a013162e107a4bc74">linebreakdef.h</a>
<li>LBP_BB
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407098dbcbc080626fbc0ff7d4f2b8b86d7d">linebreakdef.h</a>
<li>LBP_BK
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707b0aae40955328f649ec66b23ecf1626">linebreakdef.h</a>
<li>LBP_CB
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070485f9b3c86d8b6f800bba048f1bf47b1">linebreakdef.h</a>
<li>LBP_CL
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d">linebreakdef.h</a>
<li>LBP_CM
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070de6aff21f968efc84109e502c5c469c1">linebreakdef.h</a>
<li>LBP_CR
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040708f6991e8defca4aa9e6485dbb32628a2">linebreakdef.h</a>
<li>LBP_EX
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070694a3a0a4cf1649ca938e4cb8064f3b0">linebreakdef.h</a>
<li>LBP_GL
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040700550bdd01f16132d2897fc5000f58df7">linebreakdef.h</a>
<li>LBP_H2
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407087a5464b708121503da98654e02c2cfc">linebreakdef.h</a>
<li>LBP_H3
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070e898c79c281f9d12c4adfa12834f4380">linebreakdef.h</a>
<li>LBP_HY
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707cf4d61e77f0d1f8974f1b21379d2883">linebreakdef.h</a>
<li>LBP_ID
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070277e68f51ab2a52445f0e7e219b8bd55">linebreakdef.h</a>
<li>LBP_IN
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070e5285b1bd6bf868b1655b8ad3cb9cc73">linebreakdef.h</a>
<li>LBP_IS
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407098ddb858ed33918bce8784a60c36712e">linebreakdef.h</a>
<li>LBP_JL
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040702cb194fd3b6e0295a134ad735f8f75eb">linebreakdef.h</a>
<li>LBP_JT
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707851519f0dac4f922b4144315bb711bf">linebreakdef.h</a>
<li>LBP_JV
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707759e3988158319f9efe87e322804cd8">linebreakdef.h</a>
<li>LBP_LF
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070944522607828ef422c419633f68c8cab">linebreakdef.h</a>
<li>LBP_NL
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070cfefd6df8344cc5601ce7786aee51fcf">linebreakdef.h</a>
<li>LBP_NS
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040701cbbcff8d381e12574aec3679990e3f0">linebreakdef.h</a>
<li>LBP_NU
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707d6ec3c06dfdee326bca876365e5be28">linebreakdef.h</a>
<li>LBP_OP
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3">linebreakdef.h</a>
<li>LBP_PO
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070c7d5be8568020554e49bb4c01ca1fdba">linebreakdef.h</a>
<li>LBP_PR
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070985024038b0a61a40df014013daa7d57">linebreakdef.h</a>
<li>LBP_QU
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070c39763b5b0557dddcec94a381ef30f4e">linebreakdef.h</a>
<li>LBP_SA
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407038b102b238de030fe74906fb0fcfb769">linebreakdef.h</a>
<li>LBP_SG
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070d6764678f5d80d86324a6f29c0561817">linebreakdef.h</a>
<li>LBP_SP
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707605e7c192d43e2ef0596e92446dfba4">linebreakdef.h</a>
<li>LBP_SY
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407047f9a3d5b87cd350905f552ffa3da097">linebreakdef.h</a>
<li>LBP_Undefined
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070926181b709c80b3b50e929c2a151b723">linebreakdef.h</a>
<li>LBP_WJ
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407000085861924d3758649cfd7dc0ec3daa">linebreakdef.h</a>
<li>LBP_XX
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407049450c35ed2a20d252e707322964bdf0">linebreakdef.h</a>
<li>LBP_ZW
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070a58613e52b70bda371b48ca2d89d85ee">linebreakdef.h</a>
<li>LINEBREAK_ALLOWBREAK
: <a class="el" href="linebreak_8h.html#229f34b0b72ccb2e53d0936a1e61a363">linebreak.h</a>
<li>LINEBREAK_INDEX_SIZE
: <a class="el" href="linebreak_8c.html#0ba826ea7bf9cd9038b146bb3572dbf0">linebreak.c</a>
<li>LINEBREAK_INSIDEACHAR
: <a class="el" href="linebreak_8h.html#5adf3d4831b89cb3e40e9bd31a73a39d">linebreak.h</a>
<li>LINEBREAK_MUSTBREAK
: <a class="el" href="linebreak_8h.html#367d64258fd90864a467687cd1736b77">linebreak.h</a>
<li>LINEBREAK_NOBREAK
: <a class="el" href="linebreak_8h.html#dd176a107633817050bedf6eb4f491cc">linebreak.h</a>
<li>LineBreakClass
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">linebreakdef.h</a>
</ul>
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
<li>PROHIBITED_BRK
: <a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8dc31d10dc16c2e583ceb6c7e198fc9799">linebreak.c</a>
</ul>
<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
<li>resolve_lb_class()
: <a class="el" href="linebreak_8c.html#a42b073302ff3325b087b61c78bf4841">linebreak.c</a>
</ul>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
<li>set_linebreaks()
: <a class="el" href="linebreak_8c.html#0e86da0f08579bd9bfeb437f5fab15fe">linebreak.c</a>
, <a class="el" href="linebreakdef_8h.html#0e86da0f08579bd9bfeb437f5fab15fe">linebreakdef.h</a>
<li>set_linebreaks_utf16()
: <a class="el" href="linebreak_8h.html#1d56bce2d32cd986052172638cec43c8">linebreak.h</a>
, <a class="el" href="linebreak_8c.html#1d56bce2d32cd986052172638cec43c8">linebreak.c</a>
<li>set_linebreaks_utf32()
: <a class="el" href="linebreak_8c.html#9fdce33b4ded9d586888c16228ae9e1f">linebreak.c</a>
, <a class="el" href="linebreak_8h.html#9fdce33b4ded9d586888c16228ae9e1f">linebreak.h</a>
<li>set_linebreaks_utf8()
: <a class="el" href="linebreak_8h.html#b426e9cf68117faf583a0ed54742cb28">linebreak.h</a>
, <a class="el" href="linebreak_8c.html#b426e9cf68117faf583a0ed54742cb28">linebreak.c</a>
</ul>
<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
<li>utf16_t
: <a class="el" href="linebreak_8h.html#4dce96cad338d9281612277b2d80950c">linebreak.h</a>
<li>utf32_t
: <a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">linebreak.h</a>
<li>utf8_t
: <a class="el" href="linebreak_8h.html#6103b2105588f239c593e779e605038a">linebreak.h</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,59 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: Data Fields</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li class="current"><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;
<p>
<ul>
<li>EOS
: <a class="el" href="linebreakdef_8h.html#adbbc7b02d94a4c18646813ac8d7dec1">linebreakdef.h</a>
<li>is_line_breakable
: <a class="el" href="linebreak_8h.html#9d54c1b18d4fc526a66ef64d9de9c63a">linebreak.h</a>
<li>LINEBREAK_ALLOWBREAK
: <a class="el" href="linebreak_8h.html#229f34b0b72ccb2e53d0936a1e61a363">linebreak.h</a>
<li>LINEBREAK_INDEX_SIZE
: <a class="el" href="linebreak_8c.html#0ba826ea7bf9cd9038b146bb3572dbf0">linebreak.c</a>
<li>LINEBREAK_INSIDEACHAR
: <a class="el" href="linebreak_8h.html#5adf3d4831b89cb3e40e9bd31a73a39d">linebreak.h</a>
<li>LINEBREAK_MUSTBREAK
: <a class="el" href="linebreak_8h.html#367d64258fd90864a467687cd1736b77">linebreak.h</a>
<li>LINEBREAK_NOBREAK
: <a class="el" href="linebreak_8h.html#dd176a107633817050bedf6eb4f491cc">linebreak.h</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,49 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: Data Fields</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;
<p>
<ul>
<li>BreakAction
: <a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d">linebreak.c</a>
<li>LineBreakClass
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">linebreakdef.h</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,146 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: Data Fields</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_d"><span>d</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
<li><a href="#index_l"><span>l</span></a></li>
<li><a href="#index_p"><span>p</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;
<p>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
<li>CM_INDIRECT_BRK
: <a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d3e854663bba91b604d4a5f633b62c74a">linebreak.c</a>
<li>CM_PROHIBITED_BRK
: <a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d9ae64fb627a84203f331f718eaf942c8">linebreak.c</a>
</ul>
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
<li>DIRECT_BRK
: <a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d570708fb66d60c437dc3e8c1c784eef6">linebreak.c</a>
</ul>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
<li>INDIRECT_BRK
: <a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d246deb66413ac197d95680d31d4d5436">linebreak.c</a>
</ul>
<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
<li>LBP_AI
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070c9dcacac1d71f0f8ca7bbfe670620dd3">linebreakdef.h</a>
<li>LBP_AL
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407099a0353e48d4453d0acf01da43655281">linebreakdef.h</a>
<li>LBP_B2
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407046fe18e486c79c3835a587fb15ad0c63">linebreakdef.h</a>
<li>LBP_BA
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040708487a95ef080e81a013162e107a4bc74">linebreakdef.h</a>
<li>LBP_BB
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407098dbcbc080626fbc0ff7d4f2b8b86d7d">linebreakdef.h</a>
<li>LBP_BK
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707b0aae40955328f649ec66b23ecf1626">linebreakdef.h</a>
<li>LBP_CB
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070485f9b3c86d8b6f800bba048f1bf47b1">linebreakdef.h</a>
<li>LBP_CL
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d">linebreakdef.h</a>
<li>LBP_CM
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070de6aff21f968efc84109e502c5c469c1">linebreakdef.h</a>
<li>LBP_CR
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040708f6991e8defca4aa9e6485dbb32628a2">linebreakdef.h</a>
<li>LBP_EX
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070694a3a0a4cf1649ca938e4cb8064f3b0">linebreakdef.h</a>
<li>LBP_GL
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040700550bdd01f16132d2897fc5000f58df7">linebreakdef.h</a>
<li>LBP_H2
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407087a5464b708121503da98654e02c2cfc">linebreakdef.h</a>
<li>LBP_H3
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070e898c79c281f9d12c4adfa12834f4380">linebreakdef.h</a>
<li>LBP_HY
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707cf4d61e77f0d1f8974f1b21379d2883">linebreakdef.h</a>
<li>LBP_ID
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070277e68f51ab2a52445f0e7e219b8bd55">linebreakdef.h</a>
<li>LBP_IN
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070e5285b1bd6bf868b1655b8ad3cb9cc73">linebreakdef.h</a>
<li>LBP_IS
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407098ddb858ed33918bce8784a60c36712e">linebreakdef.h</a>
<li>LBP_JL
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040702cb194fd3b6e0295a134ad735f8f75eb">linebreakdef.h</a>
<li>LBP_JT
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707851519f0dac4f922b4144315bb711bf">linebreakdef.h</a>
<li>LBP_JV
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707759e3988158319f9efe87e322804cd8">linebreakdef.h</a>
<li>LBP_LF
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070944522607828ef422c419633f68c8cab">linebreakdef.h</a>
<li>LBP_NL
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070cfefd6df8344cc5601ce7786aee51fcf">linebreakdef.h</a>
<li>LBP_NS
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040701cbbcff8d381e12574aec3679990e3f0">linebreakdef.h</a>
<li>LBP_NU
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707d6ec3c06dfdee326bca876365e5be28">linebreakdef.h</a>
<li>LBP_OP
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3">linebreakdef.h</a>
<li>LBP_PO
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070c7d5be8568020554e49bb4c01ca1fdba">linebreakdef.h</a>
<li>LBP_PR
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070985024038b0a61a40df014013daa7d57">linebreakdef.h</a>
<li>LBP_QU
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070c39763b5b0557dddcec94a381ef30f4e">linebreakdef.h</a>
<li>LBP_SA
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407038b102b238de030fe74906fb0fcfb769">linebreakdef.h</a>
<li>LBP_SG
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070d6764678f5d80d86324a6f29c0561817">linebreakdef.h</a>
<li>LBP_SP
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707605e7c192d43e2ef0596e92446dfba4">linebreakdef.h</a>
<li>LBP_SY
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407047f9a3d5b87cd350905f552ffa3da097">linebreakdef.h</a>
<li>LBP_Undefined
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070926181b709c80b3b50e929c2a151b723">linebreakdef.h</a>
<li>LBP_WJ
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407000085861924d3758649cfd7dc0ec3daa">linebreakdef.h</a>
<li>LBP_XX
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407049450c35ed2a20d252e707322964bdf0">linebreakdef.h</a>
<li>LBP_ZW
: <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070a58613e52b70bda371b48ca2d89d85ee">linebreakdef.h</a>
</ul>
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
<li>PROHIBITED_BRK
: <a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8dc31d10dc16c2e583ceb6c7e198fc9799">linebreak.c</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,82 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: Data Fields</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="globals.html"><span>All</span></a></li>
<li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;
<p>
<ul>
<li>get_char_lb_class()
: <a class="el" href="linebreak_8c.html#4eb765d3c50b5be0f694f9dd875bf5bb">linebreak.c</a>
<li>get_char_lb_class_default()
: <a class="el" href="linebreak_8c.html#a8be95ab8e6ee731e55279772b5aec91">linebreak.c</a>
<li>get_char_lb_class_lang()
: <a class="el" href="linebreak_8c.html#41ec5a32a31d007d60ea57caa38a2f3e">linebreak.c</a>
<li>get_lb_prop_lang()
: <a class="el" href="linebreak_8c.html#ec14ede6c9c839852210a729274c7fbc">linebreak.c</a>
<li>get_next_char_utf16()
: <a class="el" href="linebreak_8c.html#1358bfc18e5c58f3bf86d41da9915964">linebreak.c</a>
, <a class="el" href="linebreakdef_8h.html#1358bfc18e5c58f3bf86d41da9915964">linebreakdef.h</a>
<li>get_next_char_utf32()
: <a class="el" href="linebreak_8c.html#b436dc6eadd1cfe258159ac671798653">linebreak.c</a>
, <a class="el" href="linebreakdef_8h.html#b436dc6eadd1cfe258159ac671798653">linebreakdef.h</a>
<li>get_next_char_utf8()
: <a class="el" href="linebreak_8c.html#d6e67ab4880e304d6ac730d545027a7f">linebreak.c</a>
, <a class="el" href="linebreakdef_8h.html#d6e67ab4880e304d6ac730d545027a7f">linebreakdef.h</a>
<li>init_linebreak()
: <a class="el" href="linebreak_8c.html#57c2b88b7e1277cbba23cfffbc782c4f">linebreak.c</a>
, <a class="el" href="linebreak_8h.html#57c2b88b7e1277cbba23cfffbc782c4f">linebreak.h</a>
<li>is_breakable()
: <a class="el" href="linebreak_8c.html#22abef1024a6392cf2bd2281fc1bd151">linebreak.c</a>
, <a class="el" href="linebreak_8h.html#22abef1024a6392cf2bd2281fc1bd151">linebreak.h</a>
<li>resolve_lb_class()
: <a class="el" href="linebreak_8c.html#a42b073302ff3325b087b61c78bf4841">linebreak.c</a>
<li>set_linebreaks()
: <a class="el" href="linebreak_8c.html#0e86da0f08579bd9bfeb437f5fab15fe">linebreak.c</a>
, <a class="el" href="linebreakdef_8h.html#0e86da0f08579bd9bfeb437f5fab15fe">linebreakdef.h</a>
<li>set_linebreaks_utf16()
: <a class="el" href="linebreak_8h.html#1d56bce2d32cd986052172638cec43c8">linebreak.h</a>
, <a class="el" href="linebreak_8c.html#1d56bce2d32cd986052172638cec43c8">linebreak.c</a>
<li>set_linebreaks_utf32()
: <a class="el" href="linebreak_8c.html#9fdce33b4ded9d586888c16228ae9e1f">linebreak.c</a>
, <a class="el" href="linebreak_8h.html#9fdce33b4ded9d586888c16228ae9e1f">linebreak.h</a>
<li>set_linebreaks_utf8()
: <a class="el" href="linebreak_8h.html#b426e9cf68117faf583a0ed54742cb28">linebreak.h</a>
, <a class="el" href="linebreak_8c.html#b426e9cf68117faf583a0ed54742cb28">linebreak.c</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,53 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: Data Fields</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;
<p>
<ul>
<li>get_next_char_t
: <a class="el" href="linebreakdef_8h.html#d76de249e1f8334f318f9ee97ccc77c3">linebreakdef.h</a>
<li>utf16_t
: <a class="el" href="linebreak_8h.html#4dce96cad338d9281612277b2d80950c">linebreak.h</a>
<li>utf32_t
: <a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">linebreak.h</a>
<li>utf8_t
: <a class="el" href="linebreak_8h.html#6103b2105588f239c593e779e605038a">linebreak.h</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,67 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: Data Fields</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li class="current"><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;
<p>
<ul>
<li>baTable
: <a class="el" href="linebreak_8c.html#e334fc5c93e9d07c1f6731774cdc07d4">linebreak.c</a>
<li>lb_prop_Chinese
: <a class="el" href="linebreakdef_8c.html#945fbc26db32e1f4fbce4f6e9ae70189">linebreakdef.c</a>
<li>lb_prop_default
: <a class="el" href="linebreakdata_8c.html#bbd8c6b6e4e1c8ad2da83f23f81ac29a">linebreakdata.c</a>
, <a class="el" href="linebreakdef_8h.html#bbd8c6b6e4e1c8ad2da83f23f81ac29a">linebreakdef.h</a>
<li>lb_prop_English
: <a class="el" href="linebreakdef_8c.html#cb15b3309e7e1c7a48da9535c4e2855f">linebreakdef.c</a>
<li>lb_prop_French
: <a class="el" href="linebreakdef_8c.html#f75c60d3b0f882032e6932da25b9c9fa">linebreakdef.c</a>
<li>lb_prop_German
: <a class="el" href="linebreakdef_8c.html#c39e3f65a289864edb8a38a201481627">linebreakdef.c</a>
<li>lb_prop_index
: <a class="el" href="linebreak_8c.html#5f6f6df49c934134e8fb043ce6230931">linebreak.c</a>
<li>lb_prop_lang_map
: <a class="el" href="linebreakdef_8h.html#82efdfa4115828df9158e183f1a9983d">linebreakdef.h</a>
, <a class="el" href="linebreakdef_8c.html#82efdfa4115828df9158e183f1a9983d">linebreakdef.c</a>
<li>lb_prop_Russian
: <a class="el" href="linebreakdef_8c.html#980ede377c1ded0d24a58fb429f237f4">linebreakdef.c</a>
<li>lb_prop_Spanish
: <a class="el" href="linebreakdef_8c.html#41ee5277b95d453efdfb0e0242e1cb5f">linebreakdef.c</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,26 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>liblinebreak Documentation</h1>
<p>
<h3 align="center">1.2 </h3></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,800 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: linebreak.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>linebreak.c File Reference</h1>Implementation of the line breaking algorithm as described in Unicode Standard Annex 14.
<a href="#_details">More...</a>
<p>
<code>#include &lt;assert.h&gt;</code><br>
<code>#include &lt;stddef.h&gt;</code><br>
<code>#include &lt;string.h&gt;</code><br>
<code>#include &quot;<a class="el" href="linebreak_8h_source.html">linebreak.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="linebreakdef_8h_source.html">linebreakdef.h</a>&quot;</code><br>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structLineBreakPropertiesIndex.html">LineBreakPropertiesIndex</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Struct for the second-level index to the line breaking properties. <a href="structLineBreakPropertiesIndex.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#0ba826ea7bf9cd9038b146bb3572dbf0">LINEBREAK_INDEX_SIZE</a>&nbsp;&nbsp;&nbsp;40</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Size of the second-level index to the line breaking properties. <a href="#0ba826ea7bf9cd9038b146bb3572dbf0"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d">BreakAction</a> { <br>
&nbsp;&nbsp;<a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d570708fb66d60c437dc3e8c1c784eef6">DIRECT_BRK</a>,
<a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d246deb66413ac197d95680d31d4d5436">INDIRECT_BRK</a>,
<a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d3e854663bba91b604d4a5f633b62c74a">CM_INDIRECT_BRK</a>,
<a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d9ae64fb627a84203f331f718eaf942c8">CM_PROHIBITED_BRK</a>,
<br>
&nbsp;&nbsp;<a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8dc31d10dc16c2e583ceb6c7e198fc9799">PROHIBITED_BRK</a>
<br>
}</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumeration of break actions. <a href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#57c2b88b7e1277cbba23cfffbc782c4f">init_linebreak</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes the second-level index to the line breaking properties. <a href="#57c2b88b7e1277cbba23cfffbc782c4f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#ec14ede6c9c839852210a729274c7fbc">get_lb_prop_lang</a> (const char *lang)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the language-specific line breaking properties. <a href="#ec14ede6c9c839852210a729274c7fbc"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static enum <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">LineBreakClass</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#4eb765d3c50b5be0f694f9dd875bf5bb">get_char_lb_class</a> (<a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> ch, struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a> *lbp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the line breaking class of a character from a line breaking properties array. <a href="#4eb765d3c50b5be0f694f9dd875bf5bb"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static enum <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">LineBreakClass</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#a8be95ab8e6ee731e55279772b5aec91">get_char_lb_class_default</a> (<a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> ch)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the line breaking class of a character from the default line breaking properties array. <a href="#a8be95ab8e6ee731e55279772b5aec91"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static enum <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">LineBreakClass</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#41ec5a32a31d007d60ea57caa38a2f3e">get_char_lb_class_lang</a> (<a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> ch, struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a> *lbpLang)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the line breaking class of a character for a specific language. <a href="#41ec5a32a31d007d60ea57caa38a2f3e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static enum <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">LineBreakClass</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#a42b073302ff3325b087b61c78bf4841">resolve_lb_class</a> (enum <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">LineBreakClass</a> lbc, const char *lang)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Resolves the line breaking class for certain ambiguous or complicated characters. <a href="#a42b073302ff3325b087b61c78bf4841"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#d6e67ab4880e304d6ac730d545027a7f">get_next_char_utf8</a> (const <a class="el" href="linebreak_8h.html#6103b2105588f239c593e779e605038a">utf8_t</a> *s, size_t len, size_t *ip)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the next Unicode character in a UTF-8 sequence. <a href="#d6e67ab4880e304d6ac730d545027a7f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#1358bfc18e5c58f3bf86d41da9915964">get_next_char_utf16</a> (const <a class="el" href="linebreak_8h.html#4dce96cad338d9281612277b2d80950c">utf16_t</a> *s, size_t len, size_t *ip)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the next Unicode character in a UTF-16 sequence. <a href="#1358bfc18e5c58f3bf86d41da9915964"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#b436dc6eadd1cfe258159ac671798653">get_next_char_utf32</a> (const <a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> *s, size_t len, size_t *ip)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the next Unicode character in a UTF-32 sequence. <a href="#b436dc6eadd1cfe258159ac671798653"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#0e86da0f08579bd9bfeb437f5fab15fe">set_linebreaks</a> (const void *s, size_t len, const char *lang, char *brks, <a class="el" href="linebreakdef_8h.html#d76de249e1f8334f318f9ee97ccc77c3">get_next_char_t</a> get_next_char)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the line breaking information for a generic input string. <a href="#0e86da0f08579bd9bfeb437f5fab15fe"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#b426e9cf68117faf583a0ed54742cb28">set_linebreaks_utf8</a> (const <a class="el" href="linebreak_8h.html#6103b2105588f239c593e779e605038a">utf8_t</a> *s, size_t len, const char *lang, char *brks)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the line breaking information for a UTF-8 input string. <a href="#b426e9cf68117faf583a0ed54742cb28"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#1d56bce2d32cd986052172638cec43c8">set_linebreaks_utf16</a> (const <a class="el" href="linebreak_8h.html#4dce96cad338d9281612277b2d80950c">utf16_t</a> *s, size_t len, const char *lang, char *brks)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the line breaking information for a UTF-16 input string. <a href="#1d56bce2d32cd986052172638cec43c8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#9fdce33b4ded9d586888c16228ae9e1f">set_linebreaks_utf32</a> (const <a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> *s, size_t len, const char *lang, char *brks)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the line breaking information for a UTF-32 input string. <a href="#9fdce33b4ded9d586888c16228ae9e1f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#22abef1024a6392cf2bd2281fc1bd151">is_breakable</a> (<a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> char1, <a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> char2, const char *lang)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tells whether a line break can occur between two Unicode characters. <a href="#22abef1024a6392cf2bd2281fc1bd151"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static enum <a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d">BreakAction</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#e334fc5c93e9d07c1f6731774cdc07d4">baTable</a> [LBP_JT][LBP_JT]</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Break action pair table. <a href="#e334fc5c93e9d07c1f6731774cdc07d4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <br class="typebreak">
<a class="el" href="structLineBreakPropertiesIndex.html">LineBreakPropertiesIndex</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8c.html#5f6f6df49c934134e8fb043ce6230931">lb_prop_index</a> [LINEBREAK_INDEX_SIZE]</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Second-level index to the line breaking properties. <a href="#5f6f6df49c934134e8fb043ce6230931"></a><br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
Implementation of the line breaking algorithm as described in Unicode Standard Annex 14.
<p>
<dl class="version" compact><dt><b>Version:</b></dt><dd>1.2, 2009/04/29 </dd></dl>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Wu Yongwei </dd></dl>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="0ba826ea7bf9cd9038b146bb3572dbf0"></a><!-- doxytag: member="linebreak.c::LINEBREAK_INDEX_SIZE" ref="0ba826ea7bf9cd9038b146bb3572dbf0" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LINEBREAK_INDEX_SIZE&nbsp;&nbsp;&nbsp;40 </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Size of the second-level index to the line breaking properties.
<p>
</div>
</div><p>
<hr><h2>Enumeration Type Documentation</h2>
<a class="anchor" name="440c1a7abb9df5e3fc1d27b9a39e3a8d"></a><!-- doxytag: member="linebreak.c::BreakAction" ref="440c1a7abb9df5e3fc1d27b9a39e3a8d" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d">BreakAction</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Enumeration of break actions.
<p>
They are used in the break action pair table below. <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="440c1a7abb9df5e3fc1d27b9a39e3a8d570708fb66d60c437dc3e8c1c784eef6"></a><!-- doxytag: member="DIRECT_BRK" ref="440c1a7abb9df5e3fc1d27b9a39e3a8d570708fb66d60c437dc3e8c1c784eef6" args="" -->DIRECT_BRK</em>&nbsp;</td><td>
Direct break opportunity. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="440c1a7abb9df5e3fc1d27b9a39e3a8d246deb66413ac197d95680d31d4d5436"></a><!-- doxytag: member="INDIRECT_BRK" ref="440c1a7abb9df5e3fc1d27b9a39e3a8d246deb66413ac197d95680d31d4d5436" args="" -->INDIRECT_BRK</em>&nbsp;</td><td>
Indirect break opportunity. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="440c1a7abb9df5e3fc1d27b9a39e3a8d3e854663bba91b604d4a5f633b62c74a"></a><!-- doxytag: member="CM_INDIRECT_BRK" ref="440c1a7abb9df5e3fc1d27b9a39e3a8d3e854663bba91b604d4a5f633b62c74a" args="" -->CM_INDIRECT_BRK</em>&nbsp;</td><td>
Indirect break opportunity for combining marks. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="440c1a7abb9df5e3fc1d27b9a39e3a8d9ae64fb627a84203f331f718eaf942c8"></a><!-- doxytag: member="CM_PROHIBITED_BRK" ref="440c1a7abb9df5e3fc1d27b9a39e3a8d9ae64fb627a84203f331f718eaf942c8" args="" -->CM_PROHIBITED_BRK</em>&nbsp;</td><td>
Prohibited break for combining marks. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="440c1a7abb9df5e3fc1d27b9a39e3a8dc31d10dc16c2e583ceb6c7e198fc9799"></a><!-- doxytag: member="PROHIBITED_BRK" ref="440c1a7abb9df5e3fc1d27b9a39e3a8dc31d10dc16c2e583ceb6c7e198fc9799" args="" -->PROHIBITED_BRK</em>&nbsp;</td><td>
Prohibited break. </td></tr>
</table>
</dl>
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="4eb765d3c50b5be0f694f9dd875bf5bb"></a><!-- doxytag: member="linebreak.c::get_char_lb_class" ref="4eb765d3c50b5be0f694f9dd875bf5bb" args="(utf32_t ch, struct LineBreakProperties *lbp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static enum <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">LineBreakClass</a> get_char_lb_class </td>
<td>(</td>
<td class="paramtype"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td>
<td class="paramname"> <em>ch</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a> *&nbsp;</td>
<td class="paramname"> <em>lbp</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Gets the line breaking class of a character from a line breaking properties array.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>ch</em>&nbsp;</td><td>character to check </td></tr>
<tr><td valign="top"></td><td valign="top"><em>lbp</em>&nbsp;</td><td>pointer to the line breaking properties array </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the line breaking class if found; <code>LBP_XX</code> otherwise </dd></dl>
</div>
</div><p>
<a class="anchor" name="a8be95ab8e6ee731e55279772b5aec91"></a><!-- doxytag: member="linebreak.c::get_char_lb_class_default" ref="a8be95ab8e6ee731e55279772b5aec91" args="(utf32_t ch)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static enum <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">LineBreakClass</a> get_char_lb_class_default </td>
<td>(</td>
<td class="paramtype"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td>
<td class="paramname"> <em>ch</em> </td>
<td>&nbsp;)&nbsp;</td>
<td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Gets the line breaking class of a character from the default line breaking properties array.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>ch</em>&nbsp;</td><td>character to check </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the line breaking class if found; <code>LBP_XX</code> otherwise </dd></dl>
</div>
</div><p>
<a class="anchor" name="41ec5a32a31d007d60ea57caa38a2f3e"></a><!-- doxytag: member="linebreak.c::get_char_lb_class_lang" ref="41ec5a32a31d007d60ea57caa38a2f3e" args="(utf32_t ch, struct LineBreakProperties *lbpLang)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static enum <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">LineBreakClass</a> get_char_lb_class_lang </td>
<td>(</td>
<td class="paramtype"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td>
<td class="paramname"> <em>ch</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a> *&nbsp;</td>
<td class="paramname"> <em>lbpLang</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Gets the line breaking class of a character for a specific language.
<p>
This function will check the language-specific data first, and then the default data if there is no language-specific property available for the character.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>ch</em>&nbsp;</td><td>character to check </td></tr>
<tr><td valign="top"></td><td valign="top"><em>lbpLang</em>&nbsp;</td><td>pointer to the language-specific line breaking properties array </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the line breaking class if found; <code>LBP_XX</code> otherwise </dd></dl>
</div>
</div><p>
<a class="anchor" name="ec14ede6c9c839852210a729274c7fbc"></a><!-- doxytag: member="linebreak.c::get_lb_prop_lang" ref="ec14ede6c9c839852210a729274c7fbc" args="(const char *lang)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a>* get_lb_prop_lang </td>
<td>(</td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>lang</em> </td>
<td>&nbsp;)&nbsp;</td>
<td><code> [static, read]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Gets the language-specific line breaking properties.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>lang</em>&nbsp;</td><td>language of the text </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>pointer to the language-specific line breaking properties array if found; <code>NULL</code> otherwise </dd></dl>
</div>
</div><p>
<a class="anchor" name="1358bfc18e5c58f3bf86d41da9915964"></a><!-- doxytag: member="linebreak.c::get_next_char_utf16" ref="1358bfc18e5c58f3bf86d41da9915964" args="(const utf16_t *s, size_t len, size_t *ip)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> get_next_char_utf16 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="linebreak_8h.html#4dce96cad338d9281612277b2d80950c">utf16_t</a> *&nbsp;</td>
<td class="paramname"> <em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&nbsp;</td>
<td class="paramname"> <em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t *&nbsp;</td>
<td class="paramname"> <em>ip</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Gets the next Unicode character in a UTF-16 sequence.
<p>
The index will be advanced to the next complete character, unless the end of string is reached in the middle of a UTF-16 surrogate pair.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>s</em>&nbsp;</td><td>input UTF-16 string </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>len</em>&nbsp;</td><td>length of the string in words </td></tr>
<tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>ip</em>&nbsp;</td><td>pointer to the index </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the Unicode character beginning at the index; or <a class="el" href="linebreakdef_8h.html#adbbc7b02d94a4c18646813ac8d7dec1" title="Constant value to mark the end of string.">EOS</a> if end of input is encountered</dd></dl>
<dl class="deprecated" compact><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated:</a></b></dt><dd>This function will be prefixed with <code>lb_</code> in the future. </dd></dl>
</div>
</div><p>
<a class="anchor" name="b436dc6eadd1cfe258159ac671798653"></a><!-- doxytag: member="linebreak.c::get_next_char_utf32" ref="b436dc6eadd1cfe258159ac671798653" args="(const utf32_t *s, size_t len, size_t *ip)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> get_next_char_utf32 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> *&nbsp;</td>
<td class="paramname"> <em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&nbsp;</td>
<td class="paramname"> <em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t *&nbsp;</td>
<td class="paramname"> <em>ip</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Gets the next Unicode character in a UTF-32 sequence.
<p>
The index will be advanced to the next character.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>s</em>&nbsp;</td><td>input UTF-32 string </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>len</em>&nbsp;</td><td>length of the string in dwords </td></tr>
<tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>ip</em>&nbsp;</td><td>pointer to the index </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the Unicode character beginning at the index; or <a class="el" href="linebreakdef_8h.html#adbbc7b02d94a4c18646813ac8d7dec1" title="Constant value to mark the end of string.">EOS</a> if end of input is encountered</dd></dl>
<dl class="deprecated" compact><dt><b><a class="el" href="deprecated.html#_deprecated000003">Deprecated:</a></b></dt><dd>This function will be prefixed with <code>lb_</code> in the future. </dd></dl>
</div>
</div><p>
<a class="anchor" name="d6e67ab4880e304d6ac730d545027a7f"></a><!-- doxytag: member="linebreak.c::get_next_char_utf8" ref="d6e67ab4880e304d6ac730d545027a7f" args="(const utf8_t *s, size_t len, size_t *ip)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> get_next_char_utf8 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="linebreak_8h.html#6103b2105588f239c593e779e605038a">utf8_t</a> *&nbsp;</td>
<td class="paramname"> <em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&nbsp;</td>
<td class="paramname"> <em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t *&nbsp;</td>
<td class="paramname"> <em>ip</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Gets the next Unicode character in a UTF-8 sequence.
<p>
The index will be advanced to the next complete character, unless the end of string is reached in the middle of a UTF-8 sequence.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>s</em>&nbsp;</td><td>input UTF-8 string </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>len</em>&nbsp;</td><td>length of the string in bytes </td></tr>
<tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>ip</em>&nbsp;</td><td>pointer to the index </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the Unicode character beginning at the index; or <a class="el" href="linebreakdef_8h.html#adbbc7b02d94a4c18646813ac8d7dec1" title="Constant value to mark the end of string.">EOS</a> if end of input is encountered</dd></dl>
<dl class="deprecated" compact><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>This function will be prefixed with <code>lb_</code> in the future. </dd></dl>
</div>
</div><p>
<a class="anchor" name="57c2b88b7e1277cbba23cfffbc782c4f"></a><!-- doxytag: member="linebreak.c::init_linebreak" ref="57c2b88b7e1277cbba23cfffbc782c4f" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void init_linebreak </td>
<td>(</td>
<td class="paramtype">void&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Initializes the second-level index to the line breaking properties.
<p>
If it is not called, the performance of <a class="el" href="linebreak_8c.html#41ec5a32a31d007d60ea57caa38a2f3e" title="Gets the line breaking class of a character for a specific language.">get_char_lb_class_lang</a> (and thus the main functionality) can be pretty bad, especially for big code points like those of Chinese.
</div>
</div><p>
<a class="anchor" name="22abef1024a6392cf2bd2281fc1bd151"></a><!-- doxytag: member="linebreak.c::is_breakable" ref="22abef1024a6392cf2bd2281fc1bd151" args="(utf32_t char1, utf32_t char2, const char *lang)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int is_breakable </td>
<td>(</td>
<td class="paramtype"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td>
<td class="paramname"> <em>char1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td>
<td class="paramname"> <em>char2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>lang</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Tells whether a line break can occur between two Unicode characters.
<p>
This is a wrapper function to expose a simple interface. Generally speaking, it is better to use <a class="el" href="linebreak_8h.html#9fdce33b4ded9d586888c16228ae9e1f" title="Sets the line breaking information for a UTF-32 input string.">set_linebreaks_utf32</a> instead, since complicated cases involving combining marks, spaces, etc. cannot be correctly processed.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>char1</em>&nbsp;</td><td>the first Unicode character </td></tr>
<tr><td valign="top"></td><td valign="top"><em>char2</em>&nbsp;</td><td>the second Unicode character </td></tr>
<tr><td valign="top"></td><td valign="top"><em>lang</em>&nbsp;</td><td>language of the input </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>one of <a class="el" href="linebreak_8h.html#367d64258fd90864a467687cd1736b77" title="Break is mandatory.">LINEBREAK_MUSTBREAK</a>, <a class="el" href="linebreak_8h.html#229f34b0b72ccb2e53d0936a1e61a363" title="Break is allowed.">LINEBREAK_ALLOWBREAK</a>, <a class="el" href="linebreak_8h.html#dd176a107633817050bedf6eb4f491cc" title="No break is possible.">LINEBREAK_NOBREAK</a>, or <a class="el" href="linebreak_8h.html#5adf3d4831b89cb3e40e9bd31a73a39d" title="A UTF-8/16 sequence is unfinished.">LINEBREAK_INSIDEACHAR</a></dd></dl>
<dl class="deprecated" compact><dt><b><a class="el" href="deprecated.html#_deprecated000004">Deprecated:</a></b></dt><dd>This function will be renamed to <a class="el" href="linebreak_8h.html#9d54c1b18d4fc526a66ef64d9de9c63a" title="Replacement form for the deprecated function is_breakable.">is_line_breakable</a> in the future. The name is already defined as a macro&mdash;please use it. </dd></dl>
</div>
</div><p>
<a class="anchor" name="a42b073302ff3325b087b61c78bf4841"></a><!-- doxytag: member="linebreak.c::resolve_lb_class" ref="a42b073302ff3325b087b61c78bf4841" args="(enum LineBreakClass lbc, const char *lang)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static enum <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">LineBreakClass</a> resolve_lb_class </td>
<td>(</td>
<td class="paramtype">enum <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">LineBreakClass</a>&nbsp;</td>
<td class="paramname"> <em>lbc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>lang</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Resolves the line breaking class for certain ambiguous or complicated characters.
<p>
They are treated in a simplistic way in this implementation.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>lbc</em>&nbsp;</td><td>line breaking class to resolve </td></tr>
<tr><td valign="top"></td><td valign="top"><em>lang</em>&nbsp;</td><td>language of the text </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the resolved line breaking class </dd></dl>
</div>
</div><p>
<a class="anchor" name="0e86da0f08579bd9bfeb437f5fab15fe"></a><!-- doxytag: member="linebreak.c::set_linebreaks" ref="0e86da0f08579bd9bfeb437f5fab15fe" args="(const void *s, size_t len, const char *lang, char *brks, get_next_char_t get_next_char)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void set_linebreaks </td>
<td>(</td>
<td class="paramtype">const void *&nbsp;</td>
<td class="paramname"> <em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&nbsp;</td>
<td class="paramname"> <em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>lang</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>brks</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="linebreakdef_8h.html#d76de249e1f8334f318f9ee97ccc77c3">get_next_char_t</a>&nbsp;</td>
<td class="paramname"> <em>get_next_char</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Sets the line breaking information for a generic input string.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>s</em>&nbsp;</td><td>input string </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>len</em>&nbsp;</td><td>length of the input </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>lang</em>&nbsp;</td><td>language of the input </td></tr>
<tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>brks</em>&nbsp;</td><td>pointer to the output breaking data, containing <a class="el" href="linebreak_8h.html#367d64258fd90864a467687cd1736b77" title="Break is mandatory.">LINEBREAK_MUSTBREAK</a>, <a class="el" href="linebreak_8h.html#229f34b0b72ccb2e53d0936a1e61a363" title="Break is allowed.">LINEBREAK_ALLOWBREAK</a>, <a class="el" href="linebreak_8h.html#dd176a107633817050bedf6eb4f491cc" title="No break is possible.">LINEBREAK_NOBREAK</a>, or <a class="el" href="linebreak_8h.html#5adf3d4831b89cb3e40e9bd31a73a39d" title="A UTF-8/16 sequence is unfinished.">LINEBREAK_INSIDEACHAR</a> </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>get_next_char</em>&nbsp;</td><td>function to get the next UTF-32 character </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="1d56bce2d32cd986052172638cec43c8"></a><!-- doxytag: member="linebreak.c::set_linebreaks_utf16" ref="1d56bce2d32cd986052172638cec43c8" args="(const utf16_t *s, size_t len, const char *lang, char *brks)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void set_linebreaks_utf16 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="linebreak_8h.html#4dce96cad338d9281612277b2d80950c">utf16_t</a> *&nbsp;</td>
<td class="paramname"> <em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&nbsp;</td>
<td class="paramname"> <em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>lang</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>brks</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Sets the line breaking information for a UTF-16 input string.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>s</em>&nbsp;</td><td>input UTF-16 string </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>len</em>&nbsp;</td><td>length of the input </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>lang</em>&nbsp;</td><td>language of the input </td></tr>
<tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>brks</em>&nbsp;</td><td>pointer to the output breaking data, containing <a class="el" href="linebreak_8h.html#367d64258fd90864a467687cd1736b77" title="Break is mandatory.">LINEBREAK_MUSTBREAK</a>, <a class="el" href="linebreak_8h.html#229f34b0b72ccb2e53d0936a1e61a363" title="Break is allowed.">LINEBREAK_ALLOWBREAK</a>, <a class="el" href="linebreak_8h.html#dd176a107633817050bedf6eb4f491cc" title="No break is possible.">LINEBREAK_NOBREAK</a>, or <a class="el" href="linebreak_8h.html#5adf3d4831b89cb3e40e9bd31a73a39d" title="A UTF-8/16 sequence is unfinished.">LINEBREAK_INSIDEACHAR</a> </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="9fdce33b4ded9d586888c16228ae9e1f"></a><!-- doxytag: member="linebreak.c::set_linebreaks_utf32" ref="9fdce33b4ded9d586888c16228ae9e1f" args="(const utf32_t *s, size_t len, const char *lang, char *brks)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void set_linebreaks_utf32 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> *&nbsp;</td>
<td class="paramname"> <em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&nbsp;</td>
<td class="paramname"> <em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>lang</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>brks</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Sets the line breaking information for a UTF-32 input string.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>s</em>&nbsp;</td><td>input UTF-32 string </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>len</em>&nbsp;</td><td>length of the input </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>lang</em>&nbsp;</td><td>language of the input </td></tr>
<tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>brks</em>&nbsp;</td><td>pointer to the output breaking data, containing <a class="el" href="linebreak_8h.html#367d64258fd90864a467687cd1736b77" title="Break is mandatory.">LINEBREAK_MUSTBREAK</a>, <a class="el" href="linebreak_8h.html#229f34b0b72ccb2e53d0936a1e61a363" title="Break is allowed.">LINEBREAK_ALLOWBREAK</a>, <a class="el" href="linebreak_8h.html#dd176a107633817050bedf6eb4f491cc" title="No break is possible.">LINEBREAK_NOBREAK</a>, or <a class="el" href="linebreak_8h.html#5adf3d4831b89cb3e40e9bd31a73a39d" title="A UTF-8/16 sequence is unfinished.">LINEBREAK_INSIDEACHAR</a> </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="b426e9cf68117faf583a0ed54742cb28"></a><!-- doxytag: member="linebreak.c::set_linebreaks_utf8" ref="b426e9cf68117faf583a0ed54742cb28" args="(const utf8_t *s, size_t len, const char *lang, char *brks)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void set_linebreaks_utf8 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="linebreak_8h.html#6103b2105588f239c593e779e605038a">utf8_t</a> *&nbsp;</td>
<td class="paramname"> <em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&nbsp;</td>
<td class="paramname"> <em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>lang</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>brks</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Sets the line breaking information for a UTF-8 input string.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>s</em>&nbsp;</td><td>input UTF-8 string </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>len</em>&nbsp;</td><td>length of the input </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>lang</em>&nbsp;</td><td>language of the input </td></tr>
<tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>brks</em>&nbsp;</td><td>pointer to the output breaking data, containing <a class="el" href="linebreak_8h.html#367d64258fd90864a467687cd1736b77" title="Break is mandatory.">LINEBREAK_MUSTBREAK</a>, <a class="el" href="linebreak_8h.html#229f34b0b72ccb2e53d0936a1e61a363" title="Break is allowed.">LINEBREAK_ALLOWBREAK</a>, <a class="el" href="linebreak_8h.html#dd176a107633817050bedf6eb4f491cc" title="No break is possible.">LINEBREAK_NOBREAK</a>, or <a class="el" href="linebreak_8h.html#5adf3d4831b89cb3e40e9bd31a73a39d" title="A UTF-8/16 sequence is unfinished.">LINEBREAK_INSIDEACHAR</a> </td></tr>
</table>
</dl>
</div>
</div><p>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="e334fc5c93e9d07c1f6731774cdc07d4"></a><!-- doxytag: member="linebreak.c::baTable" ref="e334fc5c93e9d07c1f6731774cdc07d4" args="[LBP_JT][LBP_JT]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="linebreak_8c.html#440c1a7abb9df5e3fc1d27b9a39e3a8d">BreakAction</a> <a class="el" href="linebreak_8c.html#e334fc5c93e9d07c1f6731774cdc07d4">baTable</a>[LBP_JT][LBP_JT]<code> [static]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Break action pair table.
<p>
This is a direct mapping of Table 2 of Unicode Standard Annex 14, Revision 22.
</div>
</div><p>
<a class="anchor" name="5f6f6df49c934134e8fb043ce6230931"></a><!-- doxytag: member="linebreak.c::lb_prop_index" ref="5f6f6df49c934134e8fb043ce6230931" args="[LINEBREAK_INDEX_SIZE]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structLineBreakPropertiesIndex.html">LineBreakPropertiesIndex</a> <a class="el" href="linebreak_8c.html#5f6f6df49c934134e8fb043ce6230931">lb_prop_index</a>[LINEBREAK_INDEX_SIZE]<code> [static]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Initial value:</b><div class="fragment"><pre class="fragment">
{
{ 0xFFFFFFFF, <a class="code" href="linebreakdata_8c.html#bbd8c6b6e4e1c8ad2da83f23f81ac29a" title="Default line breaking properties as from the Unicode Web site.">lb_prop_default</a> }
}
</pre></div>Second-level index to the line breaking properties.
<p>
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,457 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: linebreak.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>linebreak.h File Reference</h1>Header file for the line breaking algorithm.
<a href="#_details">More...</a>
<p>
<code>#include &lt;stddef.h&gt;</code><br>
<p>
<a href="linebreak_8h_source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8h.html#367d64258fd90864a467687cd1736b77">LINEBREAK_MUSTBREAK</a>&nbsp;&nbsp;&nbsp;0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Break is mandatory. <a href="#367d64258fd90864a467687cd1736b77"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8h.html#229f34b0b72ccb2e53d0936a1e61a363">LINEBREAK_ALLOWBREAK</a>&nbsp;&nbsp;&nbsp;1</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Break is allowed. <a href="#229f34b0b72ccb2e53d0936a1e61a363"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8h.html#dd176a107633817050bedf6eb4f491cc">LINEBREAK_NOBREAK</a>&nbsp;&nbsp;&nbsp;2</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">No break is possible. <a href="#dd176a107633817050bedf6eb4f491cc"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8h.html#5adf3d4831b89cb3e40e9bd31a73a39d">LINEBREAK_INSIDEACHAR</a>&nbsp;&nbsp;&nbsp;3</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A UTF-8/16 sequence is unfinished. <a href="#5adf3d4831b89cb3e40e9bd31a73a39d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8h.html#9d54c1b18d4fc526a66ef64d9de9c63a">is_line_breakable</a>&nbsp;&nbsp;&nbsp;is_breakable</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Replacement form for the deprecated function <a class="el" href="linebreak_8h.html#22abef1024a6392cf2bd2281fc1bd151" title="Tells whether a line break can occur between two Unicode characters.">is_breakable</a>. <a href="#9d54c1b18d4fc526a66ef64d9de9c63a"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8h.html#6103b2105588f239c593e779e605038a">utf8_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Type for UTF-8 data points. <a href="#6103b2105588f239c593e779e605038a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef unsigned short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8h.html#4dce96cad338d9281612277b2d80950c">utf16_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Type for UTF-16 data points. <a href="#4dce96cad338d9281612277b2d80950c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Type for UTF-32 data points. <a href="#4f775bae0642c213be2c526018283c25"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8h.html#57c2b88b7e1277cbba23cfffbc782c4f">init_linebreak</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes the second-level index to the line breaking properties. <a href="#57c2b88b7e1277cbba23cfffbc782c4f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8h.html#22abef1024a6392cf2bd2281fc1bd151">is_breakable</a> (<a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> char1, <a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> char2, const char *lang)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tells whether a line break can occur between two Unicode characters. <a href="#22abef1024a6392cf2bd2281fc1bd151"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8h.html#b426e9cf68117faf583a0ed54742cb28">set_linebreaks_utf8</a> (const <a class="el" href="linebreak_8h.html#6103b2105588f239c593e779e605038a">utf8_t</a> *s, size_t len, const char *lang, char *brks)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the line breaking information for a UTF-8 input string. <a href="#b426e9cf68117faf583a0ed54742cb28"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8h.html#1d56bce2d32cd986052172638cec43c8">set_linebreaks_utf16</a> (const <a class="el" href="linebreak_8h.html#4dce96cad338d9281612277b2d80950c">utf16_t</a> *s, size_t len, const char *lang, char *brks)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the line breaking information for a UTF-16 input string. <a href="#1d56bce2d32cd986052172638cec43c8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreak_8h.html#9fdce33b4ded9d586888c16228ae9e1f">set_linebreaks_utf32</a> (const <a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> *s, size_t len, const char *lang, char *brks)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the line breaking information for a UTF-32 input string. <a href="#9fdce33b4ded9d586888c16228ae9e1f"></a><br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
Header file for the line breaking algorithm.
<p>
<dl class="version" compact><dt><b>Version:</b></dt><dd>1.2, 2009/05/03 </dd></dl>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Wu Yongwei </dd></dl>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="9d54c1b18d4fc526a66ef64d9de9c63a"></a><!-- doxytag: member="linebreak.h::is_line_breakable" ref="9d54c1b18d4fc526a66ef64d9de9c63a" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define is_line_breakable&nbsp;&nbsp;&nbsp;is_breakable </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Replacement form for the deprecated function <a class="el" href="linebreak_8h.html#22abef1024a6392cf2bd2281fc1bd151" title="Tells whether a line break can occur between two Unicode characters.">is_breakable</a>.
<p>
Please use the macro for the present moment, before the function is renamed. <p>
This is a wrapper function to expose a simple interface. Generally speaking, it is better to use <a class="el" href="linebreak_8h.html#9fdce33b4ded9d586888c16228ae9e1f" title="Sets the line breaking information for a UTF-32 input string.">set_linebreaks_utf32</a> instead, since complicated cases involving combining marks, spaces, etc. cannot be correctly processed.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>char1</em>&nbsp;</td><td>the first Unicode character </td></tr>
<tr><td valign="top"></td><td valign="top"><em>char2</em>&nbsp;</td><td>the second Unicode character </td></tr>
<tr><td valign="top"></td><td valign="top"><em>lang</em>&nbsp;</td><td>language of the input </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>one of <a class="el" href="linebreak_8h.html#367d64258fd90864a467687cd1736b77" title="Break is mandatory.">LINEBREAK_MUSTBREAK</a>, <a class="el" href="linebreak_8h.html#229f34b0b72ccb2e53d0936a1e61a363" title="Break is allowed.">LINEBREAK_ALLOWBREAK</a>, <a class="el" href="linebreak_8h.html#dd176a107633817050bedf6eb4f491cc" title="No break is possible.">LINEBREAK_NOBREAK</a>, or <a class="el" href="linebreak_8h.html#5adf3d4831b89cb3e40e9bd31a73a39d" title="A UTF-8/16 sequence is unfinished.">LINEBREAK_INSIDEACHAR</a> </dd></dl>
</div>
</div><p>
<a class="anchor" name="229f34b0b72ccb2e53d0936a1e61a363"></a><!-- doxytag: member="linebreak.h::LINEBREAK_ALLOWBREAK" ref="229f34b0b72ccb2e53d0936a1e61a363" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LINEBREAK_ALLOWBREAK&nbsp;&nbsp;&nbsp;1 </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Break is allowed.
<p>
</div>
</div><p>
<a class="anchor" name="5adf3d4831b89cb3e40e9bd31a73a39d"></a><!-- doxytag: member="linebreak.h::LINEBREAK_INSIDEACHAR" ref="5adf3d4831b89cb3e40e9bd31a73a39d" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LINEBREAK_INSIDEACHAR&nbsp;&nbsp;&nbsp;3 </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
A UTF-8/16 sequence is unfinished.
<p>
</div>
</div><p>
<a class="anchor" name="367d64258fd90864a467687cd1736b77"></a><!-- doxytag: member="linebreak.h::LINEBREAK_MUSTBREAK" ref="367d64258fd90864a467687cd1736b77" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LINEBREAK_MUSTBREAK&nbsp;&nbsp;&nbsp;0 </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Break is mandatory.
<p>
</div>
</div><p>
<a class="anchor" name="dd176a107633817050bedf6eb4f491cc"></a><!-- doxytag: member="linebreak.h::LINEBREAK_NOBREAK" ref="dd176a107633817050bedf6eb4f491cc" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LINEBREAK_NOBREAK&nbsp;&nbsp;&nbsp;2 </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
No break is possible.
<p>
</div>
</div><p>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="4dce96cad338d9281612277b2d80950c"></a><!-- doxytag: member="linebreak.h::utf16_t" ref="4dce96cad338d9281612277b2d80950c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef unsigned short <a class="el" href="linebreak_8h.html#4dce96cad338d9281612277b2d80950c">utf16_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Type for UTF-16 data points.
<p>
</div>
</div><p>
<a class="anchor" name="4f775bae0642c213be2c526018283c25"></a><!-- doxytag: member="linebreak.h::utf32_t" ref="4f775bae0642c213be2c526018283c25" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef unsigned int <a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Type for UTF-32 data points.
<p>
</div>
</div><p>
<a class="anchor" name="6103b2105588f239c593e779e605038a"></a><!-- doxytag: member="linebreak.h::utf8_t" ref="6103b2105588f239c593e779e605038a" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef unsigned char <a class="el" href="linebreak_8h.html#6103b2105588f239c593e779e605038a">utf8_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Type for UTF-8 data points.
<p>
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="57c2b88b7e1277cbba23cfffbc782c4f"></a><!-- doxytag: member="linebreak.h::init_linebreak" ref="57c2b88b7e1277cbba23cfffbc782c4f" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void init_linebreak </td>
<td>(</td>
<td class="paramtype">void&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Initializes the second-level index to the line breaking properties.
<p>
If it is not called, the performance of <a class="el" href="linebreak_8c.html#41ec5a32a31d007d60ea57caa38a2f3e" title="Gets the line breaking class of a character for a specific language.">get_char_lb_class_lang</a> (and thus the main functionality) can be pretty bad, especially for big code points like those of Chinese.
</div>
</div><p>
<a class="anchor" name="22abef1024a6392cf2bd2281fc1bd151"></a><!-- doxytag: member="linebreak.h::is_breakable" ref="22abef1024a6392cf2bd2281fc1bd151" args="(utf32_t char1, utf32_t char2, const char *lang)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int is_breakable </td>
<td>(</td>
<td class="paramtype"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td>
<td class="paramname"> <em>char1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td>
<td class="paramname"> <em>char2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>lang</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Tells whether a line break can occur between two Unicode characters.
<p>
This is a wrapper function to expose a simple interface. Generally speaking, it is better to use <a class="el" href="linebreak_8h.html#9fdce33b4ded9d586888c16228ae9e1f" title="Sets the line breaking information for a UTF-32 input string.">set_linebreaks_utf32</a> instead, since complicated cases involving combining marks, spaces, etc. cannot be correctly processed.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>char1</em>&nbsp;</td><td>the first Unicode character </td></tr>
<tr><td valign="top"></td><td valign="top"><em>char2</em>&nbsp;</td><td>the second Unicode character </td></tr>
<tr><td valign="top"></td><td valign="top"><em>lang</em>&nbsp;</td><td>language of the input </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>one of <a class="el" href="linebreak_8h.html#367d64258fd90864a467687cd1736b77" title="Break is mandatory.">LINEBREAK_MUSTBREAK</a>, <a class="el" href="linebreak_8h.html#229f34b0b72ccb2e53d0936a1e61a363" title="Break is allowed.">LINEBREAK_ALLOWBREAK</a>, <a class="el" href="linebreak_8h.html#dd176a107633817050bedf6eb4f491cc" title="No break is possible.">LINEBREAK_NOBREAK</a>, or <a class="el" href="linebreak_8h.html#5adf3d4831b89cb3e40e9bd31a73a39d" title="A UTF-8/16 sequence is unfinished.">LINEBREAK_INSIDEACHAR</a></dd></dl>
<dl class="deprecated" compact><dt><b><a class="el" href="deprecated.html#_deprecated000004">Deprecated:</a></b></dt><dd>This function will be renamed to <a class="el" href="linebreak_8h.html#9d54c1b18d4fc526a66ef64d9de9c63a" title="Replacement form for the deprecated function is_breakable.">is_line_breakable</a> in the future. The name is already defined as a macro&mdash;please use it. </dd></dl>
</div>
</div><p>
<a class="anchor" name="1d56bce2d32cd986052172638cec43c8"></a><!-- doxytag: member="linebreak.h::set_linebreaks_utf16" ref="1d56bce2d32cd986052172638cec43c8" args="(const utf16_t *s, size_t len, const char *lang, char *brks)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void set_linebreaks_utf16 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="linebreak_8h.html#4dce96cad338d9281612277b2d80950c">utf16_t</a> *&nbsp;</td>
<td class="paramname"> <em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&nbsp;</td>
<td class="paramname"> <em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>lang</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>brks</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Sets the line breaking information for a UTF-16 input string.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>s</em>&nbsp;</td><td>input UTF-16 string </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>len</em>&nbsp;</td><td>length of the input </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>lang</em>&nbsp;</td><td>language of the input </td></tr>
<tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>brks</em>&nbsp;</td><td>pointer to the output breaking data, containing <a class="el" href="linebreak_8h.html#367d64258fd90864a467687cd1736b77" title="Break is mandatory.">LINEBREAK_MUSTBREAK</a>, <a class="el" href="linebreak_8h.html#229f34b0b72ccb2e53d0936a1e61a363" title="Break is allowed.">LINEBREAK_ALLOWBREAK</a>, <a class="el" href="linebreak_8h.html#dd176a107633817050bedf6eb4f491cc" title="No break is possible.">LINEBREAK_NOBREAK</a>, or <a class="el" href="linebreak_8h.html#5adf3d4831b89cb3e40e9bd31a73a39d" title="A UTF-8/16 sequence is unfinished.">LINEBREAK_INSIDEACHAR</a> </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="9fdce33b4ded9d586888c16228ae9e1f"></a><!-- doxytag: member="linebreak.h::set_linebreaks_utf32" ref="9fdce33b4ded9d586888c16228ae9e1f" args="(const utf32_t *s, size_t len, const char *lang, char *brks)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void set_linebreaks_utf32 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> *&nbsp;</td>
<td class="paramname"> <em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&nbsp;</td>
<td class="paramname"> <em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>lang</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>brks</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Sets the line breaking information for a UTF-32 input string.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>s</em>&nbsp;</td><td>input UTF-32 string </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>len</em>&nbsp;</td><td>length of the input </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>lang</em>&nbsp;</td><td>language of the input </td></tr>
<tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>brks</em>&nbsp;</td><td>pointer to the output breaking data, containing <a class="el" href="linebreak_8h.html#367d64258fd90864a467687cd1736b77" title="Break is mandatory.">LINEBREAK_MUSTBREAK</a>, <a class="el" href="linebreak_8h.html#229f34b0b72ccb2e53d0936a1e61a363" title="Break is allowed.">LINEBREAK_ALLOWBREAK</a>, <a class="el" href="linebreak_8h.html#dd176a107633817050bedf6eb4f491cc" title="No break is possible.">LINEBREAK_NOBREAK</a>, or <a class="el" href="linebreak_8h.html#5adf3d4831b89cb3e40e9bd31a73a39d" title="A UTF-8/16 sequence is unfinished.">LINEBREAK_INSIDEACHAR</a> </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="b426e9cf68117faf583a0ed54742cb28"></a><!-- doxytag: member="linebreak.h::set_linebreaks_utf8" ref="b426e9cf68117faf583a0ed54742cb28" args="(const utf8_t *s, size_t len, const char *lang, char *brks)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void set_linebreaks_utf8 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="linebreak_8h.html#6103b2105588f239c593e779e605038a">utf8_t</a> *&nbsp;</td>
<td class="paramname"> <em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&nbsp;</td>
<td class="paramname"> <em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>lang</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>brks</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Sets the line breaking information for a UTF-8 input string.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>s</em>&nbsp;</td><td>input UTF-8 string </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>len</em>&nbsp;</td><td>length of the input </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>lang</em>&nbsp;</td><td>language of the input </td></tr>
<tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>brks</em>&nbsp;</td><td>pointer to the output breaking data, containing <a class="el" href="linebreak_8h.html#367d64258fd90864a467687cd1736b77" title="Break is mandatory.">LINEBREAK_MUSTBREAK</a>, <a class="el" href="linebreak_8h.html#229f34b0b72ccb2e53d0936a1e61a363" title="Break is allowed.">LINEBREAK_ALLOWBREAK</a>, <a class="el" href="linebreak_8h.html#dd176a107633817050bedf6eb4f491cc" title="No break is possible.">LINEBREAK_NOBREAK</a>, or <a class="el" href="linebreak_8h.html#5adf3d4831b89cb3e40e9bd31a73a39d" title="A UTF-8/16 sequence is unfinished.">LINEBREAK_INSIDEACHAR</a> </td></tr>
</table>
</dl>
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,108 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: linebreak.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<h1>linebreak.h</h1><a href="linebreak_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* vim: set tabstop=4 shiftwidth=4: */</span>
<a name="l00002"></a>00002
<a name="l00003"></a>00003 <span class="comment">/*</span>
<a name="l00004"></a>00004 <span class="comment"> * Line breaking in a Unicode sequence. Designed to be used in a</span>
<a name="l00005"></a>00005 <span class="comment"> * generic text renderer.</span>
<a name="l00006"></a>00006 <span class="comment"> *</span>
<a name="l00007"></a>00007 <span class="comment"> * Copyright (C) 2008-2009 Wu Yongwei &lt;wuyongwei at gmail dot com&gt;</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * This software is provided 'as-is', without any express or implied</span>
<a name="l00010"></a>00010 <span class="comment"> * warranty. In no event will the author be held liable for any damages</span>
<a name="l00011"></a>00011 <span class="comment"> * arising from the use of this software.</span>
<a name="l00012"></a>00012 <span class="comment"> *</span>
<a name="l00013"></a>00013 <span class="comment"> * Permission is granted to anyone to use this software for any purpose,</span>
<a name="l00014"></a>00014 <span class="comment"> * including commercial applications, and to alter it and redistribute</span>
<a name="l00015"></a>00015 <span class="comment"> * it freely, subject to the following restrictions:</span>
<a name="l00016"></a>00016 <span class="comment"> *</span>
<a name="l00017"></a>00017 <span class="comment"> * 1. The origin of this software must not be misrepresented; you must</span>
<a name="l00018"></a>00018 <span class="comment"> * not claim that you wrote the original software. If you use this</span>
<a name="l00019"></a>00019 <span class="comment"> * software in a product, an acknowledgement in the product</span>
<a name="l00020"></a>00020 <span class="comment"> * documentation would be appreciated but is not required.</span>
<a name="l00021"></a>00021 <span class="comment"> * 2. Altered source versions must be plainly marked as such, and must</span>
<a name="l00022"></a>00022 <span class="comment"> * not be misrepresented as being the original software.</span>
<a name="l00023"></a>00023 <span class="comment"> * 3. This notice may not be removed or altered from any source</span>
<a name="l00024"></a>00024 <span class="comment"> * distribution.</span>
<a name="l00025"></a>00025 <span class="comment"> *</span>
<a name="l00026"></a>00026 <span class="comment"> * The main reference is Unicode Standard Annex 14 (UAX #14):</span>
<a name="l00027"></a>00027 <span class="comment"> * &lt;URL:http://www.unicode.org/reports/tr14/&gt;</span>
<a name="l00028"></a>00028 <span class="comment"> *</span>
<a name="l00029"></a>00029 <span class="comment"> * When this library was designed, this annex was at Revision 19, for</span>
<a name="l00030"></a>00030 <span class="comment"> * Unicode 5.0.0:</span>
<a name="l00031"></a>00031 <span class="comment"> * &lt;URL:http://www.unicode.org/reports/tr14/tr14-19.html&gt;</span>
<a name="l00032"></a>00032 <span class="comment"> *</span>
<a name="l00033"></a>00033 <span class="comment"> * This library has been updated according to Revision 22, for</span>
<a name="l00034"></a>00034 <span class="comment"> * Unicode 5.1.0:</span>
<a name="l00035"></a>00035 <span class="comment"> * &lt;URL:http://www.unicode.org/reports/tr14/tr14-22.html&gt;</span>
<a name="l00036"></a>00036 <span class="comment"> *</span>
<a name="l00037"></a>00037 <span class="comment"> * The Unicode Terms of Use are available at</span>
<a name="l00038"></a>00038 <span class="comment"> * &lt;URL:http://www.unicode.org/copyright.html&gt;</span>
<a name="l00039"></a>00039 <span class="comment"> */</span>
<a name="l00040"></a>00040
<a name="l00050"></a>00050 <span class="preprocessor">#ifndef LINEBREAK_H</span>
<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#define LINEBREAK_H</span>
<a name="l00052"></a>00052 <span class="preprocessor"></span>
<a name="l00053"></a>00053 <span class="preprocessor">#include &lt;stddef.h&gt;</span>
<a name="l00054"></a>00054
<a name="l00055"></a>00055 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
<a name="l00057"></a>00057 <span class="preprocessor">#endif</span>
<a name="l00058"></a>00058 <span class="preprocessor"></span>
<a name="l00059"></a>00059 <span class="preprocessor">#ifndef LINEBREAK_UTF_TYPES_DEFINED</span>
<a name="l00060"></a>00060 <span class="preprocessor"></span><span class="preprocessor">#define LINEBREAK_UTF_TYPES_DEFINED</span>
<a name="l00061"></a><a class="code" href="linebreak_8h.html#6103b2105588f239c593e779e605038a">00061</a> <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="linebreak_8h.html#6103b2105588f239c593e779e605038a" title="Type for UTF-8 data points.">utf8_t</a>;
<a name="l00062"></a><a class="code" href="linebreak_8h.html#4dce96cad338d9281612277b2d80950c">00062</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="linebreak_8h.html#4dce96cad338d9281612277b2d80950c" title="Type for UTF-16 data points.">utf16_t</a>;
<a name="l00063"></a><a class="code" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">00063</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25" title="Type for UTF-32 data points.">utf32_t</a>;
<a name="l00064"></a>00064 <span class="preprocessor">#endif</span>
<a name="l00065"></a>00065 <span class="preprocessor"></span>
<a name="l00066"></a><a class="code" href="linebreak_8h.html#367d64258fd90864a467687cd1736b77">00066</a> <span class="preprocessor">#define LINEBREAK_MUSTBREAK 0 </span>
<a name="l00067"></a><a class="code" href="linebreak_8h.html#229f34b0b72ccb2e53d0936a1e61a363">00067</a> <span class="preprocessor">#define LINEBREAK_ALLOWBREAK 1 </span>
<a name="l00068"></a><a class="code" href="linebreak_8h.html#dd176a107633817050bedf6eb4f491cc">00068</a> <span class="preprocessor">#define LINEBREAK_NOBREAK 2 </span>
<a name="l00069"></a><a class="code" href="linebreak_8h.html#5adf3d4831b89cb3e40e9bd31a73a39d">00069</a> <span class="preprocessor">#define LINEBREAK_INSIDEACHAR 3 </span>
<a name="l00077"></a>00077 <span class="preprocessor">void init_linebreak(void);</span>
<a name="l00078"></a>00078 <span class="preprocessor"></span>
<a name="l00079"></a>00079 <span class="keywordtype">int</span> <a class="code" href="linebreak_8c.html#22abef1024a6392cf2bd2281fc1bd151" title="Tells whether a line break can occur between two Unicode characters.">is_breakable</a>(utf32_t char1, utf32_t char2, <span class="keyword">const</span> <span class="keywordtype">char</span>* lang);
<a name="l00080"></a>00080
<a name="l00091"></a>00091 <span class="keywordtype">void</span> <a class="code" href="linebreak_8c.html#b426e9cf68117faf583a0ed54742cb28" title="Sets the line breaking information for a UTF-8 input string.">set_linebreaks_utf8</a>(
<a name="l00092"></a>00092 <span class="keyword">const</span> utf8_t *s, <span class="keywordtype">size_t</span> len, <span class="keyword">const</span> <span class="keywordtype">char</span>* lang, <span class="keywordtype">char</span> *brks);
<a name="l00093"></a>00093
<a name="l00104"></a>00104 <span class="keywordtype">void</span> <a class="code" href="linebreak_8c.html#1d56bce2d32cd986052172638cec43c8" title="Sets the line breaking information for a UTF-16 input string.">set_linebreaks_utf16</a>(
<a name="l00105"></a>00105 <span class="keyword">const</span> utf16_t *s, <span class="keywordtype">size_t</span> len, <span class="keyword">const</span> <span class="keywordtype">char</span>* lang, <span class="keywordtype">char</span> *brks);
<a name="l00106"></a>00106
<a name="l00117"></a>00117 <span class="keywordtype">void</span> <a class="code" href="linebreak_8c.html#9fdce33b4ded9d586888c16228ae9e1f" title="Sets the line breaking information for a UTF-32 input string.">set_linebreaks_utf32</a>(
<a name="l00118"></a>00118 <span class="keyword">const</span> utf32_t *s, <span class="keywordtype">size_t</span> len, <span class="keyword">const</span> <span class="keywordtype">char</span>* lang, <span class="keywordtype">char</span> *brks);
<a name="l00119"></a>00119
<a name="l00134"></a><a class="code" href="linebreak_8h.html#9d54c1b18d4fc526a66ef64d9de9c63a">00134</a> <span class="preprocessor">#define is_line_breakable is_breakable</span>
<a name="l00135"></a>00135 <span class="preprocessor"></span>
<a name="l00136"></a>00136 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00137"></a>00137 <span class="preprocessor"></span>}
<a name="l00138"></a>00138 <span class="preprocessor">#endif</span>
<a name="l00139"></a>00139 <span class="preprocessor"></span>
<a name="l00140"></a>00140 <span class="preprocessor">#endif </span><span class="comment">/* LINEBREAK_H */</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,57 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: linebreakdata.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>linebreakdata.c File Reference</h1><code>#include &quot;<a class="el" href="linebreak_8h_source.html">linebreak.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="linebreakdef_8h_source.html">linebreakdef.h</a>&quot;</code><br>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdata_8c.html#bbd8c6b6e4e1c8ad2da83f23f81ac29a">lb_prop_default</a> []</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default line breaking properties as from the Unicode Web site. <a href="#bbd8c6b6e4e1c8ad2da83f23f81ac29a"></a><br></td></tr>
</table>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="bbd8c6b6e4e1c8ad2da83f23f81ac29a"></a><!-- doxytag: member="linebreakdata.c::lb_prop_default" ref="bbd8c6b6e4e1c8ad2da83f23f81ac29a" args="[]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a> <a class="el" href="linebreakdef_8h.html#bbd8c6b6e4e1c8ad2da83f23f81ac29a">lb_prop_default</a>[] </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Default line breaking properties as from the Unicode Web site.
<p>
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,242 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: linebreakdef.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>linebreakdef.c File Reference</h1>Definition of language-specific data.
<a href="#_details">More...</a>
<p>
<code>#include &quot;<a class="el" href="linebreak_8h_source.html">linebreak.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="linebreakdef_8h_source.html">linebreakdef.h</a>&quot;</code><br>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8c.html#cb15b3309e7e1c7a48da9535c4e2855f">lb_prop_English</a> []</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">English-specifc data over the default Unicode rules. <a href="#cb15b3309e7e1c7a48da9535c4e2855f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8c.html#c39e3f65a289864edb8a38a201481627">lb_prop_German</a> []</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">German-specifc data over the default Unicode rules. <a href="#c39e3f65a289864edb8a38a201481627"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8c.html#41ee5277b95d453efdfb0e0242e1cb5f">lb_prop_Spanish</a> []</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Spanish-specifc data over the default Unicode rules. <a href="#41ee5277b95d453efdfb0e0242e1cb5f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8c.html#f75c60d3b0f882032e6932da25b9c9fa">lb_prop_French</a> []</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">French-specifc data over the default Unicode rules. <a href="#f75c60d3b0f882032e6932da25b9c9fa"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8c.html#980ede377c1ded0d24a58fb429f237f4">lb_prop_Russian</a> []</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Russian-specifc data over the default Unicode rules. <a href="#980ede377c1ded0d24a58fb429f237f4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8c.html#945fbc26db32e1f4fbce4f6e9ae70189">lb_prop_Chinese</a> []</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Chinese-specifc data over the default Unicode rules. <a href="#945fbc26db32e1f4fbce4f6e9ae70189"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structLineBreakPropertiesLang.html">LineBreakPropertiesLang</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8c.html#82efdfa4115828df9158e183f1a9983d">lb_prop_lang_map</a> []</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Association data of language-specific line breaking properties with language names. <a href="#82efdfa4115828df9158e183f1a9983d"></a><br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
Definition of language-specific data.
<p>
<dl class="version" compact><dt><b>Version:</b></dt><dd>1.2, 2009/04/29 </dd></dl>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Wu Yongwei </dd></dl>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="945fbc26db32e1f4fbce4f6e9ae70189"></a><!-- doxytag: member="linebreakdef.c::lb_prop_Chinese" ref="945fbc26db32e1f4fbce4f6e9ae70189" args="[]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a> <a class="el" href="linebreakdef_8c.html#945fbc26db32e1f4fbce4f6e9ae70189">lb_prop_Chinese</a>[]<code> [static]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
{ 0x2018, 0x2018, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a> },
{ 0x2019, 0x2019, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a> },
{ 0x201C, 0x201C, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a> },
{ 0x201D, 0x201D, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a> },
{ 0, 0, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070926181b709c80b3b50e929c2a151b723" title="Undefined.">LBP_Undefined</a> }
}
</pre></div>Chinese-specifc data over the default Unicode rules.
<p>
</div>
</div><p>
<a class="anchor" name="cb15b3309e7e1c7a48da9535c4e2855f"></a><!-- doxytag: member="linebreakdef.c::lb_prop_English" ref="cb15b3309e7e1c7a48da9535c4e2855f" args="[]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a> <a class="el" href="linebreakdef_8c.html#cb15b3309e7e1c7a48da9535c4e2855f">lb_prop_English</a>[]<code> [static]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
{ 0x2018, 0x2018, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a> },
{ 0x201C, 0x201C, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a> },
{ 0x201D, 0x201D, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a> },
{ 0, 0, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070926181b709c80b3b50e929c2a151b723" title="Undefined.">LBP_Undefined</a> }
}
</pre></div>English-specifc data over the default Unicode rules.
<p>
</div>
</div><p>
<a class="anchor" name="f75c60d3b0f882032e6932da25b9c9fa"></a><!-- doxytag: member="linebreakdef.c::lb_prop_French" ref="f75c60d3b0f882032e6932da25b9c9fa" args="[]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a> <a class="el" href="linebreakdef_8c.html#f75c60d3b0f882032e6932da25b9c9fa">lb_prop_French</a>[]<code> [static]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
{ 0x00AB, 0x00AB, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a> },
{ 0x00BB, 0x00BB, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a> },
{ 0x2018, 0x2018, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a> },
{ 0x201C, 0x201C, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a> },
{ 0x201D, 0x201D, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a> },
{ 0x2039, 0x2039, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a> },
{ 0x203A, 0x203A, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a> },
{ 0, 0, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070926181b709c80b3b50e929c2a151b723" title="Undefined.">LBP_Undefined</a> }
}
</pre></div>French-specifc data over the default Unicode rules.
<p>
</div>
</div><p>
<a class="anchor" name="c39e3f65a289864edb8a38a201481627"></a><!-- doxytag: member="linebreakdef.c::lb_prop_German" ref="c39e3f65a289864edb8a38a201481627" args="[]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a> <a class="el" href="linebreakdef_8c.html#c39e3f65a289864edb8a38a201481627">lb_prop_German</a>[]<code> [static]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
{ 0x00AB, 0x00AB, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a> },
{ 0x00BB, 0x00BB, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a> },
{ 0x2018, 0x2018, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a> },
{ 0x201C, 0x201C, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a> },
{ 0x2039, 0x2039, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a> },
{ 0x203A, 0x203A, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a> },
{ 0, 0, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070926181b709c80b3b50e929c2a151b723" title="Undefined.">LBP_Undefined</a> }
}
</pre></div>German-specifc data over the default Unicode rules.
<p>
</div>
</div><p>
<a class="anchor" name="82efdfa4115828df9158e183f1a9983d"></a><!-- doxytag: member="linebreakdef.c::lb_prop_lang_map" ref="82efdfa4115828df9158e183f1a9983d" args="[]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structLineBreakPropertiesLang.html">LineBreakPropertiesLang</a> <a class="el" href="linebreakdef_8h.html#82efdfa4115828df9158e183f1a9983d">lb_prop_lang_map</a>[] </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
{ <span class="stringliteral">"en"</span>, 2, <a class="code" href="linebreakdef_8c.html#cb15b3309e7e1c7a48da9535c4e2855f" title="English-specifc data over the default Unicode rules.">lb_prop_English</a> },
{ <span class="stringliteral">"de"</span>, 2, <a class="code" href="linebreakdef_8c.html#c39e3f65a289864edb8a38a201481627" title="German-specifc data over the default Unicode rules.">lb_prop_German</a> },
{ <span class="stringliteral">"es"</span>, 2, <a class="code" href="linebreakdef_8c.html#41ee5277b95d453efdfb0e0242e1cb5f" title="Spanish-specifc data over the default Unicode rules.">lb_prop_Spanish</a> },
{ <span class="stringliteral">"fr"</span>, 2, <a class="code" href="linebreakdef_8c.html#f75c60d3b0f882032e6932da25b9c9fa" title="French-specifc data over the default Unicode rules.">lb_prop_French</a> },
{ <span class="stringliteral">"ru"</span>, 2, <a class="code" href="linebreakdef_8c.html#980ede377c1ded0d24a58fb429f237f4" title="Russian-specifc data over the default Unicode rules.">lb_prop_Russian</a> },
{ <span class="stringliteral">"zh"</span>, 2, <a class="code" href="linebreakdef_8c.html#945fbc26db32e1f4fbce4f6e9ae70189" title="Chinese-specifc data over the default Unicode rules.">lb_prop_Chinese</a> },
{ NULL, 0, NULL }
}
</pre></div>Association data of language-specific line breaking properties with language names.
<p>
This is the definition for the static data in this file. If you want more flexibility, or do not need the data here, you may want to redefine <em>lb_prop_lang_map</em> in your C source file.
</div>
</div><p>
<a class="anchor" name="980ede377c1ded0d24a58fb429f237f4"></a><!-- doxytag: member="linebreakdef.c::lb_prop_Russian" ref="980ede377c1ded0d24a58fb429f237f4" args="[]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a> <a class="el" href="linebreakdef_8c.html#980ede377c1ded0d24a58fb429f237f4">lb_prop_Russian</a>[]<code> [static]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
{ 0x00AB, 0x00AB, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a> },
{ 0x00BB, 0x00BB, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a> },
{ 0x201C, 0x201C, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a> },
{ 0, 0, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070926181b709c80b3b50e929c2a151b723" title="Undefined.">LBP_Undefined</a> }
}
</pre></div>Russian-specifc data over the default Unicode rules.
<p>
</div>
</div><p>
<a class="anchor" name="41ee5277b95d453efdfb0e0242e1cb5f"></a><!-- doxytag: member="linebreakdef.c::lb_prop_Spanish" ref="41ee5277b95d453efdfb0e0242e1cb5f" args="[]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a> <a class="el" href="linebreakdef_8c.html#41ee5277b95d453efdfb0e0242e1cb5f">lb_prop_Spanish</a>[]<code> [static]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
{ 0x00AB, 0x00AB, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a> },
{ 0x00BB, 0x00BB, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a> },
{ 0x2018, 0x2018, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a> },
{ 0x201C, 0x201C, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a> },
{ 0x201D, 0x201D, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a> },
{ 0x2039, 0x2039, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a> },
{ 0x203A, 0x203A, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a> },
{ 0, 0, <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070926181b709c80b3b50e929c2a151b723" title="Undefined.">LBP_Undefined</a> }
}
</pre></div>Spanish-specifc data over the default Unicode rules.
<p>
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,497 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: linebreakdef.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>linebreakdef.h File Reference</h1>Definitions of internal data structures, declarations of global variables, and function prototypes for the line breaking algorithm.
<a href="#_details">More...</a>
<p>
<p>
<a href="linebreakdef_8h_source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structLineBreakProperties.html">LineBreakProperties</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Struct for entries of line break properties. <a href="structLineBreakProperties.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structLineBreakPropertiesLang.html">LineBreakPropertiesLang</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Struct for association of language-specific line breaking properties with language names. <a href="structLineBreakPropertiesLang.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8h.html#adbbc7b02d94a4c18646813ac8d7dec1">EOS</a>&nbsp;&nbsp;&nbsp;0xFFFF</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constant value to mark the end of string. <a href="#adbbc7b02d94a4c18646813ac8d7dec1"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8h.html#d76de249e1f8334f318f9ee97ccc77c3">get_next_char_t</a> )(const void *, size_t, size_t *)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Abstract function interface for <a class="el" href="linebreakdef_8h.html#d6e67ab4880e304d6ac730d545027a7f" title="Gets the next Unicode character in a UTF-8 sequence.">get_next_char_utf8</a>, <a class="el" href="linebreakdef_8h.html#1358bfc18e5c58f3bf86d41da9915964" title="Gets the next Unicode character in a UTF-16 sequence.">get_next_char_utf16</a>, and <a class="el" href="linebreakdef_8h.html#b436dc6eadd1cfe258159ac671798653" title="Gets the next Unicode character in a UTF-32 sequence.">get_next_char_utf32</a>. <a href="#d76de249e1f8334f318f9ee97ccc77c3"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">LineBreakClass</a> { <br>
&nbsp;&nbsp;<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070926181b709c80b3b50e929c2a151b723">LBP_Undefined</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3">LBP_OP</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d">LBP_CL</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070c39763b5b0557dddcec94a381ef30f4e">LBP_QU</a>,
<br>
&nbsp;&nbsp;<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040700550bdd01f16132d2897fc5000f58df7">LBP_GL</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040701cbbcff8d381e12574aec3679990e3f0">LBP_NS</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070694a3a0a4cf1649ca938e4cb8064f3b0">LBP_EX</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407047f9a3d5b87cd350905f552ffa3da097">LBP_SY</a>,
<br>
&nbsp;&nbsp;<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407098ddb858ed33918bce8784a60c36712e">LBP_IS</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070985024038b0a61a40df014013daa7d57">LBP_PR</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070c7d5be8568020554e49bb4c01ca1fdba">LBP_PO</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707d6ec3c06dfdee326bca876365e5be28">LBP_NU</a>,
<br>
&nbsp;&nbsp;<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407099a0353e48d4453d0acf01da43655281">LBP_AL</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070277e68f51ab2a52445f0e7e219b8bd55">LBP_ID</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070e5285b1bd6bf868b1655b8ad3cb9cc73">LBP_IN</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707cf4d61e77f0d1f8974f1b21379d2883">LBP_HY</a>,
<br>
&nbsp;&nbsp;<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040708487a95ef080e81a013162e107a4bc74">LBP_BA</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407098dbcbc080626fbc0ff7d4f2b8b86d7d">LBP_BB</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407046fe18e486c79c3835a587fb15ad0c63">LBP_B2</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070a58613e52b70bda371b48ca2d89d85ee">LBP_ZW</a>,
<br>
&nbsp;&nbsp;<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070de6aff21f968efc84109e502c5c469c1">LBP_CM</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407000085861924d3758649cfd7dc0ec3daa">LBP_WJ</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407087a5464b708121503da98654e02c2cfc">LBP_H2</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070e898c79c281f9d12c4adfa12834f4380">LBP_H3</a>,
<br>
&nbsp;&nbsp;<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040702cb194fd3b6e0295a134ad735f8f75eb">LBP_JL</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707759e3988158319f9efe87e322804cd8">LBP_JV</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707851519f0dac4f922b4144315bb711bf">LBP_JT</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070c9dcacac1d71f0f8ca7bbfe670620dd3">LBP_AI</a>,
<br>
&nbsp;&nbsp;<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707b0aae40955328f649ec66b23ecf1626">LBP_BK</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070485f9b3c86d8b6f800bba048f1bf47b1">LBP_CB</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040708f6991e8defca4aa9e6485dbb32628a2">LBP_CR</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070944522607828ef422c419633f68c8cab">LBP_LF</a>,
<br>
&nbsp;&nbsp;<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070cfefd6df8344cc5601ce7786aee51fcf">LBP_NL</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407038b102b238de030fe74906fb0fcfb769">LBP_SA</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070d6764678f5d80d86324a6f29c0561817">LBP_SG</a>,
<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707605e7c192d43e2ef0596e92446dfba4">LBP_SP</a>,
<br>
&nbsp;&nbsp;<a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407049450c35ed2a20d252e707322964bdf0">LBP_XX</a>
<br>
}</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Line break classes. <a href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8h.html#0e86da0f08579bd9bfeb437f5fab15fe">set_linebreaks</a> (const void *s, size_t len, const char *lang, char *brks, <a class="el" href="linebreakdef_8h.html#d76de249e1f8334f318f9ee97ccc77c3">get_next_char_t</a> get_next_char)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the line breaking information for a generic input string. <a href="#0e86da0f08579bd9bfeb437f5fab15fe"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8h.html#d6e67ab4880e304d6ac730d545027a7f">get_next_char_utf8</a> (const <a class="el" href="linebreak_8h.html#6103b2105588f239c593e779e605038a">utf8_t</a> *s, size_t len, size_t *ip)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the next Unicode character in a UTF-8 sequence. <a href="#d6e67ab4880e304d6ac730d545027a7f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8h.html#1358bfc18e5c58f3bf86d41da9915964">get_next_char_utf16</a> (const <a class="el" href="linebreak_8h.html#4dce96cad338d9281612277b2d80950c">utf16_t</a> *s, size_t len, size_t *ip)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the next Unicode character in a UTF-16 sequence. <a href="#1358bfc18e5c58f3bf86d41da9915964"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8h.html#b436dc6eadd1cfe258159ac671798653">get_next_char_utf32</a> (const <a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> *s, size_t len, size_t *ip)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the next Unicode character in a UTF-32 sequence. <a href="#b436dc6eadd1cfe258159ac671798653"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8h.html#bbd8c6b6e4e1c8ad2da83f23f81ac29a">lb_prop_default</a> []</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default line breaking properties as from the Unicode Web site. <a href="#bbd8c6b6e4e1c8ad2da83f23f81ac29a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structLineBreakPropertiesLang.html">LineBreakPropertiesLang</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linebreakdef_8h.html#82efdfa4115828df9158e183f1a9983d">lb_prop_lang_map</a> []</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Association data of language-specific line breaking properties with language names. <a href="#82efdfa4115828df9158e183f1a9983d"></a><br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
Definitions of internal data structures, declarations of global variables, and function prototypes for the line breaking algorithm.
<p>
<dl class="version" compact><dt><b>Version:</b></dt><dd>1.2, 2009/05/03 </dd></dl>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Wu Yongwei </dd></dl>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="adbbc7b02d94a4c18646813ac8d7dec1"></a><!-- doxytag: member="linebreakdef.h::EOS" ref="adbbc7b02d94a4c18646813ac8d7dec1" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define EOS&nbsp;&nbsp;&nbsp;0xFFFF </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Constant value to mark the end of string.
<p>
It is not a valid Unicode character.
</div>
</div><p>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="d76de249e1f8334f318f9ee97ccc77c3"></a><!-- doxytag: member="linebreakdef.h::get_next_char_t" ref="d76de249e1f8334f318f9ee97ccc77c3" args=")(const void *, size_t, size_t *)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>(* <a class="el" href="linebreakdef_8h.html#d76de249e1f8334f318f9ee97ccc77c3">get_next_char_t</a>)(const void *, size_t, size_t *) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Abstract function interface for <a class="el" href="linebreakdef_8h.html#d6e67ab4880e304d6ac730d545027a7f" title="Gets the next Unicode character in a UTF-8 sequence.">get_next_char_utf8</a>, <a class="el" href="linebreakdef_8h.html#1358bfc18e5c58f3bf86d41da9915964" title="Gets the next Unicode character in a UTF-16 sequence.">get_next_char_utf16</a>, and <a class="el" href="linebreakdef_8h.html#b436dc6eadd1cfe258159ac671798653" title="Gets the next Unicode character in a UTF-32 sequence.">get_next_char_utf32</a>.
<p>
</div>
</div><p>
<hr><h2>Enumeration Type Documentation</h2>
<a class="anchor" name="884b6565d87a81bbf549980bbdd04070"></a><!-- doxytag: member="linebreakdef.h::LineBreakClass" ref="884b6565d87a81bbf549980bbdd04070" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">LineBreakClass</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Line break classes.
<p>
This is a direct mapping of Table 1 of Unicode Standard Annex 14, Revision 19. <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070926181b709c80b3b50e929c2a151b723"></a><!-- doxytag: member="LBP_Undefined" ref="884b6565d87a81bbf549980bbdd04070926181b709c80b3b50e929c2a151b723" args="" -->LBP_Undefined</em>&nbsp;</td><td>
Undefined. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3"></a><!-- doxytag: member="LBP_OP" ref="884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" args="" -->LBP_OP</em>&nbsp;</td><td>
Opening punctuation. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d"></a><!-- doxytag: member="LBP_CL" ref="884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" args="" -->LBP_CL</em>&nbsp;</td><td>
Closing punctuation. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070c39763b5b0557dddcec94a381ef30f4e"></a><!-- doxytag: member="LBP_QU" ref="884b6565d87a81bbf549980bbdd04070c39763b5b0557dddcec94a381ef30f4e" args="" -->LBP_QU</em>&nbsp;</td><td>
Ambiguous quotation. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd040700550bdd01f16132d2897fc5000f58df7"></a><!-- doxytag: member="LBP_GL" ref="884b6565d87a81bbf549980bbdd040700550bdd01f16132d2897fc5000f58df7" args="" -->LBP_GL</em>&nbsp;</td><td>
Glue. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd040701cbbcff8d381e12574aec3679990e3f0"></a><!-- doxytag: member="LBP_NS" ref="884b6565d87a81bbf549980bbdd040701cbbcff8d381e12574aec3679990e3f0" args="" -->LBP_NS</em>&nbsp;</td><td>
Non-starters. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070694a3a0a4cf1649ca938e4cb8064f3b0"></a><!-- doxytag: member="LBP_EX" ref="884b6565d87a81bbf549980bbdd04070694a3a0a4cf1649ca938e4cb8064f3b0" args="" -->LBP_EX</em>&nbsp;</td><td>
Exclamation/Interrogation. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd0407047f9a3d5b87cd350905f552ffa3da097"></a><!-- doxytag: member="LBP_SY" ref="884b6565d87a81bbf549980bbdd0407047f9a3d5b87cd350905f552ffa3da097" args="" -->LBP_SY</em>&nbsp;</td><td>
Symbols allowing break after. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd0407098ddb858ed33918bce8784a60c36712e"></a><!-- doxytag: member="LBP_IS" ref="884b6565d87a81bbf549980bbdd0407098ddb858ed33918bce8784a60c36712e" args="" -->LBP_IS</em>&nbsp;</td><td>
Infix separator. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070985024038b0a61a40df014013daa7d57"></a><!-- doxytag: member="LBP_PR" ref="884b6565d87a81bbf549980bbdd04070985024038b0a61a40df014013daa7d57" args="" -->LBP_PR</em>&nbsp;</td><td>
Prefix. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070c7d5be8568020554e49bb4c01ca1fdba"></a><!-- doxytag: member="LBP_PO" ref="884b6565d87a81bbf549980bbdd04070c7d5be8568020554e49bb4c01ca1fdba" args="" -->LBP_PO</em>&nbsp;</td><td>
Postfix. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd040707d6ec3c06dfdee326bca876365e5be28"></a><!-- doxytag: member="LBP_NU" ref="884b6565d87a81bbf549980bbdd040707d6ec3c06dfdee326bca876365e5be28" args="" -->LBP_NU</em>&nbsp;</td><td>
Numeric. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd0407099a0353e48d4453d0acf01da43655281"></a><!-- doxytag: member="LBP_AL" ref="884b6565d87a81bbf549980bbdd0407099a0353e48d4453d0acf01da43655281" args="" -->LBP_AL</em>&nbsp;</td><td>
Alphabetic. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070277e68f51ab2a52445f0e7e219b8bd55"></a><!-- doxytag: member="LBP_ID" ref="884b6565d87a81bbf549980bbdd04070277e68f51ab2a52445f0e7e219b8bd55" args="" -->LBP_ID</em>&nbsp;</td><td>
Ideographic. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070e5285b1bd6bf868b1655b8ad3cb9cc73"></a><!-- doxytag: member="LBP_IN" ref="884b6565d87a81bbf549980bbdd04070e5285b1bd6bf868b1655b8ad3cb9cc73" args="" -->LBP_IN</em>&nbsp;</td><td>
Inseparable characters. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd040707cf4d61e77f0d1f8974f1b21379d2883"></a><!-- doxytag: member="LBP_HY" ref="884b6565d87a81bbf549980bbdd040707cf4d61e77f0d1f8974f1b21379d2883" args="" -->LBP_HY</em>&nbsp;</td><td>
Hyphen. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd040708487a95ef080e81a013162e107a4bc74"></a><!-- doxytag: member="LBP_BA" ref="884b6565d87a81bbf549980bbdd040708487a95ef080e81a013162e107a4bc74" args="" -->LBP_BA</em>&nbsp;</td><td>
Break after. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd0407098dbcbc080626fbc0ff7d4f2b8b86d7d"></a><!-- doxytag: member="LBP_BB" ref="884b6565d87a81bbf549980bbdd0407098dbcbc080626fbc0ff7d4f2b8b86d7d" args="" -->LBP_BB</em>&nbsp;</td><td>
Break before. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd0407046fe18e486c79c3835a587fb15ad0c63"></a><!-- doxytag: member="LBP_B2" ref="884b6565d87a81bbf549980bbdd0407046fe18e486c79c3835a587fb15ad0c63" args="" -->LBP_B2</em>&nbsp;</td><td>
Break on either side (but not pair). </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070a58613e52b70bda371b48ca2d89d85ee"></a><!-- doxytag: member="LBP_ZW" ref="884b6565d87a81bbf549980bbdd04070a58613e52b70bda371b48ca2d89d85ee" args="" -->LBP_ZW</em>&nbsp;</td><td>
Zero-width space. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070de6aff21f968efc84109e502c5c469c1"></a><!-- doxytag: member="LBP_CM" ref="884b6565d87a81bbf549980bbdd04070de6aff21f968efc84109e502c5c469c1" args="" -->LBP_CM</em>&nbsp;</td><td>
Combining marks. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd0407000085861924d3758649cfd7dc0ec3daa"></a><!-- doxytag: member="LBP_WJ" ref="884b6565d87a81bbf549980bbdd0407000085861924d3758649cfd7dc0ec3daa" args="" -->LBP_WJ</em>&nbsp;</td><td>
Word joiner. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd0407087a5464b708121503da98654e02c2cfc"></a><!-- doxytag: member="LBP_H2" ref="884b6565d87a81bbf549980bbdd0407087a5464b708121503da98654e02c2cfc" args="" -->LBP_H2</em>&nbsp;</td><td>
Hangul LV. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070e898c79c281f9d12c4adfa12834f4380"></a><!-- doxytag: member="LBP_H3" ref="884b6565d87a81bbf549980bbdd04070e898c79c281f9d12c4adfa12834f4380" args="" -->LBP_H3</em>&nbsp;</td><td>
Hangul LVT. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd040702cb194fd3b6e0295a134ad735f8f75eb"></a><!-- doxytag: member="LBP_JL" ref="884b6565d87a81bbf549980bbdd040702cb194fd3b6e0295a134ad735f8f75eb" args="" -->LBP_JL</em>&nbsp;</td><td>
Hangul L Jamo. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd040707759e3988158319f9efe87e322804cd8"></a><!-- doxytag: member="LBP_JV" ref="884b6565d87a81bbf549980bbdd040707759e3988158319f9efe87e322804cd8" args="" -->LBP_JV</em>&nbsp;</td><td>
Hangul V Jamo. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd040707851519f0dac4f922b4144315bb711bf"></a><!-- doxytag: member="LBP_JT" ref="884b6565d87a81bbf549980bbdd040707851519f0dac4f922b4144315bb711bf" args="" -->LBP_JT</em>&nbsp;</td><td>
Hangul T Jamo. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070c9dcacac1d71f0f8ca7bbfe670620dd3"></a><!-- doxytag: member="LBP_AI" ref="884b6565d87a81bbf549980bbdd04070c9dcacac1d71f0f8ca7bbfe670620dd3" args="" -->LBP_AI</em>&nbsp;</td><td>
Ambiguous (alphabetic or ideograph). </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd040707b0aae40955328f649ec66b23ecf1626"></a><!-- doxytag: member="LBP_BK" ref="884b6565d87a81bbf549980bbdd040707b0aae40955328f649ec66b23ecf1626" args="" -->LBP_BK</em>&nbsp;</td><td>
Break (mandatory). </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070485f9b3c86d8b6f800bba048f1bf47b1"></a><!-- doxytag: member="LBP_CB" ref="884b6565d87a81bbf549980bbdd04070485f9b3c86d8b6f800bba048f1bf47b1" args="" -->LBP_CB</em>&nbsp;</td><td>
Contingent break. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd040708f6991e8defca4aa9e6485dbb32628a2"></a><!-- doxytag: member="LBP_CR" ref="884b6565d87a81bbf549980bbdd040708f6991e8defca4aa9e6485dbb32628a2" args="" -->LBP_CR</em>&nbsp;</td><td>
Carriage return. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070944522607828ef422c419633f68c8cab"></a><!-- doxytag: member="LBP_LF" ref="884b6565d87a81bbf549980bbdd04070944522607828ef422c419633f68c8cab" args="" -->LBP_LF</em>&nbsp;</td><td>
Line feed. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070cfefd6df8344cc5601ce7786aee51fcf"></a><!-- doxytag: member="LBP_NL" ref="884b6565d87a81bbf549980bbdd04070cfefd6df8344cc5601ce7786aee51fcf" args="" -->LBP_NL</em>&nbsp;</td><td>
Next line. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd0407038b102b238de030fe74906fb0fcfb769"></a><!-- doxytag: member="LBP_SA" ref="884b6565d87a81bbf549980bbdd0407038b102b238de030fe74906fb0fcfb769" args="" -->LBP_SA</em>&nbsp;</td><td>
South-East Asian. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd04070d6764678f5d80d86324a6f29c0561817"></a><!-- doxytag: member="LBP_SG" ref="884b6565d87a81bbf549980bbdd04070d6764678f5d80d86324a6f29c0561817" args="" -->LBP_SG</em>&nbsp;</td><td>
Surrogates. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd040707605e7c192d43e2ef0596e92446dfba4"></a><!-- doxytag: member="LBP_SP" ref="884b6565d87a81bbf549980bbdd040707605e7c192d43e2ef0596e92446dfba4" args="" -->LBP_SP</em>&nbsp;</td><td>
Space. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="884b6565d87a81bbf549980bbdd0407049450c35ed2a20d252e707322964bdf0"></a><!-- doxytag: member="LBP_XX" ref="884b6565d87a81bbf549980bbdd0407049450c35ed2a20d252e707322964bdf0" args="" -->LBP_XX</em>&nbsp;</td><td>
Unknown. </td></tr>
</table>
</dl>
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="1358bfc18e5c58f3bf86d41da9915964"></a><!-- doxytag: member="linebreakdef.h::get_next_char_utf16" ref="1358bfc18e5c58f3bf86d41da9915964" args="(const utf16_t *s, size_t len, size_t *ip)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> get_next_char_utf16 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="linebreak_8h.html#4dce96cad338d9281612277b2d80950c">utf16_t</a> *&nbsp;</td>
<td class="paramname"> <em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&nbsp;</td>
<td class="paramname"> <em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t *&nbsp;</td>
<td class="paramname"> <em>ip</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Gets the next Unicode character in a UTF-16 sequence.
<p>
The index will be advanced to the next complete character, unless the end of string is reached in the middle of a UTF-16 surrogate pair.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>s</em>&nbsp;</td><td>input UTF-16 string </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>len</em>&nbsp;</td><td>length of the string in words </td></tr>
<tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>ip</em>&nbsp;</td><td>pointer to the index </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the Unicode character beginning at the index; or <a class="el" href="linebreakdef_8h.html#adbbc7b02d94a4c18646813ac8d7dec1" title="Constant value to mark the end of string.">EOS</a> if end of input is encountered</dd></dl>
<dl class="deprecated" compact><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated:</a></b></dt><dd>This function will be prefixed with <code>lb_</code> in the future. </dd></dl>
</div>
</div><p>
<a class="anchor" name="b436dc6eadd1cfe258159ac671798653"></a><!-- doxytag: member="linebreakdef.h::get_next_char_utf32" ref="b436dc6eadd1cfe258159ac671798653" args="(const utf32_t *s, size_t len, size_t *ip)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> get_next_char_utf32 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> *&nbsp;</td>
<td class="paramname"> <em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&nbsp;</td>
<td class="paramname"> <em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t *&nbsp;</td>
<td class="paramname"> <em>ip</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Gets the next Unicode character in a UTF-32 sequence.
<p>
The index will be advanced to the next character.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>s</em>&nbsp;</td><td>input UTF-32 string </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>len</em>&nbsp;</td><td>length of the string in dwords </td></tr>
<tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>ip</em>&nbsp;</td><td>pointer to the index </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the Unicode character beginning at the index; or <a class="el" href="linebreakdef_8h.html#adbbc7b02d94a4c18646813ac8d7dec1" title="Constant value to mark the end of string.">EOS</a> if end of input is encountered</dd></dl>
<dl class="deprecated" compact><dt><b><a class="el" href="deprecated.html#_deprecated000003">Deprecated:</a></b></dt><dd>This function will be prefixed with <code>lb_</code> in the future. </dd></dl>
</div>
</div><p>
<a class="anchor" name="d6e67ab4880e304d6ac730d545027a7f"></a><!-- doxytag: member="linebreakdef.h::get_next_char_utf8" ref="d6e67ab4880e304d6ac730d545027a7f" args="(const utf8_t *s, size_t len, size_t *ip)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> get_next_char_utf8 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="linebreak_8h.html#6103b2105588f239c593e779e605038a">utf8_t</a> *&nbsp;</td>
<td class="paramname"> <em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&nbsp;</td>
<td class="paramname"> <em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t *&nbsp;</td>
<td class="paramname"> <em>ip</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Gets the next Unicode character in a UTF-8 sequence.
<p>
The index will be advanced to the next complete character, unless the end of string is reached in the middle of a UTF-8 sequence.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>s</em>&nbsp;</td><td>input UTF-8 string </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>len</em>&nbsp;</td><td>length of the string in bytes </td></tr>
<tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>ip</em>&nbsp;</td><td>pointer to the index </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the Unicode character beginning at the index; or <a class="el" href="linebreakdef_8h.html#adbbc7b02d94a4c18646813ac8d7dec1" title="Constant value to mark the end of string.">EOS</a> if end of input is encountered</dd></dl>
<dl class="deprecated" compact><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>This function will be prefixed with <code>lb_</code> in the future. </dd></dl>
</div>
</div><p>
<a class="anchor" name="0e86da0f08579bd9bfeb437f5fab15fe"></a><!-- doxytag: member="linebreakdef.h::set_linebreaks" ref="0e86da0f08579bd9bfeb437f5fab15fe" args="(const void *s, size_t len, const char *lang, char *brks, get_next_char_t get_next_char)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void set_linebreaks </td>
<td>(</td>
<td class="paramtype">const void *&nbsp;</td>
<td class="paramname"> <em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&nbsp;</td>
<td class="paramname"> <em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>lang</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>brks</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="linebreakdef_8h.html#d76de249e1f8334f318f9ee97ccc77c3">get_next_char_t</a>&nbsp;</td>
<td class="paramname"> <em>get_next_char</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Sets the line breaking information for a generic input string.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>s</em>&nbsp;</td><td>input string </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>len</em>&nbsp;</td><td>length of the input </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>lang</em>&nbsp;</td><td>language of the input </td></tr>
<tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>brks</em>&nbsp;</td><td>pointer to the output breaking data, containing <a class="el" href="linebreak_8h.html#367d64258fd90864a467687cd1736b77" title="Break is mandatory.">LINEBREAK_MUSTBREAK</a>, <a class="el" href="linebreak_8h.html#229f34b0b72ccb2e53d0936a1e61a363" title="Break is allowed.">LINEBREAK_ALLOWBREAK</a>, <a class="el" href="linebreak_8h.html#dd176a107633817050bedf6eb4f491cc" title="No break is possible.">LINEBREAK_NOBREAK</a>, or <a class="el" href="linebreak_8h.html#5adf3d4831b89cb3e40e9bd31a73a39d" title="A UTF-8/16 sequence is unfinished.">LINEBREAK_INSIDEACHAR</a> </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>get_next_char</em>&nbsp;</td><td>function to get the next UTF-32 character </td></tr>
</table>
</dl>
</div>
</div><p>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="bbd8c6b6e4e1c8ad2da83f23f81ac29a"></a><!-- doxytag: member="linebreakdef.h::lb_prop_default" ref="bbd8c6b6e4e1c8ad2da83f23f81ac29a" args="[]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a> <a class="el" href="linebreakdef_8h.html#bbd8c6b6e4e1c8ad2da83f23f81ac29a">lb_prop_default</a>[] </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Default line breaking properties as from the Unicode Web site.
<p>
</div>
</div><p>
<a class="anchor" name="82efdfa4115828df9158e183f1a9983d"></a><!-- doxytag: member="linebreakdef.h::lb_prop_lang_map" ref="82efdfa4115828df9158e183f1a9983d" args="[]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structLineBreakPropertiesLang.html">LineBreakPropertiesLang</a> <a class="el" href="linebreakdef_8h.html#82efdfa4115828df9158e183f1a9983d">lb_prop_lang_map</a>[] </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Association data of language-specific line breaking properties with language names.
<p>
This is the definition for the static data in this file. If you want more flexibility, or do not need the data here, you may want to redefine <em>lb_prop_lang_map</em> in your C source file.
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,146 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: linebreakdef.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<h1>linebreakdef.h</h1><a href="linebreakdef_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* vim: set tabstop=4 shiftwidth=4: */</span>
<a name="l00002"></a>00002
<a name="l00003"></a>00003 <span class="comment">/*</span>
<a name="l00004"></a>00004 <span class="comment"> * Line breaking in a Unicode sequence. Designed to be used in a</span>
<a name="l00005"></a>00005 <span class="comment"> * generic text renderer.</span>
<a name="l00006"></a>00006 <span class="comment"> *</span>
<a name="l00007"></a>00007 <span class="comment"> * Copyright (C) 2008-2009 Wu Yongwei &lt;wuyongwei at gmail dot com&gt;</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * This software is provided 'as-is', without any express or implied</span>
<a name="l00010"></a>00010 <span class="comment"> * warranty. In no event will the author be held liable for any damages</span>
<a name="l00011"></a>00011 <span class="comment"> * arising from the use of this software.</span>
<a name="l00012"></a>00012 <span class="comment"> *</span>
<a name="l00013"></a>00013 <span class="comment"> * Permission is granted to anyone to use this software for any purpose,</span>
<a name="l00014"></a>00014 <span class="comment"> * including commercial applications, and to alter it and redistribute</span>
<a name="l00015"></a>00015 <span class="comment"> * it freely, subject to the following restrictions:</span>
<a name="l00016"></a>00016 <span class="comment"> *</span>
<a name="l00017"></a>00017 <span class="comment"> * 1. The origin of this software must not be misrepresented; you must</span>
<a name="l00018"></a>00018 <span class="comment"> * not claim that you wrote the original software. If you use this</span>
<a name="l00019"></a>00019 <span class="comment"> * software in a product, an acknowledgement in the product</span>
<a name="l00020"></a>00020 <span class="comment"> * documentation would be appreciated but is not required.</span>
<a name="l00021"></a>00021 <span class="comment"> * 2. Altered source versions must be plainly marked as such, and must</span>
<a name="l00022"></a>00022 <span class="comment"> * not be misrepresented as being the original software.</span>
<a name="l00023"></a>00023 <span class="comment"> * 3. This notice may not be removed or altered from any source</span>
<a name="l00024"></a>00024 <span class="comment"> * distribution.</span>
<a name="l00025"></a>00025 <span class="comment"> *</span>
<a name="l00026"></a>00026 <span class="comment"> * The main reference is Unicode Standard Annex 14 (UAX #14):</span>
<a name="l00027"></a>00027 <span class="comment"> * &lt;URL:http://www.unicode.org/reports/tr14/&gt;</span>
<a name="l00028"></a>00028 <span class="comment"> *</span>
<a name="l00029"></a>00029 <span class="comment"> * When this library was designed, this annex was at Revision 19, for</span>
<a name="l00030"></a>00030 <span class="comment"> * Unicode 5.0.0:</span>
<a name="l00031"></a>00031 <span class="comment"> * &lt;URL:http://www.unicode.org/reports/tr14/tr14-19.html&gt;</span>
<a name="l00032"></a>00032 <span class="comment"> *</span>
<a name="l00033"></a>00033 <span class="comment"> * This library has been updated according to Revision 22, for</span>
<a name="l00034"></a>00034 <span class="comment"> * Unicode 5.1.0:</span>
<a name="l00035"></a>00035 <span class="comment"> * &lt;URL:http://www.unicode.org/reports/tr14/tr14-22.html&gt;</span>
<a name="l00036"></a>00036 <span class="comment"> *</span>
<a name="l00037"></a>00037 <span class="comment"> * The Unicode Terms of Use are available at</span>
<a name="l00038"></a>00038 <span class="comment"> * &lt;URL:http://www.unicode.org/copyright.html&gt;</span>
<a name="l00039"></a>00039 <span class="comment"> */</span>
<a name="l00040"></a>00040
<a name="l00055"></a><a class="code" href="linebreakdef_8h.html#adbbc7b02d94a4c18646813ac8d7dec1">00055</a> <span class="preprocessor">#define EOS 0xFFFF</span>
<a name="l00056"></a>00056 <span class="preprocessor"></span>
<a name="l00061"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">00061</a> <span class="keyword">enum</span> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070" title="Line break classes.">LineBreakClass</a>
<a name="l00062"></a>00062 {
<a name="l00063"></a>00063 <span class="comment">/* This is used to signal an error condition. */</span>
<a name="l00064"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070926181b709c80b3b50e929c2a151b723">00064</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070926181b709c80b3b50e929c2a151b723" title="Undefined.">LBP_Undefined</a>,
<a name="l00066"></a>00066 <span class="comment">/* The following break classes are treated in the pair table. */</span>
<a name="l00067"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3">00067</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070ce49119a43e68388f6201e0b8e1752a3" title="Opening punctuation.">LBP_OP</a>,
<a name="l00068"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d">00068</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407013de437628c74f3ae2bc82c0bed4dd3d" title="Closing punctuation.">LBP_CL</a>,
<a name="l00069"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070c39763b5b0557dddcec94a381ef30f4e">00069</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070c39763b5b0557dddcec94a381ef30f4e" title="Ambiguous quotation.">LBP_QU</a>,
<a name="l00070"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040700550bdd01f16132d2897fc5000f58df7">00070</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040700550bdd01f16132d2897fc5000f58df7" title="Glue.">LBP_GL</a>,
<a name="l00071"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040701cbbcff8d381e12574aec3679990e3f0">00071</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040701cbbcff8d381e12574aec3679990e3f0" title="Non-starters.">LBP_NS</a>,
<a name="l00072"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070694a3a0a4cf1649ca938e4cb8064f3b0">00072</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070694a3a0a4cf1649ca938e4cb8064f3b0" title="Exclamation/Interrogation.">LBP_EX</a>,
<a name="l00073"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407047f9a3d5b87cd350905f552ffa3da097">00073</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407047f9a3d5b87cd350905f552ffa3da097" title="Symbols allowing break after.">LBP_SY</a>,
<a name="l00074"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407098ddb858ed33918bce8784a60c36712e">00074</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407098ddb858ed33918bce8784a60c36712e" title="Infix separator.">LBP_IS</a>,
<a name="l00075"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070985024038b0a61a40df014013daa7d57">00075</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070985024038b0a61a40df014013daa7d57" title="Prefix.">LBP_PR</a>,
<a name="l00076"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070c7d5be8568020554e49bb4c01ca1fdba">00076</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070c7d5be8568020554e49bb4c01ca1fdba" title="Postfix.">LBP_PO</a>,
<a name="l00077"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707d6ec3c06dfdee326bca876365e5be28">00077</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707d6ec3c06dfdee326bca876365e5be28" title="Numeric.">LBP_NU</a>,
<a name="l00078"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407099a0353e48d4453d0acf01da43655281">00078</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407099a0353e48d4453d0acf01da43655281" title="Alphabetic.">LBP_AL</a>,
<a name="l00079"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070277e68f51ab2a52445f0e7e219b8bd55">00079</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070277e68f51ab2a52445f0e7e219b8bd55" title="Ideographic.">LBP_ID</a>,
<a name="l00080"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070e5285b1bd6bf868b1655b8ad3cb9cc73">00080</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070e5285b1bd6bf868b1655b8ad3cb9cc73" title="Inseparable characters.">LBP_IN</a>,
<a name="l00081"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707cf4d61e77f0d1f8974f1b21379d2883">00081</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707cf4d61e77f0d1f8974f1b21379d2883" title="Hyphen.">LBP_HY</a>,
<a name="l00082"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040708487a95ef080e81a013162e107a4bc74">00082</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040708487a95ef080e81a013162e107a4bc74" title="Break after.">LBP_BA</a>,
<a name="l00083"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407098dbcbc080626fbc0ff7d4f2b8b86d7d">00083</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407098dbcbc080626fbc0ff7d4f2b8b86d7d" title="Break before.">LBP_BB</a>,
<a name="l00084"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407046fe18e486c79c3835a587fb15ad0c63">00084</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407046fe18e486c79c3835a587fb15ad0c63" title="Break on either side (but not pair).">LBP_B2</a>,
<a name="l00085"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070a58613e52b70bda371b48ca2d89d85ee">00085</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070a58613e52b70bda371b48ca2d89d85ee" title="Zero-width space.">LBP_ZW</a>,
<a name="l00086"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070de6aff21f968efc84109e502c5c469c1">00086</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070de6aff21f968efc84109e502c5c469c1" title="Combining marks.">LBP_CM</a>,
<a name="l00087"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407000085861924d3758649cfd7dc0ec3daa">00087</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407000085861924d3758649cfd7dc0ec3daa" title="Word joiner.">LBP_WJ</a>,
<a name="l00088"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407087a5464b708121503da98654e02c2cfc">00088</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407087a5464b708121503da98654e02c2cfc" title="Hangul LV.">LBP_H2</a>,
<a name="l00089"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070e898c79c281f9d12c4adfa12834f4380">00089</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070e898c79c281f9d12c4adfa12834f4380" title="Hangul LVT.">LBP_H3</a>,
<a name="l00090"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040702cb194fd3b6e0295a134ad735f8f75eb">00090</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040702cb194fd3b6e0295a134ad735f8f75eb" title="Hangul L Jamo.">LBP_JL</a>,
<a name="l00091"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707759e3988158319f9efe87e322804cd8">00091</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707759e3988158319f9efe87e322804cd8" title="Hangul V Jamo.">LBP_JV</a>,
<a name="l00092"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707851519f0dac4f922b4144315bb711bf">00092</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707851519f0dac4f922b4144315bb711bf" title="Hangul T Jamo.">LBP_JT</a>,
<a name="l00094"></a>00094 <span class="comment">/* The following break classes are not treated in the pair table */</span>
<a name="l00095"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070c9dcacac1d71f0f8ca7bbfe670620dd3">00095</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070c9dcacac1d71f0f8ca7bbfe670620dd3" title="Ambiguous (alphabetic or ideograph).">LBP_AI</a>,
<a name="l00096"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707b0aae40955328f649ec66b23ecf1626">00096</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707b0aae40955328f649ec66b23ecf1626" title="Break (mandatory).">LBP_BK</a>,
<a name="l00097"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070485f9b3c86d8b6f800bba048f1bf47b1">00097</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070485f9b3c86d8b6f800bba048f1bf47b1" title="Contingent break.">LBP_CB</a>,
<a name="l00098"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040708f6991e8defca4aa9e6485dbb32628a2">00098</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040708f6991e8defca4aa9e6485dbb32628a2" title="Carriage return.">LBP_CR</a>,
<a name="l00099"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070944522607828ef422c419633f68c8cab">00099</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070944522607828ef422c419633f68c8cab" title="Line feed.">LBP_LF</a>,
<a name="l00100"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070cfefd6df8344cc5601ce7786aee51fcf">00100</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070cfefd6df8344cc5601ce7786aee51fcf" title="Next line.">LBP_NL</a>,
<a name="l00101"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407038b102b238de030fe74906fb0fcfb769">00101</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407038b102b238de030fe74906fb0fcfb769" title="South-East Asian.">LBP_SA</a>,
<a name="l00102"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070d6764678f5d80d86324a6f29c0561817">00102</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070d6764678f5d80d86324a6f29c0561817" title="Surrogates.">LBP_SG</a>,
<a name="l00103"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707605e7c192d43e2ef0596e92446dfba4">00103</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd040707605e7c192d43e2ef0596e92446dfba4" title="Space.">LBP_SP</a>,
<a name="l00104"></a><a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407049450c35ed2a20d252e707322964bdf0">00104</a> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd0407049450c35ed2a20d252e707322964bdf0" title="Unknown.">LBP_XX</a>
<a name="l00105"></a>00105 };
<a name="l00106"></a>00106
<a name="l00111"></a><a class="code" href="structLineBreakProperties.html">00111</a> <span class="keyword">struct </span><a class="code" href="structLineBreakProperties.html" title="Struct for entries of line break properties.">LineBreakProperties</a>
<a name="l00112"></a>00112 {
<a name="l00113"></a><a class="code" href="structLineBreakProperties.html#1fe368ff9b53f52305c8dca687395372">00113</a> <a class="code" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25" title="Type for UTF-32 data points.">utf32_t</a> <a class="code" href="structLineBreakProperties.html#1fe368ff9b53f52305c8dca687395372" title="Starting coding point.">start</a>;
<a name="l00114"></a><a class="code" href="structLineBreakProperties.html#f6ff463e88f6c694661aa10222404a14">00114</a> <a class="code" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25" title="Type for UTF-32 data points.">utf32_t</a> <a class="code" href="structLineBreakProperties.html#f6ff463e88f6c694661aa10222404a14" title="End coding point.">end</a>;
<a name="l00115"></a><a class="code" href="structLineBreakProperties.html#46d34ea3f514f8f082d92a441a6665ba">00115</a> <span class="keyword">enum</span> <a class="code" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070" title="Line break classes.">LineBreakClass</a> <a class="code" href="structLineBreakProperties.html#46d34ea3f514f8f082d92a441a6665ba" title="The line breaking property.">prop</a>;
<a name="l00116"></a>00116 };
<a name="l00117"></a>00117
<a name="l00122"></a><a class="code" href="structLineBreakPropertiesLang.html">00122</a> <span class="keyword">struct </span><a class="code" href="structLineBreakPropertiesLang.html" title="Struct for association of language-specific line breaking properties with language...">LineBreakPropertiesLang</a>
<a name="l00123"></a>00123 {
<a name="l00124"></a><a class="code" href="structLineBreakPropertiesLang.html#e961b49d11e272adc590cf06e9f6100d">00124</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structLineBreakPropertiesLang.html#e961b49d11e272adc590cf06e9f6100d" title="Language name.">lang</a>;
<a name="l00125"></a><a class="code" href="structLineBreakPropertiesLang.html#b5132ed92c5964a5cfecbb21de206488">00125</a> <span class="keywordtype">size_t</span> <a class="code" href="structLineBreakPropertiesLang.html#b5132ed92c5964a5cfecbb21de206488" title="Length of name to match.">namelen</a>;
<a name="l00126"></a><a class="code" href="structLineBreakPropertiesLang.html#e4b7339a372a0ccbf97e380aa440ff9d">00126</a> <span class="keyword">struct </span><a class="code" href="structLineBreakProperties.html" title="Struct for entries of line break properties.">LineBreakProperties</a> *<a class="code" href="structLineBreakPropertiesLang.html#e4b7339a372a0ccbf97e380aa440ff9d" title="Pointer to associated data.">lbp</a>;
<a name="l00127"></a>00127 };
<a name="l00128"></a>00128
<a name="l00133"></a><a class="code" href="linebreakdef_8h.html#d76de249e1f8334f318f9ee97ccc77c3">00133</a> <span class="keyword">typedef</span> <a class="code" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25" title="Type for UTF-32 data points.">utf32_t</a> (*<a class="code" href="linebreakdef_8h.html#d76de249e1f8334f318f9ee97ccc77c3" title="Abstract function interface for get_next_char_utf8, get_next_char_utf16, and get_next_char_utf32...">get_next_char_t</a>)(<span class="keyword">const</span> <span class="keywordtype">void</span> *, size_t, <span class="keywordtype">size_t</span> *);
<a name="l00134"></a>00134
<a name="l00135"></a>00135 <span class="comment">/* Declarations */</span>
<a name="l00136"></a>00136 <span class="keyword">extern</span> <span class="keyword">struct </span><a class="code" href="structLineBreakProperties.html" title="Struct for entries of line break properties.">LineBreakProperties</a> <a class="code" href="linebreakdata_8c.html#bbd8c6b6e4e1c8ad2da83f23f81ac29a" title="Default line breaking properties as from the Unicode Web site.">lb_prop_default</a>[];
<a name="l00137"></a>00137 <span class="keyword">extern</span> <span class="keyword">struct </span><a class="code" href="structLineBreakPropertiesLang.html" title="Struct for association of language-specific line breaking properties with language...">LineBreakPropertiesLang</a> <a class="code" href="linebreakdef_8c.html#82efdfa4115828df9158e183f1a9983d" title="Association data of language-specific line breaking properties with language names...">lb_prop_lang_map</a>[];
<a name="l00138"></a>00138
<a name="l00139"></a>00139 <span class="comment">/* Function Prototypes */</span>
<a name="l00140"></a>00140
<a name="l00153"></a>00153 <span class="keywordtype">void</span> <a class="code" href="linebreak_8c.html#0e86da0f08579bd9bfeb437f5fab15fe" title="Sets the line breaking information for a generic input string.">set_linebreaks</a>(
<a name="l00154"></a>00154 <span class="keyword">const</span> <span class="keywordtype">void</span> *s,
<a name="l00155"></a>00155 <span class="keywordtype">size_t</span> len,
<a name="l00156"></a>00156 <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structLineBreakPropertiesLang.html#e961b49d11e272adc590cf06e9f6100d" title="Language name.">lang</a>,
<a name="l00157"></a>00157 <span class="keywordtype">char</span> *brks,
<a name="l00158"></a>00158 <a class="code" href="linebreakdef_8h.html#d76de249e1f8334f318f9ee97ccc77c3" title="Abstract function interface for get_next_char_utf8, get_next_char_utf16, and get_next_char_utf32...">get_next_char_t</a> get_next_char);
<a name="l00159"></a>00159
<a name="l00160"></a>00160 <a class="code" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25" title="Type for UTF-32 data points.">utf32_t</a> <a class="code" href="linebreak_8c.html#d6e67ab4880e304d6ac730d545027a7f" title="Gets the next Unicode character in a UTF-8 sequence.">get_next_char_utf8</a>(<span class="keyword">const</span> <a class="code" href="linebreak_8h.html#6103b2105588f239c593e779e605038a" title="Type for UTF-8 data points.">utf8_t</a> *s, <span class="keywordtype">size_t</span> len, <span class="keywordtype">size_t</span> *ip);
<a name="l00161"></a>00161 <a class="code" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25" title="Type for UTF-32 data points.">utf32_t</a> <a class="code" href="linebreak_8c.html#1358bfc18e5c58f3bf86d41da9915964" title="Gets the next Unicode character in a UTF-16 sequence.">get_next_char_utf16</a>(<span class="keyword">const</span> <a class="code" href="linebreak_8h.html#4dce96cad338d9281612277b2d80950c" title="Type for UTF-16 data points.">utf16_t</a> *s, <span class="keywordtype">size_t</span> len, <span class="keywordtype">size_t</span> *ip);
<a name="l00162"></a>00162 <a class="code" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25" title="Type for UTF-32 data points.">utf32_t</a> <a class="code" href="linebreak_8c.html#b436dc6eadd1cfe258159ac671798653" title="Gets the next Unicode character in a UTF-32 sequence.">get_next_char_utf32</a>(<span class="keyword">const</span> <a class="code" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25" title="Type for UTF-32 data points.">utf32_t</a> *s, <span class="keywordtype">size_t</span> len, <span class="keywordtype">size_t</span> *ip);
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,28 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: Page Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>Related Pages</h1>Here is a list of all related documentation pages:<ul>
<li><a class="el" href="deprecated.html">Deprecated List</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,106 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: LineBreakProperties Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
<li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>LineBreakProperties Struct Reference</h1><!-- doxytag: class="LineBreakProperties" -->Struct for entries of line break properties.
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="linebreakdef_8h_source.html">linebreakdef.h</a>&gt;</code>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structLineBreakProperties.html#1fe368ff9b53f52305c8dca687395372">start</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Starting coding point. <a href="#1fe368ff9b53f52305c8dca687395372"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structLineBreakProperties.html#f6ff463e88f6c694661aa10222404a14">end</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">End coding point. <a href="#f6ff463e88f6c694661aa10222404a14"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">LineBreakClass</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structLineBreakProperties.html#46d34ea3f514f8f082d92a441a6665ba">prop</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The line breaking property. <a href="#46d34ea3f514f8f082d92a441a6665ba"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Struct for entries of line break properties.
<p>
The array of the entries <em>must</em> be sorted. <hr><h2>Field Documentation</h2>
<a class="anchor" name="f6ff463e88f6c694661aa10222404a14"></a><!-- doxytag: member="LineBreakProperties::end" ref="f6ff463e88f6c694661aa10222404a14" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> <a class="el" href="structLineBreakProperties.html#f6ff463e88f6c694661aa10222404a14">LineBreakProperties::end</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
End coding point.
<p>
</div>
</div><p>
<a class="anchor" name="46d34ea3f514f8f082d92a441a6665ba"></a><!-- doxytag: member="LineBreakProperties::prop" ref="46d34ea3f514f8f082d92a441a6665ba" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="linebreakdef_8h.html#884b6565d87a81bbf549980bbdd04070">LineBreakClass</a> <a class="el" href="structLineBreakProperties.html#46d34ea3f514f8f082d92a441a6665ba">LineBreakProperties::prop</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
The line breaking property.
<p>
</div>
</div><p>
<a class="anchor" name="1fe368ff9b53f52305c8dca687395372"></a><!-- doxytag: member="LineBreakProperties::start" ref="1fe368ff9b53f52305c8dca687395372" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> <a class="el" href="structLineBreakProperties.html#1fe368ff9b53f52305c8dca687395372">LineBreakProperties::start</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Starting coding point.
<p>
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="linebreakdef_8h_source.html">linebreakdef.h</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,82 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: LineBreakPropertiesIndex Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
<li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>LineBreakPropertiesIndex Struct Reference</h1><!-- doxytag: class="LineBreakPropertiesIndex" -->Struct for the second-level index to the line breaking properties.
<a href="#_details">More...</a>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structLineBreakPropertiesIndex.html#7a5207276632f772309f8cf2877c9eae">end</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">End coding point. <a href="#7a5207276632f772309f8cf2877c9eae"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structLineBreakPropertiesIndex.html#de56f82faa0703e4eafddb0fc4ba6528">lbp</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to line breaking properties. <a href="#de56f82faa0703e4eafddb0fc4ba6528"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Struct for the second-level index to the line breaking properties. <hr><h2>Field Documentation</h2>
<a class="anchor" name="7a5207276632f772309f8cf2877c9eae"></a><!-- doxytag: member="LineBreakPropertiesIndex::end" ref="7a5207276632f772309f8cf2877c9eae" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="linebreak_8h.html#4f775bae0642c213be2c526018283c25">utf32_t</a> <a class="el" href="structLineBreakPropertiesIndex.html#7a5207276632f772309f8cf2877c9eae">LineBreakPropertiesIndex::end</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
End coding point.
<p>
</div>
</div><p>
<a class="anchor" name="de56f82faa0703e4eafddb0fc4ba6528"></a><!-- doxytag: member="LineBreakPropertiesIndex::lbp" ref="de56f82faa0703e4eafddb0fc4ba6528" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a>* <a class="el" href="structLineBreakPropertiesIndex.html#de56f82faa0703e4eafddb0fc4ba6528">LineBreakPropertiesIndex::lbp</a><code> [read]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Pointer to line breaking properties.
<p>
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="linebreak_8c.html">linebreak.c</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

View file

@ -0,0 +1,104 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liblinebreak: LineBreakPropertiesLang Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
<li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>LineBreakPropertiesLang Struct Reference</h1><!-- doxytag: class="LineBreakPropertiesLang" -->Struct for association of language-specific line breaking properties with language names.
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="linebreakdef_8h_source.html">linebreakdef.h</a>&gt;</code>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structLineBreakPropertiesLang.html#e961b49d11e272adc590cf06e9f6100d">lang</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Language name. <a href="#e961b49d11e272adc590cf06e9f6100d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structLineBreakPropertiesLang.html#b5132ed92c5964a5cfecbb21de206488">namelen</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Length of name to match. <a href="#b5132ed92c5964a5cfecbb21de206488"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structLineBreakPropertiesLang.html#e4b7339a372a0ccbf97e380aa440ff9d">lbp</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to associated data. <a href="#e4b7339a372a0ccbf97e380aa440ff9d"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Struct for association of language-specific line breaking properties with language names. <hr><h2>Field Documentation</h2>
<a class="anchor" name="e961b49d11e272adc590cf06e9f6100d"></a><!-- doxytag: member="LineBreakPropertiesLang::lang" ref="e961b49d11e272adc590cf06e9f6100d" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* <a class="el" href="structLineBreakPropertiesLang.html#e961b49d11e272adc590cf06e9f6100d">LineBreakPropertiesLang::lang</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Language name.
<p>
</div>
</div><p>
<a class="anchor" name="e4b7339a372a0ccbf97e380aa440ff9d"></a><!-- doxytag: member="LineBreakPropertiesLang::lbp" ref="e4b7339a372a0ccbf97e380aa440ff9d" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structLineBreakProperties.html">LineBreakProperties</a>* <a class="el" href="structLineBreakPropertiesLang.html#e4b7339a372a0ccbf97e380aa440ff9d">LineBreakPropertiesLang::lbp</a><code> [read]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Pointer to associated data.
<p>
</div>
</div><p>
<a class="anchor" name="b5132ed92c5964a5cfecbb21de206488"></a><!-- doxytag: member="LineBreakPropertiesLang::namelen" ref="b5132ed92c5964a5cfecbb21de206488" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t <a class="el" href="structLineBreakPropertiesLang.html#b5132ed92c5964a5cfecbb21de206488">LineBreakPropertiesLang::namelen</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Length of name to match.
<p>
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="linebreakdef_8h_source.html">linebreakdef.h</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 3 13:20:57 2009 for liblinebreak by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -0,0 +1,105 @@
/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
DIV.tabs
{
float : left;
width : 100%;
background : url("tab_b.gif") repeat-x bottom;
margin-bottom : 4px;
}
DIV.tabs UL
{
margin : 0px;
padding-left : 10px;
list-style : none;
}
DIV.tabs LI, DIV.tabs FORM
{
display : inline;
margin : 0px;
padding : 0px;
}
DIV.tabs FORM
{
float : right;
}
DIV.tabs A
{
float : left;
background : url("tab_r.gif") no-repeat right top;
border-bottom : 1px solid #84B0C7;
font-size : 80%;
font-weight : bold;
text-decoration : none;
}
DIV.tabs A:hover
{
background-position: 100% -150px;
}
DIV.tabs A:link, DIV.tabs A:visited,
DIV.tabs A:active, DIV.tabs A:hover
{
color: #1A419D;
}
DIV.tabs SPAN
{
float : left;
display : block;
background : url("tab_l.gif") no-repeat left top;
padding : 5px 9px;
white-space : nowrap;
}
DIV.tabs INPUT
{
float : right;
display : inline;
font-size : 1em;
}
DIV.tabs TD
{
font-size : 80%;
font-weight : bold;
text-decoration : none;
}
/* Commented Backslash Hack hides rule from IE5-Mac \*/
DIV.tabs SPAN {float : none;}
/* End IE5-Mac hack */
DIV.tabs A:hover SPAN
{
background-position: 0% -150px;
}
DIV.tabs LI.current A
{
background-position: 100% -150px;
border-width : 0px;
}
DIV.tabs LI.current SPAN
{
background-position: 0% -150px;
padding-bottom : 6px;
}
DIV.navpath
{
background : none;
border : none;
border-bottom : 1px solid #84B0C7;
text-align : center;
margin : 2px;
padding : 2px;
}

View file

@ -0,0 +1,507 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2006-10-14.15
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
nl='
'
IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
if test -z "$doit"; then
doit_exec=exec
else
doit_exec=$doit
fi
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
mvprog="${MVPROG-mv}"
cpprog="${CPPROG-cp}"
chmodprog="${CHMODPROG-chmod}"
chownprog="${CHOWNPROG-chown}"
chgrpprog="${CHGRPPROG-chgrp}"
stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
posix_glob=
posix_mkdir=
# Desired mode of installed file.
mode=0755
chmodcmd=$chmodprog
chowncmd=
chgrpcmd=
stripcmd=
rmcmd="$rmprog -f"
mvcmd="$mvprog"
src=
dst=
dir_arg=
dstarg=
no_target_directory=
usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
-c (ignored)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
--help display this help and exit.
--version display version info and exit.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
-c) shift
continue;;
-d) dir_arg=true
shift
continue;;
-g) chgrpcmd="$chgrpprog $2"
shift
shift
continue;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
shift
shift
case $mode in
*' '* | *' '* | *'
'* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
continue;;
-o) chowncmd="$chownprog $2"
shift
shift
continue;;
-s) stripcmd=$stripprog
shift
continue;;
-t) dstarg=$2
shift
shift
continue;;
-T) no_target_directory=true
shift
continue;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
done
if test $# -ne 0 && test -z "$dir_arg$dstarg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dstarg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dstarg"
shift # fnord
fi
shift # arg
dstarg=$arg
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call `install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
trap '(exit $?); exit' 1 2 13 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names starting with `-'.
case $src in
-*) src=./$src ;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dstarg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dstarg
# Protect names starting with `-'.
case $dst in
-*) dst=./$dst ;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
echo "$0: $dstarg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
# Prefer dirname, but fall back on a substitute if dirname fails.
dstdir=`
(dirname "$dst") 2>/dev/null ||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$dst" : 'X\(//\)[^/]' \| \
X"$dst" : 'X\(//\)$' \| \
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
echo X"$dst" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'
`
test -d "$dstdir"
dstdir_status=$?
fi
fi
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writeable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/d" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
fi
trap '' 0;;
esac;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix=/ ;;
-*) prefix=./ ;;
*) prefix= ;;
esac
case $posix_glob in
'')
if (set -f) 2>/dev/null; then
posix_glob=true
else
posix_glob=false
fi ;;
esac
oIFS=$IFS
IFS=/
$posix_glob && set -f
set fnord $dstdir
shift
$posix_glob && set +f
IFS=$oIFS
prefixes=
for d
do
test -z "$d" && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
&& { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# Now rename the file to the real destination.
{ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \
|| {
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
if test -f "$dst"; then
$doit $rmcmd -f "$dst" 2>/dev/null \
|| { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \
&& { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\
|| {
echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
else
:
fi
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
} || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View file

@ -0,0 +1,810 @@
/* vim: set tabstop=4 shiftwidth=4: */
/*
* Line breaking in a Unicode sequence. Designed to be used in a
* generic text renderer.
*
* Copyright (C) 2008-2009 Wu Yongwei <wuyongwei at gmail dot com>
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the author be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute
* it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must
* not claim that you wrote the original software. If you use this
* software in a product, an acknowledgement in the product
* documentation would be appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must
* not be misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source
* distribution.
*
* The main reference is Unicode Standard Annex 14 (UAX #14):
* <URL:http://www.unicode.org/reports/tr14/>
*
* When this library was designed, this annex was at Revision 19, for
* Unicode 5.0.0:
* <URL:http://www.unicode.org/reports/tr14/tr14-19.html>
*
* This library has been updated according to Revision 22, for
* Unicode 5.1.0:
* <URL:http://www.unicode.org/reports/tr14/tr14-22.html>
*
* The Unicode Terms of Use are available at
* <URL:http://www.unicode.org/copyright.html>
*/
/**
* @file linebreak.c
*
* Implementation of the line breaking algorithm as described in Unicode
* Standard Annex 14.
*
* @version 1.2, 2009/04/29
* @author Wu Yongwei
*/
#include <assert.h>
#include <stddef.h>
#include <string.h>
#include "linebreak.h"
#include "linebreakdef.h"
/**
* Size of the second-level index to the line breaking properties.
*/
#define LINEBREAK_INDEX_SIZE 40
/**
* Enumeration of break actions. They are used in the break action
* pair table below.
*/
enum BreakAction
{
DIRECT_BRK, /**< Direct break opportunity */
INDIRECT_BRK, /**< Indirect break opportunity */
CM_INDIRECT_BRK, /**< Indirect break opportunity for combining marks */
CM_PROHIBITED_BRK, /**< Prohibited break for combining marks */
PROHIBITED_BRK /**< Prohibited break */
};
/**
* Break action pair table. This is a direct mapping of Table 2 of
* Unicode Standard Annex 14, Revision 22.
*/
static enum BreakAction baTable[LBP_JT][LBP_JT] = {
{ /* OP */
PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK, CM_PROHIBITED_BRK,
PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
PROHIBITED_BRK, PROHIBITED_BRK },
{ /* CL */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
INDIRECT_BRK, INDIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK },
{ /* QU */
PROHIBITED_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, INDIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, INDIRECT_BRK },
{ /* GL */
INDIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, INDIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, INDIRECT_BRK },
{ /* NS */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK },
{ /* EX */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK },
{ /* SY */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK },
{ /* IS */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK },
{ /* PR */
INDIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, INDIRECT_BRK },
{ /* PO */
INDIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK },
{ /* NU */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK },
{ /* AL */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK },
{ /* ID */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, INDIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK },
{ /* IN */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK },
{ /* HY */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, DIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK },
{ /* BA */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, DIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK },
{ /* BB */
INDIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, INDIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, INDIRECT_BRK },
{ /* B2 */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK },
{ /* ZW */
DIRECT_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK },
{ /* CM */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, DIRECT_BRK },
{ /* WJ */
INDIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, INDIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, INDIRECT_BRK },
{ /* H2 */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, INDIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
INDIRECT_BRK, INDIRECT_BRK },
{ /* H3 */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, INDIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, INDIRECT_BRK },
{ /* JL */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, INDIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, DIRECT_BRK },
{ /* JV */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, INDIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
INDIRECT_BRK, INDIRECT_BRK },
{ /* JT */
DIRECT_BRK, PROHIBITED_BRK, INDIRECT_BRK, INDIRECT_BRK,
INDIRECT_BRK, PROHIBITED_BRK, PROHIBITED_BRK, PROHIBITED_BRK,
DIRECT_BRK, INDIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK, INDIRECT_BRK,
DIRECT_BRK, DIRECT_BRK, PROHIBITED_BRK, CM_INDIRECT_BRK,
PROHIBITED_BRK, DIRECT_BRK, DIRECT_BRK, DIRECT_BRK,
DIRECT_BRK, INDIRECT_BRK }
};
/**
* Struct for the second-level index to the line breaking properties.
*/
struct LineBreakPropertiesIndex
{
utf32_t end; /**< End coding point */
struct LineBreakProperties *lbp;/**< Pointer to line breaking properties */
};
/**
* Second-level index to the line breaking properties.
*/
static struct LineBreakPropertiesIndex lb_prop_index[LINEBREAK_INDEX_SIZE] =
{
{ 0xFFFFFFFF, lb_prop_default }
};
/**
* Initializes the second-level index to the line breaking properties.
* If it is not called, the performance of #get_char_lb_class_lang (and
* thus the main functionality) can be pretty bad, especially for big
* code points like those of Chinese.
*/
void init_linebreak(void)
{
size_t i;
size_t iPropDefault;
size_t len;
size_t step;
len = 0;
while (lb_prop_default[len].prop != LBP_Undefined)
++len;
step = len / LINEBREAK_INDEX_SIZE;
iPropDefault = 0;
for (i = 0; i < LINEBREAK_INDEX_SIZE; ++i)
{
lb_prop_index[i].lbp = lb_prop_default + iPropDefault;
iPropDefault += step;
lb_prop_index[i].end = lb_prop_default[iPropDefault].start - 1;
}
lb_prop_index[--i].end = 0xFFFFFFFF;
}
/**
* Gets the language-specific line breaking properties.
*
* @param lang language of the text
* @return pointer to the language-specific line breaking
* properties array if found; \c NULL otherwise
*/
static struct LineBreakProperties *get_lb_prop_lang(const char *lang)
{
struct LineBreakPropertiesLang *lbplIter;
if (lang != NULL)
{
for (lbplIter = lb_prop_lang_map; lbplIter->lang != NULL; ++lbplIter)
{
if (strncmp(lang, lbplIter->lang, lbplIter->namelen) == 0)
{
return lbplIter->lbp;
}
}
}
return NULL;
}
/**
* Gets the line breaking class of a character from a line breaking
* properties array.
*
* @param ch character to check
* @param lbp pointer to the line breaking properties array
* @return the line breaking class if found; \c LBP_XX otherwise
*/
static enum LineBreakClass get_char_lb_class(
utf32_t ch,
struct LineBreakProperties *lbp)
{
while (lbp->prop != LBP_Undefined && ch >= lbp->start)
{
if (ch <= lbp->end)
return lbp->prop;
++lbp;
}
return LBP_XX;
}
/**
* Gets the line breaking class of a character from the default line
* breaking properties array.
*
* @param ch character to check
* @return the line breaking class if found; \c LBP_XX otherwise
*/
static enum LineBreakClass get_char_lb_class_default(
utf32_t ch)
{
size_t i = 0;
while (ch > lb_prop_index[i].end)
++i;
assert(i < LINEBREAK_INDEX_SIZE);
return get_char_lb_class(ch, lb_prop_index[i].lbp);
}
/**
* Gets the line breaking class of a character for a specific
* language. This function will check the language-specific data first,
* and then the default data if there is no language-specific property
* available for the character.
*
* @param ch character to check
* @param lbpLang pointer to the language-specific line breaking
* properties array
* @return the line breaking class if found; \c LBP_XX
* otherwise
*/
static enum LineBreakClass get_char_lb_class_lang(
utf32_t ch,
struct LineBreakProperties *lbpLang)
{
enum LineBreakClass lbcResult;
/* Find the language-specific line breaking class for a character */
if (lbpLang)
{
lbcResult = get_char_lb_class(ch, lbpLang);
if (lbcResult != LBP_XX)
return lbcResult;
}
/* Find the generic language-specific line breaking class, if no
* language context is provided, or language-specific data are not
* available for the specific character in the specified language */
return get_char_lb_class_default(ch);
}
/**
* Resolves the line breaking class for certain ambiguous or complicated
* characters. They are treated in a simplistic way in this
* implementation.
*
* @param lbc line breaking class to resolve
* @param lang language of the text
* @return the resolved line breaking class
*/
static enum LineBreakClass resolve_lb_class(
enum LineBreakClass lbc,
const char *lang)
{
switch (lbc)
{
case LBP_AI:
if (lang != NULL &&
(strncmp(lang, "zh", 2) == 0 || /* Chinese */
strncmp(lang, "ja", 2) == 0 || /* Japanese */
strncmp(lang, "ko", 2) == 0)) /* Korean */
{
return LBP_ID;
}
/* Fall through */
case LBP_SA:
case LBP_SG:
case LBP_XX:
return LBP_AL;
default:
return lbc;
}
}
/**
* Gets the next Unicode character in a UTF-8 sequence. The index will
* be advanced to the next complete character, unless the end of string
* is reached in the middle of a UTF-8 sequence.
*
* @param[in] s input UTF-8 string
* @param[in] len length of the string in bytes
* @param[in,out] ip pointer to the index
* @return the Unicode character beginning at the index; or
* #EOS if end of input is encountered
*
* @deprecated This function will be prefixed with \c lb_ in the future.
*/
utf32_t get_next_char_utf8(
const utf8_t *s,
size_t len,
size_t *ip)
{
utf8_t ch;
utf32_t res;
assert(*ip <= len);
if (*ip == len)
return EOS;
ch = s[*ip];
if (ch < 0xC2 || ch > 0xF4)
{ /* One-byte sequence, tail (should not occur), or invalid */
*ip += 1;
return ch;
}
else if (ch < 0xE0)
{ /* Two-byte sequence */
if (*ip + 2 > len)
return EOS;
res = ((ch & 0x1F) << 6) + (s[*ip + 1] & 0x3F);
*ip += 2;
return res;
}
else if (ch < 0xF0)
{ /* Three-byte sequence */
if (*ip + 3 > len)
return EOS;
res = ((ch & 0x0F) << 12) +
((s[*ip + 1] & 0x3F) << 6) +
((s[*ip + 2] & 0x3F));
*ip += 3;
return res;
}
else
{ /* Four-byte sequence */
if (*ip + 4 > len)
return EOS;
res = ((ch & 0x07) << 18) +
((s[*ip + 1] & 0x3F) << 12) +
((s[*ip + 2] & 0x3F) << 6) +
((s[*ip + 3] & 0x3F));
*ip += 4;
return res;
}
}
/**
* Gets the next Unicode character in a UTF-16 sequence. The index will
* be advanced to the next complete character, unless the end of string
* is reached in the middle of a UTF-16 surrogate pair.
*
* @param[in] s input UTF-16 string
* @param[in] len length of the string in words
* @param[in,out] ip pointer to the index
* @return the Unicode character beginning at the index; or
* #EOS if end of input is encountered
*
* @deprecated This function will be prefixed with \c lb_ in the future.
*/
utf32_t get_next_char_utf16(
const utf16_t *s,
size_t len,
size_t *ip)
{
utf16_t ch;
assert(*ip <= len);
if (*ip == len)
return EOS;
ch = s[(*ip)++];
if (ch < 0xD800 || ch > 0xDBFF)
{ /* If the character is not a high surrogate */
return ch;
}
if (*ip == len)
{ /* If the input ends here (an error) */
--(*ip);
return EOS;
}
if (s[*ip] < 0xDC00 || s[*ip] > 0xDFFF)
{ /* If the next character is not the low surrogate (an error) */
return ch;
}
/* Return the constructed character and advance the index again */
return (((utf32_t)ch & 0x3FF) << 10) + (s[(*ip)++] & 0x3FF) + 0x10000;
}
/**
* Gets the next Unicode character in a UTF-32 sequence. The index will
* be advanced to the next character.
*
* @param[in] s input UTF-32 string
* @param[in] len length of the string in dwords
* @param[in,out] ip pointer to the index
* @return the Unicode character beginning at the index; or
* #EOS if end of input is encountered
*
* @deprecated This function will be prefixed with \c lb_ in the future.
*/
utf32_t get_next_char_utf32(
const utf32_t *s,
size_t len,
size_t *ip)
{
assert(*ip <= len);
if (*ip == len)
return EOS;
return s[(*ip)++];
}
/**
* Sets the line breaking information for a generic input string.
*
* @param[in] s input string
* @param[in] len length of the input
* @param[in] lang language of the input
* @param[out] brks pointer to the output breaking data,
* containing #LINEBREAK_MUSTBREAK,
* #LINEBREAK_ALLOWBREAK, #LINEBREAK_NOBREAK,
* or #LINEBREAK_INSIDEACHAR
* @param[in] get_next_char function to get the next UTF-32 character
*/
void set_linebreaks(
const void *s,
size_t len,
const char *lang,
char *brks,
get_next_char_t get_next_char)
{
utf32_t ch;
enum LineBreakClass lbcCur;
enum LineBreakClass lbcNew;
enum LineBreakClass lbcLast;
struct LineBreakProperties *lbpLang;
size_t posCur = 0;
size_t posLast = 0;
--posLast; /* To be ++'d later */
ch = get_next_char(s, len, &posCur);
if (ch == EOS)
return;
lbpLang = get_lb_prop_lang(lang);
lbcCur = resolve_lb_class(get_char_lb_class_lang(ch, lbpLang), lang);
lbcNew = LBP_Undefined;
nextline:
/* Special treatment for the first character */
switch (lbcCur)
{
case LBP_LF:
case LBP_NL:
lbcCur = LBP_BK;
break;
case LBP_SP:
lbcCur = LBP_WJ;
break;
default:
break;
}
/* Process a line till an explicit break or end of string */
for (;;)
{
for (++posLast; posLast < posCur - 1; ++posLast)
{
brks[posLast] = LINEBREAK_INSIDEACHAR;
}
assert(posLast == posCur - 1);
lbcLast = lbcNew;
ch = get_next_char(s, len, &posCur);
if (ch == EOS)
break;
lbcNew = get_char_lb_class_lang(ch, lbpLang);
if (lbcCur == LBP_BK || (lbcCur == LBP_CR && lbcNew != LBP_LF))
{
brks[posLast] = LINEBREAK_MUSTBREAK;
lbcCur = resolve_lb_class(lbcNew, lang);
goto nextline;
}
switch (lbcNew)
{
case LBP_SP:
brks[posLast] = LINEBREAK_NOBREAK;
continue;
case LBP_BK:
case LBP_LF:
case LBP_NL:
brks[posLast] = LINEBREAK_NOBREAK;
lbcCur = LBP_BK;
continue;
case LBP_CR:
brks[posLast] = LINEBREAK_NOBREAK;
lbcCur = LBP_CR;
continue;
case LBP_CB:
brks[posLast] = LINEBREAK_ALLOWBREAK;
lbcCur = LBP_BA;
continue;
default:
break;
}
lbcNew = resolve_lb_class(lbcNew, lang);
assert(lbcCur <= LBP_JT);
assert(lbcNew <= LBP_JT);
switch (baTable[lbcCur - 1][lbcNew - 1])
{
case DIRECT_BRK:
brks[posLast] = LINEBREAK_ALLOWBREAK;
break;
case CM_INDIRECT_BRK:
case INDIRECT_BRK:
if (lbcLast == LBP_SP)
{
brks[posLast] = LINEBREAK_ALLOWBREAK;
}
else
{
brks[posLast] = LINEBREAK_NOBREAK;
}
break;
case CM_PROHIBITED_BRK:
brks[posLast] = LINEBREAK_NOBREAK;
if (lbcLast != LBP_SP)
continue;
break;
case PROHIBITED_BRK:
brks[posLast] = LINEBREAK_NOBREAK;
break;
}
lbcCur = lbcNew;
}
assert(posLast == posCur - 1 && posCur <= len);
/* Break after the last character */
brks[posLast] = LINEBREAK_MUSTBREAK;
/* When the input contains incomplete sequences */
while (posCur < len)
{
brks[posCur++] = LINEBREAK_INSIDEACHAR;
}
}
/**
* Sets the line breaking information for a UTF-8 input string.
*
* @param[in] s input UTF-8 string
* @param[in] len length of the input
* @param[in] lang language of the input
* @param[out] brks pointer to the output breaking data, containing
* #LINEBREAK_MUSTBREAK, #LINEBREAK_ALLOWBREAK,
* #LINEBREAK_NOBREAK, or #LINEBREAK_INSIDEACHAR
*/
void set_linebreaks_utf8(
const utf8_t *s,
size_t len,
const char *lang,
char *brks)
{
set_linebreaks(s, len, lang, brks, (get_next_char_t)get_next_char_utf8);
}
/**
* Sets the line breaking information for a UTF-16 input string.
*
* @param[in] s input UTF-16 string
* @param[in] len length of the input
* @param[in] lang language of the input
* @param[out] brks pointer to the output breaking data, containing
* #LINEBREAK_MUSTBREAK, #LINEBREAK_ALLOWBREAK,
* #LINEBREAK_NOBREAK, or #LINEBREAK_INSIDEACHAR
*/
void set_linebreaks_utf16(
const utf16_t *s,
size_t len,
const char *lang,
char *brks)
{
set_linebreaks(s, len, lang, brks, (get_next_char_t)get_next_char_utf16);
}
/**
* Sets the line breaking information for a UTF-32 input string.
*
* @param[in] s input UTF-32 string
* @param[in] len length of the input
* @param[in] lang language of the input
* @param[out] brks pointer to the output breaking data, containing
* #LINEBREAK_MUSTBREAK, #LINEBREAK_ALLOWBREAK,
* #LINEBREAK_NOBREAK, or #LINEBREAK_INSIDEACHAR
*/
void set_linebreaks_utf32(
const utf32_t *s,
size_t len,
const char *lang,
char *brks)
{
set_linebreaks(s, len, lang, brks, (get_next_char_t)get_next_char_utf32);
}
/**
* Tells whether a line break can occur between two Unicode characters.
* This is a wrapper function to expose a simple interface. Generally
* speaking, it is better to use #set_linebreaks_utf32 instead, since
* complicated cases involving combining marks, spaces, etc. cannot be
* correctly processed.
*
* @param char1 the first Unicode character
* @param char2 the second Unicode character
* @param lang language of the input
* @return one of #LINEBREAK_MUSTBREAK, #LINEBREAK_ALLOWBREAK,
* #LINEBREAK_NOBREAK, or #LINEBREAK_INSIDEACHAR
*
* @deprecated This function will be renamed to #is_line_breakable in
* the future. The name is already defined as a
* macro&mdash;please use it.
*/
int is_breakable(
utf32_t char1,
utf32_t char2,
const char* lang)
{
utf32_t s[2];
char brks[2];
s[0] = char1;
s[1] = char2;
set_linebreaks_utf32(s, 2, lang, brks);
return brks[0];
}

View file

@ -0,0 +1,140 @@
/* vim: set tabstop=4 shiftwidth=4: */
/*
* Line breaking in a Unicode sequence. Designed to be used in a
* generic text renderer.
*
* Copyright (C) 2008-2009 Wu Yongwei <wuyongwei at gmail dot com>
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the author be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute
* it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must
* not claim that you wrote the original software. If you use this
* software in a product, an acknowledgement in the product
* documentation would be appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must
* not be misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source
* distribution.
*
* The main reference is Unicode Standard Annex 14 (UAX #14):
* <URL:http://www.unicode.org/reports/tr14/>
*
* When this library was designed, this annex was at Revision 19, for
* Unicode 5.0.0:
* <URL:http://www.unicode.org/reports/tr14/tr14-19.html>
*
* This library has been updated according to Revision 22, for
* Unicode 5.1.0:
* <URL:http://www.unicode.org/reports/tr14/tr14-22.html>
*
* The Unicode Terms of Use are available at
* <URL:http://www.unicode.org/copyright.html>
*/
/**
* @file linebreak.h
*
* Header file for the line breaking algorithm.
*
* @version 1.2, 2009/05/03
* @author Wu Yongwei
*/
#ifndef LINEBREAK_H
#define LINEBREAK_H
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifndef LINEBREAK_UTF_TYPES_DEFINED
#define LINEBREAK_UTF_TYPES_DEFINED
typedef unsigned char utf8_t; /**< Type for UTF-8 data points */
typedef unsigned short utf16_t; /**< Type for UTF-16 data points */
typedef unsigned int utf32_t; /**< Type for UTF-32 data points */
#endif
#define LINEBREAK_MUSTBREAK 0 /**< Break is mandatory */
#define LINEBREAK_ALLOWBREAK 1 /**< Break is allowed */
#define LINEBREAK_NOBREAK 2 /**< No break is possible */
#define LINEBREAK_INSIDEACHAR 3 /**< A UTF-8/16 sequence is unfinished */
/**
* Initializes the second-level index to the line breaking properties.
* If it is not called, the performance of #get_char_lb_class_lang (and
* thus the main functionality) can be pretty bad, especially for big
* code points like those of Chinese.
*/
void init_linebreak(void);
int is_breakable(utf32_t char1, utf32_t char2, const char* lang);
/**
* Sets the line breaking information for a UTF-8 input string.
*
* @param[in] s input UTF-8 string
* @param[in] len length of the input
* @param[in] lang language of the input
* @param[out] brks pointer to the output breaking data, containing
* #LINEBREAK_MUSTBREAK, #LINEBREAK_ALLOWBREAK,
* #LINEBREAK_NOBREAK, or #LINEBREAK_INSIDEACHAR
*/
void set_linebreaks_utf8(
const utf8_t *s, size_t len, const char* lang, char *brks);
/**
* Sets the line breaking information for a UTF-16 input string.
*
* @param[in] s input UTF-16 string
* @param[in] len length of the input
* @param[in] lang language of the input
* @param[out] brks pointer to the output breaking data, containing
* #LINEBREAK_MUSTBREAK, #LINEBREAK_ALLOWBREAK,
* #LINEBREAK_NOBREAK, or #LINEBREAK_INSIDEACHAR
*/
void set_linebreaks_utf16(
const utf16_t *s, size_t len, const char* lang, char *brks);
/**
* Sets the line breaking information for a UTF-32 input string.
*
* @param[in] s input UTF-32 string
* @param[in] len length of the input
* @param[in] lang language of the input
* @param[out] brks pointer to the output breaking data, containing
* #LINEBREAK_MUSTBREAK, #LINEBREAK_ALLOWBREAK,
* #LINEBREAK_NOBREAK, or #LINEBREAK_INSIDEACHAR
*/
void set_linebreaks_utf32(
const utf32_t *s, size_t len, const char* lang, char *brks);
/**
* Replacement form for the deprecated function #is_breakable. Please
* use the macro for the present moment, before the function is renamed.
* <p>This is a wrapper function to expose a simple interface. Generally
* speaking, it is better to use #set_linebreaks_utf32 instead, since
* complicated cases involving combining marks, spaces, etc. cannot be
* correctly processed.
*
* @param char1 the first Unicode character
* @param char2 the second Unicode character
* @param lang language of the input
* @return one of #LINEBREAK_MUSTBREAK, #LINEBREAK_ALLOWBREAK,
* #LINEBREAK_NOBREAK, or #LINEBREAK_INSIDEACHAR
*/
#define is_line_breakable is_breakable
#ifdef __cplusplus
}
#endif
#endif /* LINEBREAK_H */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
/* The content of this file is generated from:

View file

@ -0,0 +1,7 @@
*/
#include "linebreak.h"
#include "linebreakdef.h"
/** Default line breaking properties as from the Unicode Web site. */
struct LineBreakProperties lb_prop_default[] = {

View file

@ -0,0 +1,2 @@
{ 0xFFFFFFFF, 0xFFFFFFFF, LBP_Undefined }
};

View file

@ -0,0 +1,139 @@
/* vim: set tabstop=4 shiftwidth=4: */
/*
* Line breaking in a Unicode sequence. Designed to be used in a
* generic text renderer.
*
* Copyright (C) 2008-2009 Wu Yongwei <wuyongwei at gmail dot com>
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the author be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute
* it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must
* not claim that you wrote the original software. If you use this
* software in a product, an acknowledgement in the product
* documentation would be appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must
* not be misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source
* distribution.
*
* The main reference is Unicode Standard Annex 14 (UAX #14):
* <URL:http://www.unicode.org/reports/tr14/>
*
* When this library was designed, this annex was at Revision 19, for
* Unicode 5.0.0:
* <URL:http://www.unicode.org/reports/tr14/tr14-19.html>
*
* This library has been updated according to Revision 22, for
* Unicode 5.1.0:
* <URL:http://www.unicode.org/reports/tr14/tr14-22.html>
*
* The Unicode Terms of Use are available at
* <URL:http://www.unicode.org/copyright.html>
*/
/**
* @file linebreakdef.c
*
* Definition of language-specific data.
*
* @version 1.2, 2009/04/29
* @author Wu Yongwei
*/
#include "linebreak.h"
#include "linebreakdef.h"
/**
* English-specifc data over the default Unicode rules.
*/
static struct LineBreakProperties lb_prop_English[] = {
{ 0x2018, 0x2018, LBP_OP }, /* Left single quotation mark: opening */
{ 0x201C, 0x201C, LBP_OP }, /* Left double quotation mark: opening */
{ 0x201D, 0x201D, LBP_CL }, /* Right double quotation mark: closing */
{ 0, 0, LBP_Undefined }
};
/**
* German-specifc data over the default Unicode rules.
*/
static struct LineBreakProperties lb_prop_German[] = {
{ 0x00AB, 0x00AB, LBP_CL }, /* Left double angle quotation mark: closing */
{ 0x00BB, 0x00BB, LBP_OP }, /* Right double angle quotation mark: opening */
{ 0x2018, 0x2018, LBP_CL }, /* Left single quotation mark: closing */
{ 0x201C, 0x201C, LBP_CL }, /* Left double quotation mark: closing */
{ 0x2039, 0x2039, LBP_CL }, /* Left single angle quotation mark: closing */
{ 0x203A, 0x203A, LBP_OP }, /* Right single angle quotation mark: opening */
{ 0, 0, LBP_Undefined }
};
/**
* Spanish-specifc data over the default Unicode rules.
*/
static struct LineBreakProperties lb_prop_Spanish[] = {
{ 0x00AB, 0x00AB, LBP_OP }, /* Left double angle quotation mark: opening */
{ 0x00BB, 0x00BB, LBP_CL }, /* Right double angle quotation mark: closing */
{ 0x2018, 0x2018, LBP_OP }, /* Left single quotation mark: opening */
{ 0x201C, 0x201C, LBP_OP }, /* Left double quotation mark: opening */
{ 0x201D, 0x201D, LBP_CL }, /* Right double quotation mark: closing */
{ 0x2039, 0x2039, LBP_OP }, /* Left single angle quotation mark: opening */
{ 0x203A, 0x203A, LBP_CL }, /* Right single angle quotation mark: closing */
{ 0, 0, LBP_Undefined }
};
/**
* French-specifc data over the default Unicode rules.
*/
static struct LineBreakProperties lb_prop_French[] = {
{ 0x00AB, 0x00AB, LBP_OP }, /* Left double angle quotation mark: opening */
{ 0x00BB, 0x00BB, LBP_CL }, /* Right double angle quotation mark: closing */
{ 0x2018, 0x2018, LBP_OP }, /* Left single quotation mark: opening */
{ 0x201C, 0x201C, LBP_OP }, /* Left double quotation mark: opening */
{ 0x201D, 0x201D, LBP_CL }, /* Right double quotation mark: closing */
{ 0x2039, 0x2039, LBP_OP }, /* Left single angle quotation mark: opening */
{ 0x203A, 0x203A, LBP_CL }, /* Right single angle quotation mark: closing */
{ 0, 0, LBP_Undefined }
};
/**
* Russian-specifc data over the default Unicode rules.
*/
static struct LineBreakProperties lb_prop_Russian[] = {
{ 0x00AB, 0x00AB, LBP_OP }, /* Left double angle quotation mark: opening */
{ 0x00BB, 0x00BB, LBP_CL }, /* Right double angle quotation mark: closing */
{ 0x201C, 0x201C, LBP_CL }, /* Left double quotation mark: closing */
{ 0, 0, LBP_Undefined }
};
/**
* Chinese-specifc data over the default Unicode rules.
*/
static struct LineBreakProperties lb_prop_Chinese[] = {
{ 0x2018, 0x2018, LBP_OP }, /* Left single quotation mark: opening */
{ 0x2019, 0x2019, LBP_CL }, /* Right single quotation mark: closing */
{ 0x201C, 0x201C, LBP_OP }, /* Left double quotation mark: opening */
{ 0x201D, 0x201D, LBP_CL }, /* Right double quotation mark: closing */
{ 0, 0, LBP_Undefined }
};
/**
* Association data of language-specific line breaking properties with
* language names. This is the definition for the static data in this
* file. If you want more flexibility, or do not need the data here,
* you may want to redefine \e lb_prop_lang_map in your C source file.
*/
struct LineBreakPropertiesLang lb_prop_lang_map[] = {
{ "en", 2, lb_prop_English },
{ "de", 2, lb_prop_German },
{ "es", 2, lb_prop_Spanish },
{ "fr", 2, lb_prop_French },
{ "ru", 2, lb_prop_Russian },
{ "zh", 2, lb_prop_Chinese },
{ NULL, 0, NULL }
};

View file

@ -0,0 +1,162 @@
/* vim: set tabstop=4 shiftwidth=4: */
/*
* Line breaking in a Unicode sequence. Designed to be used in a
* generic text renderer.
*
* Copyright (C) 2008-2009 Wu Yongwei <wuyongwei at gmail dot com>
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the author be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute
* it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must
* not claim that you wrote the original software. If you use this
* software in a product, an acknowledgement in the product
* documentation would be appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must
* not be misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source
* distribution.
*
* The main reference is Unicode Standard Annex 14 (UAX #14):
* <URL:http://www.unicode.org/reports/tr14/>
*
* When this library was designed, this annex was at Revision 19, for
* Unicode 5.0.0:
* <URL:http://www.unicode.org/reports/tr14/tr14-19.html>
*
* This library has been updated according to Revision 22, for
* Unicode 5.1.0:
* <URL:http://www.unicode.org/reports/tr14/tr14-22.html>
*
* The Unicode Terms of Use are available at
* <URL:http://www.unicode.org/copyright.html>
*/
/**
* @file linebreakdef.h
*
* Definitions of internal data structures, declarations of global
* variables, and function prototypes for the line breaking algorithm.
*
* @version 1.2, 2009/05/03
* @author Wu Yongwei
*/
/**
* Constant value to mark the end of string. It is not a valid Unicode
* character.
*/
#define EOS 0xFFFF
/**
* Line break classes. This is a direct mapping of Table 1 of Unicode
* Standard Annex 14, Revision 19.
*/
enum LineBreakClass
{
/* This is used to signal an error condition. */
LBP_Undefined, /**< Undefined */
/* The following break classes are treated in the pair table. */
LBP_OP, /**< Opening punctuation */
LBP_CL, /**< Closing punctuation */
LBP_QU, /**< Ambiguous quotation */
LBP_GL, /**< Glue */
LBP_NS, /**< Non-starters */
LBP_EX, /**< Exclamation/Interrogation */
LBP_SY, /**< Symbols allowing break after */
LBP_IS, /**< Infix separator */
LBP_PR, /**< Prefix */
LBP_PO, /**< Postfix */
LBP_NU, /**< Numeric */
LBP_AL, /**< Alphabetic */
LBP_ID, /**< Ideographic */
LBP_IN, /**< Inseparable characters */
LBP_HY, /**< Hyphen */
LBP_BA, /**< Break after */
LBP_BB, /**< Break before */
LBP_B2, /**< Break on either side (but not pair) */
LBP_ZW, /**< Zero-width space */
LBP_CM, /**< Combining marks */
LBP_WJ, /**< Word joiner */
LBP_H2, /**< Hangul LV */
LBP_H3, /**< Hangul LVT */
LBP_JL, /**< Hangul L Jamo */
LBP_JV, /**< Hangul V Jamo */
LBP_JT, /**< Hangul T Jamo */
/* The following break classes are not treated in the pair table */
LBP_AI, /**< Ambiguous (alphabetic or ideograph) */
LBP_BK, /**< Break (mandatory) */
LBP_CB, /**< Contingent break */
LBP_CR, /**< Carriage return */
LBP_LF, /**< Line feed */
LBP_NL, /**< Next line */
LBP_SA, /**< South-East Asian */
LBP_SG, /**< Surrogates */
LBP_SP, /**< Space */
LBP_XX /**< Unknown */
};
/**
* Struct for entries of line break properties. The array of the
* entries \e must be sorted.
*/
struct LineBreakProperties
{
utf32_t start; /**< Starting coding point */
utf32_t end; /**< End coding point */
enum LineBreakClass prop; /**< The line breaking property */
};
/**
* Struct for association of language-specific line breaking properties
* with language names.
*/
struct LineBreakPropertiesLang
{
const char *lang; /**< Language name */
size_t namelen; /**< Length of name to match */
struct LineBreakProperties *lbp; /**< Pointer to associated data */
};
/**
* Abstract function interface for #get_next_char_utf8,
* #get_next_char_utf16, and #get_next_char_utf32.
*/
typedef utf32_t (*get_next_char_t)(const void *, size_t, size_t *);
/* Declarations */
extern struct LineBreakProperties lb_prop_default[];
extern struct LineBreakPropertiesLang lb_prop_lang_map[];
/* Function Prototypes */
/**
* Sets the line breaking information for a generic input string.
*
* @param[in] s input string
* @param[in] len length of the input
* @param[in] lang language of the input
* @param[out] brks pointer to the output breaking data,
* containing #LINEBREAK_MUSTBREAK,
* #LINEBREAK_ALLOWBREAK, #LINEBREAK_NOBREAK,
* or #LINEBREAK_INSIDEACHAR
* @param[in] get_next_char function to get the next UTF-32 character
*/
void set_linebreaks(
const void *s,
size_t len,
const char *lang,
char *brks,
get_next_char_t get_next_char);
utf32_t get_next_char_utf8(const utf8_t *s, size_t len, size_t *ip);
utf32_t get_next_char_utf16(const utf16_t *s, size_t len, size_t *ip);
utf32_t get_next_char_utf32(const utf32_t *s, size_t len, size_t *ip);

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,367 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
scriptversion=2006-05-10.23
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
# Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program 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 General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
run=:
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
# In the cases where this matters, `missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
else
configure_ac=configure.in
fi
msg="missing on your system"
case $1 in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
shift
"$@" && exit 0
# Exit code 63 means version mismatch. This often happens
# when the user try to use an ancient version of a tool on
# a file that requires a minimum version. In this case we
# we should proceed has if the program had been absent, or
# if --run hadn't been passed.
if test $? = 63; then
run=:
msg="probably too old"
fi
;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
autom4te touch the output file, or create a stub one
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
Send bug reports to <bug-automake@gnu.org>."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;
esac
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
# the program).
case $1 in
lex|yacc)
# Not GNU programs, they don't have --version.
;;
tar)
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
exit 1
fi
;;
*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
# Could not run --version or --help. This is probably someone
# running `$TOOL --version' or `$TOOL --help' to check whether
# $TOOL exists and not knowing $TOOL uses missing.
exit 1
fi
;;
esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
case $1 in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
case $f in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
esac
done
touch $touch_files
;;
automake*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
sed 's/\.am$/.in/' |
while read f; do touch "$f"; done
;;
autom4te)
echo 1>&2 "\
WARNING: \`$1' is needed, but is $msg.
You might have modified some files without having the
proper tools for further handling them.
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo "#! /bin/sh"
echo "# Created by GNU Automake missing as a replacement of"
echo "# $ $@"
echo "exit 0"
chmod +x $file
exit 1
fi
;;
bison|yacc)
echo 1>&2 "\
WARNING: \`$1' $msg. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
if test ! -f y.tab.h; then
echo >y.tab.h
fi
if test ! -f y.tab.c; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
lex|flex)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
if test ! -f lex.yy.c; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
help2man)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a dependency of a manual page. You may need the
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
exit 1
fi
;;
makeinfo)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy \`make' (AIX,
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -z "$file"; then
# ... or it is the one specified with @setfilename ...
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
file=`sed -n '
/^@setfilename/{
s/.* \([^ ]*\) *$/\1/
p
q
}' $infile`
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
# If the file does not exist, the user really needs makeinfo;
# let's fail without touching anything.
test -f $file || exit 1
touch $file
;;
tar)
shift
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
# messages.
if (gnutar --version > /dev/null 2>&1); then
gnutar "$@" && exit 0
fi
if (gtar --version > /dev/null 2>&1); then
gtar "$@" && exit 0
fi
firstarg="$1"
if shift; then
case $firstarg in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
case $firstarg in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
;;
esac
fi
echo 1>&2 "\
WARNING: I can't seem to be able to run \`tar' with the given arguments.
You may want to install GNU tar or Free paxutils, or check the
command line arguments."
exit 1
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and is $msg.
You might have modified some files without having the
proper tools for further handling them. Check the \`README' file,
it often tells you about the needed prerequisites for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1' program."
exit 1
;;
esac
exit 0
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View file

@ -0,0 +1,15 @@
#include <jni.h>
#include "liblinebreak-1.2/linebreak.h"
void Java_org_vimgadgets_linebreak_LineBreak_init() {
init_linebreak();
}
void Java_org_vimgadgets_linebreak_LineBreak_setLineBreaksForCharArray(jcharArray data, jstring lang, jbyteArray breaks) {
// TODO: implement
}
void Java_org_vimgadgets_linebreak_LineBreak_setLineBreaksForString(jstring data, jstring lang, jbyteArray breaks) {
// TODO: implement
}

View file

@ -21,9 +21,11 @@ package org.geometerplus.fbreader.formats.oeb;
import java.util.*;
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
import org.geometerplus.zlibrary.core.xml.*;
import org.geometerplus.fbreader.bookmodel.*;
import org.geometerplus.fbreader.formats.util.MiscUtil;
class NCXReader extends ZLXMLReaderAdapter {
static class NavPoint {
@ -50,11 +52,18 @@ class NCXReader extends ZLXMLReaderAdapter {
int myReadState = READ_NONE;
int myPlayIndex = -65535;
private String myLocalPathPrefix;
NCXReader(BookReader modelReader) {
myModelReader = modelReader;
}
boolean readFile(String filePath) {
final ZLFile file = ZLFile.createFileByPath(filePath);
myLocalPathPrefix = MiscUtil.archiveEntryName(MiscUtil.htmlDirectoryPrefix(file));
return read(file);
}
Map<Integer,NavPoint> navigationMap() {
return myNavigationMap;
}
@ -102,7 +111,7 @@ class NCXReader extends ZLXMLReaderAdapter {
} else if (tag == TAG_CONTENT) {
final int size = myPointStack.size();
if (size > 0) {
myPointStack.get(size - 1).ContentHRef = attributes.getValue("src");
myPointStack.get(size - 1).ContentHRef = myLocalPathPrefix + attributes.getValue("src");
}
}
break;

View file

@ -75,7 +75,7 @@ class OEBBookReader extends ZLXMLReaderAdapter implements XMLNamespace {
myModelReader.pushKind(FBTextKind.REGULAR);
for (String name : myHtmlFileNames) {
new XHTMLReader(myModelReader).readFile(ZLFile.createFileByPath(myFilePrefix + name), name);
new XHTMLReader(myModelReader).readFile(ZLFile.createFileByPath(myFilePrefix + name));
myModelReader.insertEndOfSectionParagraph();
}
@ -86,8 +86,8 @@ class OEBBookReader extends ZLXMLReaderAdapter implements XMLNamespace {
private void generateTOC() {
if (myNCXTOCFileName != null) {
NCXReader ncxReader = new NCXReader(myModelReader);
if (ncxReader.read(ZLFile.createFileByPath(myFilePrefix + myNCXTOCFileName))) {
final NCXReader ncxReader = new NCXReader(myModelReader);
if (ncxReader.readFile(myFilePrefix + myNCXTOCFileName)) {
final Map<Integer,NCXReader.NavPoint> navigationMap = ncxReader.navigationMap();
if (!navigationMap.isEmpty()) {
int level = 0;

View file

@ -32,4 +32,9 @@ public class MiscUtil {
}
return path.substring(0, path.length() - shortName.length() + index + 1);
}
public static String archiveEntryName(String fullPath) {
final int index = fullPath.lastIndexOf(':');
return (index >= 2) ? fullPath.substring(index + 1) : fullPath;
}
}

View file

@ -131,15 +131,15 @@ public class XHTMLReader extends ZLXMLReaderAdapter {
return myModelReader;
}
public boolean readFile(ZLFile file, String referenceName) {
myModelReader.addHyperlinkLabel(referenceName);
public boolean readFile(ZLFile file) {
fillTagTable();
myReferenceName = MiscUtil.archiveEntryName(file.getPath());
myModelReader.addHyperlinkLabel(myReferenceName);
myPathPrefix = MiscUtil.htmlDirectoryPrefix(file);
final int index = myPathPrefix.lastIndexOf(':');
myLocalPathPrefix = (index >= 2) ? myPathPrefix.substring(index + 1) : myPathPrefix;
myReferenceName = referenceName;
myLocalPathPrefix = MiscUtil.archiveEntryName(myPathPrefix);
myPreformatted = false;
myInsideBody = false;
@ -147,21 +147,6 @@ public class XHTMLReader extends ZLXMLReaderAdapter {
return read(file);
}
/*
public boolean readFile(String pathPrefix, InputStream stream, String referenceName) {
myModelReader.addHyperlinkLabel(referenceName);
fillTagTable();
myPathPrefix = pathPrefix;
myReferenceName = referenceName;
myPreformatted = false;
return read(stream);
}
*/
public boolean startElementHandler(String tag, ZLStringMap attributes) {
String id = attributes.getValue("id");
if (id != null) {

View file

@ -43,13 +43,16 @@ class XHTMLTagHyperlinkAction extends XHTMLTagAction {
myHyperlinkStack = ZLArrayUtils.createCopy(myHyperlinkStack, myHyperlinkStackSize, 2 * myHyperlinkStackSize);
}
if ((href != null) && (href.length() > 0)) {
final String link = (href.charAt(0) == '#') ? (reader.myReferenceName + href) : href;
final byte hyperlinkType =
isReference(link) ?
FBTextKind.EXTERNAL_HYPERLINK :
FBTextKind.INTERNAL_HYPERLINK;
String link = (href.charAt(0) == '#') ? (reader.myReferenceName + href) : href;
final byte hyperlinkType;
if (isReference(link)) {
hyperlinkType = FBTextKind.EXTERNAL_HYPERLINK;
} else {
hyperlinkType = FBTextKind.INTERNAL_HYPERLINK;
link = reader.myLocalPathPrefix + link;
}
myHyperlinkStack[myHyperlinkStackSize++] = hyperlinkType;
modelReader.addHyperlinkControl(hyperlinkType, reader.myLocalPathPrefix + link);
modelReader.addHyperlinkControl(hyperlinkType, link);
} else {
myHyperlinkStack[myHyperlinkStackSize++] = FBTextKind.REGULAR;
}

View file

@ -20,7 +20,7 @@
package org.geometerplus.zlibrary.text.view;
import java.util.*;
import org.geometerplus.zlibrary.core.util.*;
//import org.vimgadgets.linebreak.LineBreak;
import org.geometerplus.zlibrary.core.image.*;
import org.geometerplus.zlibrary.text.model.*;
@ -52,6 +52,7 @@ public final class ZLTextParagraphCursor {
}
void fill() {
//new LineBreak("en");
final ArrayList<ZLTextElement> elements = myElements;
for (ZLTextParagraph.EntryIterator it = myParagraph.iterator(); it.hasNext(); ) {
it.next();

View file

@ -0,0 +1,26 @@
package org.vimgadgets.linebreak;
public final class LineBreak {
static {
System.loadLibrary("linebreak");
init();
}
private static native void init();
private static native void setLineBreaksForCharArray(char[] data, String lang, byte[] breaks);
private static native void setLineBreaksForString(String data, String lang, byte[] breaks);
private final String myLanguage;
public LineBreak(String lang) {
myLanguage = lang;
}
public void setLineBreaks(char[] data, byte[] breaks) {
setLineBreaksForCharArray(data, myLanguage, breaks);
}
public void setLineBreaks(String data, byte[] breaks) {
setLineBreaksForString(data, myLanguage, breaks);
}
}