--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/genutil/output.pm Fri Jun 25 17:29:25 2010 +0800
@@ -0,0 +1,110 @@
+# Copyright (c) 1997-2009 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:
+# Text formatting module
+#
+#
+
+package Output;
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+ OutSetLength OutSetPostWrap OutFormat Output
+ OutText
+);
+
+
+
+my $Len=80;
+my $PreWrap="\\";
+my $PreWrapLen=length($PreWrap);
+my $PostWrap=' ';
+my $PostWrapLen=length($PostWrap);
+my $Buf='';
+my $Text='';
+
+sub OutSetLength ($) {
+ if ($_[0]) {
+ $Len=$_[0];
+ return $Len;
+ }
+ $Len=80;
+}
+
+sub OutSetPreWrap ($) {
+ $PreWrap=$_[0];
+ $PreWrapLen=length($PreWrap);
+}
+
+sub OutSetPostWrap ($) {
+ $PostWrap=$_[0];
+ $PostWrapLen=length($PostWrap);
+}
+
+sub OutFormat (@) {
+ my $Item;
+ foreach $Item (@_) {
+ $Buf.=$Item;
+ }
+}
+
+sub OutWrite () {
+ my @Buf=();
+ my $CurLen=0;
+ if ($Buf=~/^(\s)/o) {
+ # output any starting spaces or tabs
+ $Text.=$1;
+ $CurLen=length($1);
+ }
+ while ($Buf=~/([^ "\t\n\r\f]*"[^"\t\n\r\f]+"[^ "\t\n\r\f]*|[^ "\t\n\r\f]+)/go) {
+ # get the elements of $Buf into @Buf
+ push @Buf, $1;
+ }
+ $Buf='';
+ my $Elem;
+ foreach $Elem (@Buf) {
+ my $ElemLen=length($Elem);
+ if (($CurLen+$ElemLen+$PreWrapLen) > $Len) {
+ # $Len doesn't account for the newline character
+ # wrap the line if adding another element will take it over the prescribed length
+ $Text.="$PreWrap\n$PostWrap";
+ $CurLen=$PostWrapLen;
+ }
+ elsif ($CurLen>$PostWrapLen) {
+ # add a space to the line if they're are already elements in the line
+ $Text.=' ';
+ $CurLen++;
+ }
+ # add element to the line
+ $Text.=$Elem;
+ $CurLen+=$ElemLen;
+ }
+ # finish with a newline
+ $Text.="\n";
+}
+
+sub Output (@) {
+ OutWrite if $Buf; # output the formatted text before doing any more output
+ my $Item;
+ foreach $Item (@_) {
+ $Text.=$Item;
+ }
+}
+
+sub OutText () {
+ my $temp=$Text;
+ $Text='';
+ $temp;
+}
+
+1;