Пример #1
0
      //============================================================================
      /// <summary>
      /// Writes the SDML value as XML.
      /// </summary>
      /// <param name="attrInfo">The typed value to use.</param>
      /// <param name="indent">Indent spaces to use. -1 = no indent.</param>
      /// <param name="tab">Number of spaces in each tab</param>
      /// <returns>The XML for the SDML value.</returns>
      //============================================================================
       protected override String writeFieldInfo(TTypedValue attrInfo, int indent, int tab)
       {
           uint i;
           int oneIndent;
           int nextIndent;
           int startIndent;
           String CR = "";

           //determine how much to indent this description
           oneIndent = 0;
           startIndent = 0;
           if (indent > -1)
           {
               oneIndent = tab;
               startIndent = indent;
               CR = "\r\n";
           }
           String sIndent = new String(' ', startIndent);   //begin at this level
           nextIndent = indent + oneIndent;

           StringBuilder xml = new StringBuilder("");
           if (attrInfo.baseType() != TTypedValue.TBaseType.ITYPE_DEF)
               xml.Append(" kind=\"" + attrInfo.typeName() + "\"");
           if (attrInfo.isArray())
               xml.Append(" array=\"T\"");
           if ((attrInfo.units().Length > 0) && (attrInfo.units()[0] != '-'))
               xml.Append(" unit=\"" + attrInfo.units() + "\"");

           xml.Append(">" + CR);

           if (attrInfo.isScalar()) // Scalars - use a <val> element
           {
               xml.Append(sIndent + "<val>" + scalarString(attrInfo) + "</val>" + CR);
           }
           else
           {
               //now nest into the fields/elements
               for (i = 1; i <= attrInfo.count(); i++)
               {
                   if (attrInfo.isArray() && (attrInfo.baseType() != TTypedValue.TBaseType.ITYPE_DEF))
                   {
                       xml.Append(new String(' ', oneIndent) + "<val>" + scalarString(attrInfo.item(i)) + "</val>" + CR); // Scalar array, indented format
                   }
                   else if (attrInfo.isArray())                                          // All other arrays
                       xml.Append(sIndent + "<element"
                                   + writeFieldInfo(attrInfo.item(i), nextIndent, oneIndent)
                                   + sIndent + "</element>" + CR);
                   else if (attrInfo.isRecord())                                         // Records
                       xml.Append(sIndent + "<field name=\"" + attrInfo.item(i).Name + "\""
                                   + writeFieldInfo(attrInfo.item(i), nextIndent, oneIndent)
                                   + sIndent + "</field>" + CR);
               }
           }

           return xml.ToString();
       }
Пример #2
0
 //============================================================================
 /// <summary>
 /// Constructor that will show details of the two types causing the problem.
 /// </summary>
 /// <param name="first">First TTypedValue.</param>
 /// <param name="second">Second TTypedValue.</param>
 //============================================================================
 public TypeMisMatchException(TTypedValue first, TTypedValue second)
     : base("Type mismatch exception: " + first.typeName() + " does not match " + second.typeName())
 {
 }