2012-06-13  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* configure.in, NEWS:
	=== Version 0.4.3 ===

2012-06-13  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* AUTHORS: Add info for word list source.

2012-06-12  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* data/Makefile.am, +data/tdict-*.txt:
	  - Add dictionary source from dehyphenated text of thailatex
	    hyphenation dictionary source.

	* data/Makefile.am, -data/swathdic.lst:
	  - Drop old dictionary source.
	  - Build the dictionary source by catenating dict files.

2012-06-12  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* data/Makefile.am, +data/update-dict.sh:
	  - Add script for updating dictionary from thailatex hyphenation
	    source.

2012-03-22  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* data/Makefile.am, data/swathdic.lst: Convert word list to UTF-8.

2012-03-22  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* configure.in: Post-release version suffix added.

2012-02-08  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* configure.in, NEWS:
	=== Version 0.4.2 ===

2012-02-08  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterrtf.cpp (FilterRTF::GetNextToken):
	  - Fix GCC warnings on sscanf format strings.

2012-01-04  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/maxwordseg.cpp (MaxWordSeg::WordSegArea):
	  - The last "wState" use is also temporary, replaced with
	    intermediate object.

2012-01-04  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/maxwordseg.cpp (MaxWordSeg::WordSegArea):
	  - Split out the assignment in if-condition.
	  - Delay the "curState" declaration and merge the steps.

2012-01-04  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/maxwordseg.cpp (MaxWordSeg::WordSegArea):
	  - Declare vars where they are used.
	  - "Idx" var type from short int to int, to match function args it
	    keeps up with.
	  - First "wState" use is temporary, replaced with intermediate object.
	  - "tmps" var eliminated, replaced with immediate assignment.
	  - Merge "looptime" break into while-loop condition.

2012-01-04  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Change MaxWordSeg SepType::Score type from float to int.

	All calculations are already in int, and the casts are just
	unnecessary, and indicates that "float" is never intended.
	Change short int to int to be more machine-native.

	* src/worddef.h:
	  - Change SepType::Score type to int.
	* src/maxwordseg.cpp (MaxWordSeg::WordSegArea):
	  - Change types of "bestScore", "tmps", "score[]" to int.
	  - Drop all (short int) type casts.

2012-01-04  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/maxwordseg.cpp (MaxWordSeg::CreateSentence):
	  - Declare vars where they are used.
	  - Drop unused var "cntArea".
	  - Rearrange source.

2012-01-03  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlatex.cpp (FilterLatex::AdjustText):
	  - Add the missing case of "below vowel + tone mark".

2012-01-03  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlatex.cpp (static data, idxVowelToneMark):
	  - Move static data definitions to near FilterLatex::AdjustText().
	  - Rearrange the data so that 3 sets of characters are handled
	    separately (top marks, above marks, below marks).
	  - Split idxVowelToneMark() into idxTopMark(), idxAboveMark() and
	    idxBelowMark(); make them return -1 on failure, for easy data
	    management.
	  - Replace all 8-bit codes with hex.
	* src/filterlatex.cpp (FilterLatex::AdjustText):
	  - Call the classifiers and use the data under new convention.
	  - Fix bug for the case of below vowels under Do Chada, To Patak.

2012-01-03  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlatex.cpp (FilterLatex::AdjustText):
	  - Guard against buffer overflow on extra char (Sara-Aa).
	  - Change boundary checking condition, to improve the chance of
	    optimization.

2012-01-03  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlatex.cpp (FilterLatex::AdjustText):
	  - Get rid of "chgchar" var by just writing output first and
	    overwriting it later.

2012-01-03  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlatex.h, src/filterlatex.cpp (FilterLatex::AdjustText):
	  - Add "output_sz" arg and check to prevent buffer overflow.
	  - Also return total written bytes for caller to check.
	* src/filterlatex.cpp (FilterLatex::Print):
	  - Adjust call accordingly.

2012-01-03  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlatex.cpp (FilterLatex::AdjustText):
	  - Drop unnecessary vars "tmpInput" and "tmpOutput".

2012-01-02  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Adjust source.

	* src/filterlatex.cpp (FilterLatex::Print):
	  - Use stack array instead of heap allocation for output buffer.
	  - Merge if-cases.

2012-01-02  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Adjust source.

	* src/filterlatex.cpp (FilterLatex::GetNextToken):
	  - Replace hard-coded buffer size 1999 with "sizeof buffer".
	  - Get rid of "stPtr" var, which was set only once to "buffer"
	    and never changed.
	  - Declare vars where they are used.
	  - Adjust brackets & conditions.

