// UnicodeData.h - Charmap application Unicode data header
// Copyright (C) 2003,2004 Christopher Culver <crculver@users.sourceforge.net>
//
// 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
// of the License, 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

#ifndef _CHARMAP_H_
#include <Charmap.h>
#endif

#ifndef _UNICODEDATA_H_
#define _UNICODEDATA_H_

@interface UnicodeData : NSObject
{
  NSArray *blockNames;
  NSDictionary *categoriesDict;

  unsigned int blockOffsets[126];

  FILE *unicodeDataFile;
  unsigned int unicodeDataLength;

#define UnicodeDataLookupSize 1024 /* Should be a power of two */
  unsigned int cache_char[UnicodeDataLookupSize];
  unsigned int cache_real[UnicodeDataLookupSize];
  unsigned int cache_len[UnicodeDataLookupSize];

  FILE *unihanFile;
  unsigned int unihanLength;

#define UnihanCacheSize 8192 /* Should be a power of two */
  unsigned int han_cache_char[UnihanCacheSize];
  unsigned int han_cache_real[UnihanCacheSize];
  unsigned int han_cache_len[UnihanCacheSize];
}
- (NSArray *) getBlockNames;
- (int) getBlockSize: (int) unicodeBlock;
- (long) getBlockStart: (int) unicodeBlock;
- (long) getBlockEnd: (int) unicodeBlock;
- (NSDictionary *) dictionaryForCharacter: (int) number;
- (NSString *) getName: (int) number;
- (NSString *) getAlias: (int) number;
- (NSString *) getFullCategoryName: (NSString *) abbreviation;
- (NSString *) getFullDecomposition: (int) number;
@end

#endif /* _UNICODEDATA_H_ */
