You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by jd...@locus.apache.org on 2000/04/20 16:13:32 UTC

cvs commit: xml-xalan/c/src/XSLT ElemNumber.cpp

jdonohue    00/04/20 07:13:32

  Modified:    c/src/XSLT ElemNumber.cpp
  Log:
  Added temporary support for Greek letter numbering
  
  Revision  Changes    Path
  1.12      +20 -5     xml-xalan/c/src/XSLT/ElemNumber.cpp
  
  Index: ElemNumber.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemNumber.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ElemNumber.cpp	2000/04/20 11:44:29	1.11
  +++ ElemNumber.cpp	2000/04/20 14:13:32	1.12
  @@ -89,8 +89,10 @@
   
   const XalanDOMString	ElemNumber::s_alphaCountTable(XALAN_STATIC_UCODE_STRING("ZABCDEFGHIJKLMNOPQRSTUVWXY"));
   
  +XalanDOMString	s_elalphaCountTable;
   
   
  +
   const DecimalToRoman	ElemNumber::s_romanConvertTable[] = 
   {
   	DecimalToRoman(1000, XALAN_STATIC_UCODE_STRING("M"), 900, XALAN_STATIC_UCODE_STRING("CM")),
  @@ -172,8 +174,9 @@
   		}
   		else if(equals(aname, Constants::ATTRNAME_LETTERVALUE))
   		{
  -			constructionContext.warn(Constants::ATTRNAME_LETTERVALUE + " not supported yet!");
  -
  +			if (equals("traditional", atts.getValue(i)))
  +				constructionContext.warn(Constants::ATTRNAME_LETTERVALUE +
  +						" value 'traditional' not supported yet!");
   			m_lettervalue_avt = new AVT(aname, atts.getType(i),
   						atts.getValue(i), *this, constructionContext);
   		} 
  @@ -736,9 +739,21 @@
   		case 0x0E51:
   		case 0x05D0:
   		case 0x10D0:
  -		case 0x03B1:
   		case 0x0430:
   			executionContext.error(LongToDOMString(numberType) + " format not supported yet!");
  +			break;
  +		// Handle the special case of Greek letters for now
  +		case 0x03B1:
  +			if (isEmpty(s_elalphaCountTable))
  +			{
  +				// Start at lower case Greek letters in entity reference table in
  +				// FormatterToHTML
  +				s_elalphaCountTable += 962;
  +				for (int i=1, j=938; i<25; i++, j++)
  +					s_elalphaCountTable += j;
  +			}
  +			formattedNumber += int2alphaCount(listElement, s_elalphaCountTable);
  +			break;
   		default: // "1"
   			{
   				const XalanDOMString		numString =
  @@ -787,7 +802,7 @@
   	const int		buflen = 100;
   
   	XalanDOMChar	buf[buflen + 1];
  -	memset(buf, 0, buflen + 1);
  +	memset(buf, 0, (buflen + 1) * sizeof(XalanDOMChar));
   
   	// next character to set in the buffer
   	int charPos = buflen - 1 ;    // work backward through buf[]
  @@ -843,7 +858,7 @@
   			break;
   
   		// put out the next character of output
  -		buf[charPos--] = static_cast<char>(charAt(table, lookupIndex));
  +		buf[charPos--] = static_cast<XalanDOMChar>(charAt(table, lookupIndex));
   	}
   	while (val > 0);