2012-01-02  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/maxwordseg.h:
	  - Drop "findAmbArea()" method, which was never defined nor
	    referenced from anywhere.

2012-01-02  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Get rid of temporary member MaxWordSeg::score.

	Its only use was in WordSegArea(), so it can be local var.

	* src/maxwordseg.cpp (MaxWordSeg::WordSegArea):
	  - Declare score as local array (no heap allocation).
	* src/maxwordseg.h, src/maxwordseg.cpp:
	  - Drop "score" new/delete.
	  - Drop now-empty d-tor.

2012-01-02  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Get rid of temporary member MaxWordSeg::sepIdx.

	Its only use was to pass value between CreateSentence() and
	saveSegment() methods. This should be done via function arg instead.

	The other occurrence of "sepIdx" in WordSegArea() is already local
	var, and thus irrelevant.

	* src/maxwordseg.h, src/maxwordseg.cpp (MaxWordSeg::saveSegment):
	  - Add "sepIdx" arg and return its updated value when finished.
	* src/maxwordseg.cpp (MaxWordSeg::CreateSentence):
	  - Declare "sepIdx" as local var.
	  - Update its value from saveSegment() return value.
	* src/maxwordseg.h (class MaxWordSeg):
	  - Drop "sepIdx" member.

2012-01-02  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/maxwordseg.h, src/maxwordseg.cpp (MaxWordSeg::MaxWordSeg):
	  - Drop unused "noAmbArea" member.

2012-01-02  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/maxwordseg.h:
	  - Rearrange member declarations.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.h:
	  - Rearrange member declarations.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/dictpath.h:
	* src/wordstack.h:
	* src/worddef.h:
	* src/abswordseg.h:
	* src/longwordseg.h:
	* src/maxwordseg.h:
	  - Adjust repeated-inclusion-preventing preprocessor style for
	    consistency.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterrtf.cpp (FilterRTF::FilterRTF):
	  - Initialize members with initialization list where possible.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterrtf.h:
	  - More member declaration rearrangement.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterhtml.h, src/filterhtml.cpp:
	* src/filterrtf.h, src/filterrtf.cpp:
	  - Rearrange member declarations.
	  - Drop the empty d-tor.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlatex.h, src/filterlatex.cpp:
	  - Drop the empty d-tor.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlatex.cpp (FilterLatex::FilterLatex):
	  - Initialize members with initialization list where possible.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlatex.h:
	  - Rearrange member declarations.
	  - Make AdjustText() private.
	  - Make winCharSet, latexFlag private.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlatex.h, src/filterlatex.cpp:
	  - Make idxVowelToneMark() non-member, as it depends on file-internal
	    static vars.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlatex.h, src/worddef.h, src/filterlatex.cpp:
	  - Move isLongTailChar() to global worddef.h. Rename it to
	    isThaiLongTailChar().
	  - Adjust all calls in filterlatex.cpp accordingly.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Make FilterX::wordBreakStr private and initialized by c-tor.

	* src/filterx.h:
	  - Make FilterX::wordBreakStr private.
	  - Add wordBreakStr arg to c-tor.
	* src/filterlatex.h:
	  - Add wordBreakStr arg to c-tor with default value for LaTeX,
	    so it can be overridden by FilterLambda.
	* src/filterlatex.cpp (FilterLatex::FilterLatex):
	  - Pass the wordBreakStr to FilterX c-tor instead of direct
	    assignment.
	* src/filterlambda.h (FilterLambda::FilterLambda):
	  - Pass Lambda word break string to FilterLatex c-tor instead of
	    direct assignment.
	* src/filterrtf.cpp (FilterRTF::FilterRTF):
	* src/filterhtml.cpp (FilterHtml::FilterHtml):
	  - Pass specific word break string to FilterX c-tor instead of
	    direct assignment.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterrtf.h, src/filterrtf.cpp:
	  - Apply "indent -nut" + manual adjustments.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlambda.h, -src/filterlambda.cpp, src/Makefile.am:
	  - Apply "indent -nut" + manual adjustments.
	  - Move FilterLambda member functions to header and make them inline.
	  - Drop empty d-tor.
	  - Remove now-unused filterlambda.h.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.h:
	* src/abswordseg.cpp:
	* src/wordseg.cpp:
	* src/filterx.h:
	* src/filterlatex.h:
	* src/filterlatex.cpp:
	* src/filefilter.h:
	* src/filefilter.cpp:
	* src/maxwordseg.h:
	  - Change pointer declarations to C++ style.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterhtml.h, src/filterhtml.cpp:
	  - Apply "indent -nut" + manual adjustments.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlatex.cpp (FilterLatex::Print):
	  - Remove unused var "lwbr".

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlatex.h, src/filterlatex.cpp:
	  - Apply "indent -nut" + manual adjustments.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filefilter.h, src/filefilter.cpp:
	  - Apply "indent -nut" + manual adjustments.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterx.h, -src/filterx.cpp, src/Makefile.am:
	  - Drop unused member "fileopen".
	  - Adjust c-tor to use initialization list; also initialize
	    wordBreakStr to a default value.
	  - Move all FilterX member functions to header and make them inline.
	  - Drop now-unneeded filterx.cpp.

