charconvfw/Charconv/ongoing/test/source/main/TISO8859X_GENERATE_CPP.PL
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 25 May 2010 14:39:28 +0300
branchRCL_3
changeset 28 26914f8d1faf
parent 0 1fb32624e06b
permissions -rw-r--r--
Revision: 201019 Kit: 2010121

#
# Copyright (c) 8859 Nokia Corporation and/or its subsidiary(-ies).
# All rights reserved.
# This component and the accompanying materials are made available
# under the terms of "Eclipse Public License v1.0"
# which accompanies this distribution, and is available
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
#
# Initial Contributors:
# Nokia Corporation - initial contribution.
#
# Contributors:
#
# Description:      
#

my @iso8859TestData=();
chdir('..\..\..\data'); # change directory from charconv\test\source\main to charconv\data
my $inputFileName;
foreach $inputFileName (glob('ISO8859*.TXT'))
	{
	my $item=[];
	($inputFileName=~/^ISO8859(\d+)\.TXT$/i) or die;
	$item->[0]=$1;
	open(INPUT_FILE, "< $inputFileName") or die;
	my $line;
	while ($line=<INPUT_FILE>)
		{
		$line=~s/#.*$//;
		$line=~s/^\s*//;
		$line=~s/\s*$//;
		if ($line ne '')
			{
			($line=~/(0x[0-9a-f]{2})\s+(0x[0-9a-f]{4})/i) or die;
			push(@{$item->[1]}, lc($1));
			push(@{$item->[2]}, lc($2));
			}
		}
	close(INPUT_FILE) or die;
	push(@iso8859TestData, $item);
	}
@iso8859TestData=sort({$a->[0]<=>$b->[0]} @iso8859TestData);
my $outputFileName='G_TISO8859X.CPP';
open(OUTPUT_FILE, "> ..\\test\\source\\main\\$outputFileName") or die; # we're currently standing in charconv\data and we want the generated file to go into charconv\test\source\main
print(OUTPUT_FILE "// $outputFileName\n//\n// Copyright (c) ".(1900+(gmtime(time))[5])." Symbian Ltd.  All rights reserved.\n//\n\n");
print(OUTPUT_FILE "#include <e32std.h>\n#include <CHARCONV.H>\n#include \"TISO8859X.H\"\n\n");
my $numberOfItems=@iso8859TestData;
my $i;
for ($i=0; $i<$numberOfItems; ++$i)
	{
	my $item=$iso8859TestData[$i];
	my $x=$item->[0];
	(scalar(@{$item->[1]})==scalar(@{$item->[2]})) or die;
	my $textLength=@{$item->[1]};
	my $j;
	print(OUTPUT_FILE "LOCAL_D const TUint16 iso8859_".$x."_unicode\[\]=\n\t\{\n");
	for ($j=0; $j<$textLength; ++$j)
		{
		print(OUTPUT_FILE "\t$item->[2]->[$j]");
		if ($j<$textLength-1)
			{
			print(OUTPUT_FILE ',');
			}
		print(OUTPUT_FILE "\n");
		}
	print(OUTPUT_FILE "\t\};\n\n");
	print(OUTPUT_FILE "LOCAL_D const TUint8 iso8859_".$x."_iso8859\[\]=\n\t\{\n");
	for ($j=0; $j<$textLength; ++$j)
		{
		print(OUTPUT_FILE "\t$item->[1]->[$j]");
		if ($j<$textLength-1)
			{
			print(OUTPUT_FILE ',');
			}
		print(OUTPUT_FILE "\n");
		}
	print(OUTPUT_FILE "\t\};\n\n");
	}
print(OUTPUT_FILE "LOCAL_D const STstIso8859TestDataItem iso8859TestDataItems\[\]=\n\t\{\n");
for ($i=0; $i<$numberOfItems; ++$i)
	{
	my $item=$iso8859TestData[$i];
	my $x=$item->[0];
	(scalar(@{$item->[1]})==scalar(@{$item->[2]})) or die;
	my $textLength=@{$item->[1]};
	print(OUTPUT_FILE "\t\t\{\n");
	print(OUTPUT_FILE "\t\t$x,\n\t\tKCharacterSetIdentifierIso8859$x,\n\t\t$textLength,\n\t\tiso8859_".$x."_unicode,\n\t\tiso8859_".$x."_iso8859\n");
	print(OUTPUT_FILE "\t\t\}");
	if ($i<$numberOfItems-1)
		{
		print(OUTPUT_FILE ',');
		}
	print(OUTPUT_FILE "\n");
	}
print(OUTPUT_FILE "\t\};\n\n");
print(OUTPUT_FILE "GLDEF_D const STstIso8859TestData iso8859TestData=\n\t\{\n");
print(OUTPUT_FILE "\t$numberOfItems,\n\tiso8859TestDataItems\n");
print(OUTPUT_FILE "\t\};\n\n");
close(OUTPUT_FILE) or die;