2011-12-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterx.cpp, src/filterx.h:
	  - Apply "indent -nut" + manual adjustments.

2011-12-30  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordstack.h:
	  - Add preprocessor to prevent duplicated inclusion.

2011-12-30  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordstack.h:
	  - Apply "indent -nut" + manual adjustments.

2011-12-30  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Move tis2uni() and isthaidigit() to worddef.h

	* src/worddef.h:
	  - Define tis2uni() & isThaiDigit() inline functions here.
	* src/abswordseg.cpp:
	  - Drop old macros.
	  - Include worddef.h.
	  - Replace isthaidigit() calls with isThaiDigit().

2011-12-30  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Replace some internal char classifiers with <ctype.h>

	* src/worddef.h, src/filterrtf.cpp, src/filterhtml.cpp:
	  - Drop isSpace(), use isspace() instead.
	  - Drop isHex(), use isxdigit() instead.

2011-12-30  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/worddef.h:
	  - Apply "indent -nut" + manual adjustments.

2011-12-30  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordseg.cpp:
	  - Declare internal functions static.
	  - Simplify myyisspace() and make it bool.
	  - Simplify RemoveJunkChars() and invert IsJunkChar() to
	    IsValidChar().

2011-12-30  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordseg.cpp:
	  - Apply "indent -nut" + manual adjustments.

2011-12-30  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/maxwordseg.cpp (MaxWordSeg::MaxWordSeg):
	  - Reformat c-tor.

2011-12-30  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/longwordseg.h, src/longwordseg.cpp:
	  - Apply "indent -nut" + manual adjustments.

2011-12-30  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.h:
	  - Remove obfuscated comment after last #endif.

2011-12-30  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/maxwordseg.h, src/maxwordseg.cpp:
	  - Apply "indent -nut" + manual adjustments.

2011-12-30  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.h, src/abswordseg.cpp:
	  - Reformat source as GNU style using "indent -nut" plus manual
	    adjustments.

2011-12-29  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.cpp (AbsWordSeg::CreateWordList):
	  - Adjust loops.

2011-12-29  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.cpp (AbsWordSeg::CreateWordList):
	  - Tokenize punctuation marks in chunks, not in characters,
	    to prevent breaking word in between, fixing problem with `` or ''
	    at line beginning in LaTeX. This should also be true in general.

2011-12-29  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/maxwordseg.cpp (MaxWordSeg::WordSegArea):
	  - Reformat source a little bit.

2011-12-29  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.cpp (AbsWordSeg::SwapLinkSep, AbsWordSeg::GetBestSen):
	  - Reformat source a little bit.

2011-12-29  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.cpp (AbsWordSeg::CreateWordList):
	  - Reformat source a little bit.

2011-12-28  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.cpp (AbsWordSeg::CreateWordList):
	  - Guard against i being 0 before accessing sen[i-1].

2011-12-28  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.cpp (AbsWordSeg::IsNumber, AbsWordSeg::IsEnglish):
	  - Replace ASCII range checks with ctype.h functions.

2011-12-28  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.cpp (AbsWordSeg::CreateWordList):
	  - Replace ASCII range checks with ctype.h functions.
	  - Replace TIS-620 range check with macro function.

2011-12-07  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* configure.in: Post-release version suffix added.
	* data/swathdic.lst: Remove a typo entry.

2011-03-20  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* configure.in, NEWS:
	=== Version 0.4.1 ===

2011-03-20  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* configure.in: Add AC_CONFIG_MACRO_DIR, as suggested by libtoolize.
	* Makefile.am: Add ACLOCAL_AMFLAGS, as suggested by libtoolize.

2011-03-20  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* configure.in, -swath.spec.in: Remove the outdated, unmaintained file.

2011-03-19  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.h (AbsWordSeg::Construct):
	  - Remove the remaining declaration of the removed method.

2011-03-19  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.cpp (AbsWordSeg::IsLeadChar, AbsWordSeg::IsLastChar):
	  - Simplify the methods.
	  - For IsLeadChar(), also exclude LAKKHANGYAO.
	* src/abswordseg.h, src/abswordseg.cpp
	  (AbsWordSeg::IsNumber, AbsWordSeg::IsEnglish, AbsWordSeg::Has_Karun):
	  - Make the methods accept const pointer as input.

2011-03-19  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Make class WordStack methods inline.

	* src/worddef.h (wordStateType):
	  - Simply name the struct type "wordState" and remove typedef'd type.
	  - Add c-tors for instantiation convenience.
	* src/wordstack.h (class WordStack):
	  - Replace "wordStateType" type with "wordState".
	  - Make all methods inline. They are all short functions.
	* src/Makefile.am, -src/wordstack.cpp:
	  - Remove the now-unused source file.
	* src/maxwordseg.cpp (MaxWordSeg::WordSegArea):
	* src/longwordseg.cpp (LongWordSeg::CreateSentence):
	  - Replace "wordStateType" type with "wordState".

2011-03-19  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Change the dictionary search order & mechanism.

	* src/swath.1: Document the new behavior.
	* src/wordseg.cpp (InitWordSegmentation):
	  - Implement the search order here instead of in main, so the
	    wordseg object is created and destroyed only once.
	  - WORDSEGDATA env is now changed to SWATHDICT.
	* src/wordseg.cpp (main):
	  - Call InitWordSegmentation() only once and let the multiple
	    trials happen there.

2011-03-18  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.cpp (AbsWordSeg::AbsWordSeg):
	* src/wordseg.cpp (main):
	  - Print errors on stderr, not stdout.

2011-03-18  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordseg.cpp (main): Rename 'wsegpath' var to 'dictpath'.

2011-03-18  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Enhance -d option to also accept a trie file.

	* src/abswordseg.h, src/abswordseg.cpp
	  (AbsWordSeg::AbsWordSeg, +AbsWordSeg::InitDict):
	  - Make dictionary opening be a normal method to be called after
	    construction, so the return state can be checked.
	  - Check if the path is a regular file or directory. If it's a
	    directory, append usual dict file name to it before opening.
	* src/maxwordseg.h, src/maxwordseg.cpp:
	* src/longwordseg.h, src/longwordseg.cpp:
	  - Remove c-tor with dict path arg.
	* src/wordseg.cpp (InitWordSegmentation):
	  - Don't try opening file. Just create the wordseg object and
	    call InitDict() to determine successfulness.
	* src/swath.1: Update man page to cover the new behavior, with example.

2011-03-18  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordseg.cpp (InitWordSegmentation):
	  - Use sprintf instead of series of strcat to format trie path name.

2011-03-18  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterx.h, src/filterx.cpp
	  (GetSuffix, GetPrefix, suffixStr, prefixStr):
	* src/filterrtf.cpp (FilterRTF::FilterRTF):
	* src/filterhtml.cpp (FilterHtml::FilterHtml):
	* src/filterlatex.cpp (FilterLatex::FilterLatex):
	  - Remove unused members & methods.

	* src/filterx.h (wordBreakStr)
	* src/filterrtf.cpp (FilterRTF::FilterRTF):
	* src/filterhtml.cpp (FilterHtml::FilterHtml):
	* src/filterlatex.cpp (FilterLatex::FilterLatex):
	* src/filterlambda.cpp (FilterLatex::FilterLatex):
	  - Make 'wordBreakStr' member (const char *) to string literal.

2011-03-18  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.cpp (AbsWordSeg::AbsWordSeg):
	Use macro D2TRIE for trie file name instead of hard literal.

2011-03-18  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.h, src/abswordseg.cpp
	  (AbsWordSeg, AbsWordSeg::AbsWordSeg, AbsWordSeg::InitData):
	  - Remove unused 'cntSep' member.

2011-03-18  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Move dict initialization to AbsWordSeg base class.

	* src/abswordseg.h (MyDict, InitData):
	  - Make the members private.
	* src/abswordseg.h, src/abswordseg.cpp
	  (AbsWordSeg::AbsWordSeg, +Construct, AbsWordSeg::~AbsWordSeg):
	* src/longwordseg.cpp (LongWordSeg::LongWordSeg):
	* src/maxwordseg.cpp (MaxWordSeg::MaxWordSeg):
	  - Move MyDict c-tor & d-tor code from derived class to base class.
	  - Add base class c-tor which accepts dataPath arg, and split common
	    c-tor code into AbsWordSeg::Construct().
	* src/longwordseg.h, src/longwordseg.cpp (-LongWordSeg::~LongWordSeg):
	  - Remove the now-empty d-tor.

2011-03-18  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordseg.cpp (Usage): Print usage on stderr, not stdout.

2011-03-18  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordseg.cpp (main): Make 'wsegpath', 'method', 'fileformat',
	'unicode' (const char *).

2011-03-18  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Make 'wbr' word delimiter a (const char *).

	* src/abswordseg.h, src/abswordseg.cpp
	  (AbsWordSeg::WordSeg, AbsWordSeg::GetBestSen):
	  - Declare 'wbr' arg (const char *).
	* src/filterx.h, src/filterx.cpp (FilterX::GetWordBreak):
	  - Make it return (const char *) instead of copying string back.
	* src/wordseg.cpp (WordSegmentation):
	  - Declare 'wbr' arg (const char *).
	* src/wordseg.cpp (main):
	  - Make 'wbr' (const char *).
	  - Replace all allocs & copies with pointer assignments.
	  - Remove all deletes.

2011-03-18  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/swath.1: Update doc for -d option. The dictionary file is now
	a single `swathdic.tri' file.

2011-03-17  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Make check functions in worddef.cpp inline.

	* src/Makefile.am, src/worddef.h, -src/worddef.cpp
	(isSpace, isHex, isPunc, isThai):
	  - Move function definitions from worddef.cpp to worddef.h and make
	    them inline.
	  - Remove worddef.cpp from the project.

2011-03-17  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Replace hard checks for Thainess with new function isThai().

	* src/worddef.h, src/worddef.cpp (+isThai): Add the check function.
	* src/filterlatex.cpp (FilterLatex::GetNextToken): Replace hard
	checks (c & 0x80), or (c > 0), with isThai(c) calls.

2011-03-17  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlatex.cpp (FilterLatex::GetNextToken):
	  - Replace partial copy using temporary null-termination with
	    strncpy() and strncat().
	  - Replace a risky strcpy() on overlapping buffers with memmove().
	  - Split an assignment in if-condition into sepearate statement,
	    for more readability.

2011-03-17  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/worddef.cpp (isSpace, isHex, isPunc):
	  - Replace decimal ASCII codes with char literals, for more
	    readability
	  - Simplify return expressions

2010-09-24  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.cpp (AbsWordSeg::IsLeadChar): Also include PHINTHU,
	NIKHAHIT and YAMAKKAN in non-leading char list.

2009-04-18  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* configure.in: Post-release version suffix added.
	* src/wordseg.cpp (main, +Version): Add -V/--version to print version
	info, as suggested by Beamer User.
	* src/Makefile.am: Pass -DVERSION CFLAGS.

2009-04-08  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* configure.in, NEWS:
	=== Version 0.4.0 ===

2009-04-08  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterrtf.h (FilterRTF::chgCharState, FilterRTF::isThaiChar):
	Declare utility functions as static members.

2009-04-08  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filterlatex.cpp (WinMacNormal, MacOffsetLeft, MacOffsetLeftHigh,
	MacOffsetNormal, WinOffsetLeft, WinOffsetLeftHigh, WinOffsetNormal):
	Declare internal data as file-scoped.

	* src/filterlatex.h
	(FilterLatex::isLongTailChar, FilterLatex::idxVowelToneMark):
	Declare utility functions as static members.

	* src/filterlatex.cpp (FilterLatex::isLongTailChar):
	Eliminate unnecessary true/false conditional expression; simple boolean
	expression is enough.

	* src/filterlatex.cpp (FilterLatex::idxVowelToneMark):
	Check array index range before accessing, rather than after.

2009-04-08  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/maxwordseg.cpp (MaxWordSeg::CreateSentence):
	Check array index range before accessing, rather than after.

2009-04-07  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/longwordseg.cpp (LongWordSeg::LongWordSeg):
	Use 'delete[]' instead of 'delete', to match with 'new []', fixing
	valgrind warning.

	* src/longwordseg.cpp (LongWordSeg::CreateSentence):
	Check array index range before accessing, rather than after, fixing
	valgrind warnings of conditional jumps depending on uninitialized
	values.

2009-04-07  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/maxwordseg.cpp
	(MaxWordSeg::CreateSentence, MaxWordSeg::WordSegArea):
	Check range of array index for IdxSep[] *before* accessing the array
	element, rather than *after*, fixing valgrind warnings of conditional
	jumps depending on uninitialized values.

2009-04-07  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.cpp (AbsWordSeg::CreateWordList):
	* src/filterhtml.cpp (FilterHtml::FilterHtml):
	* src/filterrtf.cpp (FilterRTF::FilterRTF, FilterRTF::GetNextToken):
	* src/filterlatex.cpp
	  (FilterLatex::FilterLatex, FilterLatex::GetNextToken):
	* src/wordseg.cpp (main):
	Replace strcpy() and strcmp() calls with null string arguments with
	first character accesses.

	* src/filterlatex.cpp (FilterLatex::GetNextToken):
	Replace operlapping strcpy() with memmove(), fixing valgrind warnings.

2009-04-06  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordseg.cpp (main): Move global vars 'startStr', 'buff', 'gout'
	to local scope, where they are actually used.

2009-04-06  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordseg.cpp (main): Move global var 'mulestr' to local scope.
	Make it just bool 'muleMode', as all its function is just that.

2009-04-06  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordseg.cpp (InitWordSegmentation, main):
	Make the global var 'method' local and passed as argument.

2009-04-06  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.h (AbsWordSeg::~AbsWordSeg): Declare d-tor as virtual,
	fixing memory leak because its derived class d-tor was not called.
	Thanks valgrind.

	* src/wordseg.cpp (InitWordSegmentation, main): Move 'delete method' to
	main(), where it's more obvious.

	* src/wordseg.cpp (ExitWordSegmentation, WordSegmentation, main):
	Make ExitWordSegmentation() and WordSegmentation() accept mere
	AbsWordSeg pointer, rather than pointer to pointer, reducing
	dereferencing steps.

2009-04-06  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Fix valgrind warnings about mismatched new/delete.

	* src/abswordseg.cpp (AbsWordSeg::~AbsWordSeg):
	* src/maxwordseg.cpp (MaxWordSeg::MaxWordSeg, MaxWordSeg::~MaxWordSeg):
	* src/wordseg.cpp (InitWordSegmentation, main):
	Replace 'delete' with 'delete[]' where data was created with new[].

2009-04-06  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* AUTHORS: Update info, as the trie supporting code has been removed.
	Now my role is general maintenance. And describe Phaisarn's role as
	the original creator.

2009-04-06  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.cpp (AbsWordSeg::AbsWordSeg):
	Replace C malloc() calls with C++ 'new' operator, to better match with
	the 'delete' operator in destructor.

2009-04-06  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.h (AbsWordSeg::Has_Karun):
	Declare another utility function as static member.
	* src/abswordseg.cpp (AbsWordSeg::Has_Karun):
	Replace negative number literal with hexadecimal code, for readability.

2008-12-17  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.cpp (AbsWordSeg::CreateWordList):
	Remove unnecessary 'continue'.

2008-12-17  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.h
	(AbsWordSeg::IsLeadChar, IsLastChar, IsNumber, IsEnglish):
	Declare utility functions as static members.
	* src/abswordseg.cpp (AbsWordSeg::IsNumber, IsEnglish):
	Replace code with simpler equivalence.
	* src/abswordseg.cpp (AbsWordSeg::GetBestSen):
	Get rid of unnecessary assignment and strcat().

2008-12-17  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Get rid of the unnecessary src/dictpath.cpp.

	* src/Makefile.am, -src/dictpath.cpp: Remove dictpath.cpp.
	* src/dictpath.h (d2triepath), src/wordseg.cpp (InitWordSegmentation):
	Get rid of the unnecessary global variable 'd2triepath', which is in
	fact only needed locally.

2008-12-17  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Switch to libdatrie. (Requires libdatrie >= 0.1.99.2)

	* configure.in: Post-release version bump.

	* configure.in: Check for 'trietool-0.2' program (under --enable-dict)
	and 'datrie-0.2' pkg-config.
	* configure.in, Makefile.am: Exclude 'misc', 'vmem', and 'trie' subdirs.

	* src/abswordseg.h:
	  - Replace 'AbsWordSeg::MyDict' member with libdatrie's 'Trie'
	* src/abswordseg.cpp (AbsWordSeg::AbsWordSeg):
	  - Don't delete 'MyDict' in c-tor
	* src/abswordseg.cpp (AbsWordSeg::CreateWordList):
	  - Replace calls to old 'Trie' class with corresponding libdatrie
	    functions
	  - Adjust loop so that terminating '\0' is not walked

	* src/longwordseg.h, src/longwordseg.cpp
	  (LongWordSeg::LongWordSeg, ~LongWordSeg):
	  - Replace 'MyDict' creation/deletion with libdatrie's functions
	  - Remove 'branchPath' and 'tailPath' members; and just use local
	    vars in c-tors instead

	* src/maxwordseg.h, src/maxwordseg.cpp
	  (MaxWordSeg::MaxWordSeg, ~MaxWordSeg):
	  - Replace 'MyDict' creation/deletion with libdatrie's functions
	  - Remove 'branchPath' and 'tailPath' members; and just use local
	    vars in c-tors instead

	* src/dictpath.h, src/dictpath.cpp:
	* src/wordseg.cpp (InitWordSegmentation):
	  - Replace 'd2branchpath' and 'd2tailpath' with a single
	    'd2triepath' variable
	  - Replace 'D2BRANCH' and 'D2TAIL' with a single 'D2TRIE' macro

	* src/wordstack.h:
	  - Remove unneeded #include "misc/typedefs.h"

	* src/Makefile.am:
	  - Remove linkages to internal 'libmisc', 'libvmem', and 'libtrie'
	  - Add libdatrie CFLAGS and LIBS

	* data/Makefile.am, -data/swathdic.br, -data/swathdic.tl:
	  - Exclude 'swathdic.br' and 'swathdic.tl' from distribution
	* data/Makefile.am, +data/swathdic.abm:
	  - Add 'swathdic.abm' to distribution
	  - Add rule for generating 'swathdic.tri' with trietool-0.2
	  - Install 'swathdic.tri' instead of 'swathdic.br' and 'swathdic.tl'

2008-04-06  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* configure.in, NEWS:
	=== Version 0.3.4 ===

2008-03-24  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* data/Makefile.am, +data/swathdic.lst: Add dictionary word list
	dumped from the dict binary files, for dict adjustments in the future.

2008-03-23  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Use tmpfile() instead of tmpnam() when creating temp files,
	to avoid race condition as a security measurement.

	* src/wordseg.cpp (main):
	  - Use FILE* instead of file names for temp files
	  - Call tmpfile() to create temp files
	  - Pass FILE* to conv() and CreateFileFilter()

	* conv/conv.{h,cxx}:
	  - Add overloaded conv() accepting FILE* arguments
	  - Refactor do_conv() out of conv() wrappers
	  - Pass FILE* to CreateText{Reader,Writer}
	* conv/convfact.{h,cxx} (CreateTextReader, CreateTextWriter):
	  - Accept FILE* arguments instead of istream, ostream
	  - Pass FILE* arguments to {TIS620,UTF8}{Reader,Writer} c-tors
	* conv/{tis620,utf8}.{h,cxx}:
	  - Change stream members' type to FILE*
	  - Use fgetc() and fputc() for character I/O
	  - Declare internal functions static

	* src/filefilter.{h,cpp} (CreateFileFilter):
	  - Use FILE* arguments instead of file names
	  - Pass the FILE* arguments to Filter* c-tors
	* src/filter{html,latex,lambda,rtf}.{h,cpp}:
	  - Accept FILE* arguments instead of file names in c-tors
	  - Pass the FILE* arguments to FilterX base class c-tor
	* src/filterx.{h,cpp}:
	  - In c-tor, assign FILE* arguments to members directly, rather
	    than creating new files from file names
	  - In d-tor, just flush output, rather than closing files

2008-03-20  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/swath.1: Escape more minus signs. [lintian]

2008-03-20  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* configure.in, NEWS:
	=== Version 0.3.3 ===

2008-03-20  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordseg.cpp (main): Move FltX variable into if-block. Beutify
	some indents.

2008-03-20  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/filefilter.{h,cpp}: Make "FileFilter" an empty class with a
	single static method CreateFilter(). The full-fledged
	{con,de}structors are just unnecessary.

	* src/wordseg.cpp (main): Create FilterX with the static method.
	Remove now-unneeded FileFilter variable.

2008-03-20  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordseg.cpp (main): Delete filter X object after finishing
	wordseg, so output file gets flushed.

2008-03-20  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordseg.cpp (main): duplicate tmpnam() results, instead of mere
	pointer assignment, as the returned value is pointer to static buffer,
	resulting in the same names for tmpin and tmpout. Fixing
	non-functional '-u u,u' option. Bug report by Neutron Soutmun.

2008-03-19  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.cpp (AbsWordSeg::CreateWordList): Fix logical errors
	introduced during portability fix, which made swath not break any
	word. Bug report by Pisut Tempatarachoke.

2008-02-07  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/swath.1: Escape minus signs. Thanks debian's lintian.

2008-02-02  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* configure.in, NEWS:
	=== Version 0.3.2 ===

2008-02-02  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* configure.in: Remove unused ISODATE var. Remove checks for CC and
	CPP. Just CXX is enough.

2008-02-01  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	Reveal the encoding conversion feature to users.

	* src/wordseg.cpp (Usage): Add '-u' option in help message.
	* src/swath.1: Add documentation for '-u' option, with example.
	* README: Mention the '-u' option for UTF-8 LaTeX files. Indent the
	sample codes for readability.

	* src/swath.1: Document the default matching scheme, and adjust the
	example accordingly.

2008-02-01  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordseg.cpp (main):
	  - Also accept '--verbose' and '--help' options.
	  - Adjust indents around the code, for readability.
	  - Remove unnecessary continue's.
	  - Check boundary of argc for '-u' parsing.
	  - Free more allocated data (fileformat, method, unicode) on return
	    after printing usage.

2008-01-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/wordseg.cpp (Usage): Revise wording for the help message.
	Use string catenation instead of separate printf's.

2008-01-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* README: Write document.
	* src/swath.1: Rewrite the whole page, with more detailed info.

2008-01-31  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* data/Makefile.am: Install dict in ${pkgdatadir}, not ${datadir}.
	* src/Makefile.am: Update dict location macro acoordingly.

2006-07-03  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/abswordseg.{h,cpp} (IsLeadChar(), IsLastChar()),
	src/filterhtml.cpp (GetNextToken()),
	src/filterlatex.cpp (GetNextToken()),
	src/filterrtf.cpp (GetNextToken()): Fixed char signedness portability
	issues (found on s390, powerpc, arm builds by debian buildd).

2006-03-28  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* configure.in, NEWS:
	=== Version 0.3.1 ===

2006-03-27  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* src/swath.1: Used section number instead of version number.

2006-03-26  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* Makefile.am: Removed debian from SUBDIRS.

	* configure.in: Removed debian/Makefile generation.

2005-10-09  Theppitak Karoonboonyanan <thep@linux.thai.net>

	* configure.in:
	Formatted configure options help strings with AC_HELP_STRING().
	Used --disable/--enable help style rather than --enable with default
	yes or no. Also disabled debug by default.

2005-05-07  Chanop Silpa-Anan <chanop@debian.org>
	* src/abswordseg.cpp:
	A quick hack for Apple/Darwin: malloc is defined in stdlib.h instead
	of a more common place malloc.h.

2004-03-30  Theppitak Karoonboonyanan <thep@linux.thai.net>

	* AUTHORS:
	Fix my e-mail address.

2003-04-04  Theppitak Karoonboonyanan <thep@linux.thai.net>

	* conv/tis620.cxx, conv/utf8.cxx:
	Use casting instead of declaring temp vars in dealing with
	iostream::get() with unsigned char argument.

2003-04-03  Chanop Silpa-Anan <chanop@debian.org>
	* conv/{conv.cxx conv.h convfact.cxx convfact.h tis620.cxx tis620.h
	  utf8.cxx utf8.}:
	Clean up for g++-3.2: compilation errors, compiler warnings
	and namespace issues.

	* trie/{trie.h trie.cxx}:
	Clean up for g++-3.2: compilation errors. Use strict
	ios_base::openmodes for OpenModes instead of int previously allowed by
	prior compilers.

	* vmem/{dataheap.cxx dataheap.h vmem.cxx vmem.h}:
	Clean up for g++-3.2: compilation errors. Use strict
	ios_base::openmodes for OpenModes instead of int previously allowed by
	prior compilers. Also use namespace std in .h files, a quick hack.

2003-01-14  Theppitak Karoonboonyanan <thep@linux.thai.net>

	* swath.spec.in:
	Fix "%install" mess in comment (rpmbuild oddity)

2002-09-24  Theppitak Karoonboonyanan <thep@linux.thai.net>

	* src/wordseg.cpp:
	Fix segfault in case of unknown file format.
	Nicer "Usage:" handling.
	Remove winlatex, maclatex from Usage:

2002-09-23  Theppitak Karoonboonyanan <thep@linux.thai.net>

	* configure.in:
	Add --enable-debug to allow assertions disabling.

	* configure.in, src/filterlatex.cpp:
	Add --enable-catthai to allow Thai line catenation disabling.
	(temporary solution, may be replaced with command-line option or
	hard-coding later)

2002-09-21  Theppitak Karoonboonyanan <thep@linux.thai.net>

	* configure.in:
	Add missing debian/Makefile in AC_OUTPUT.

2001-12-21  Theppitak Karoonboonyanan <thep@links.nectec.or.th>

	* GNU autotools files:
	Rearrange source tree and apply GNU autotools.

	* Version 0.3.0.

