System.Xml.Xsl.Xslt.QilGenerator.CompileOrderAttribute C# (CSharp) Method

CompileOrderAttribute() private method

Compiles AVT with two possible values
private CompileOrderAttribute ( string attName, string attValue, string value0, string value1, bool fwdCompat ) : QilNode
attName string NodeCtor name (used for constructing an error message)
attValue string NodeCtor value
value0 string First possible value of attribute
value1 string Second possible value of attribute
fwdCompat bool If true, unrecognized value does not report an error
return QilNode
        private QilNode CompileOrderAttribute(string attName, string attValue, string value0, string value1, bool fwdCompat)
        {
            QilNode result = CompileStringAvt(attValue);
            if (result != null)
            {
                if (result.NodeType == QilNodeType.LiteralString)
                {
                    string value = (string)(QilLiteral)result;
                    if (value == value1)
                    {
                        result = _f.String("1");
                    }
                    else
                    {
                        if (value != value0 && !fwdCompat)
                        {
                            ReportError(/*[XT_034]*/SR.Xslt_BistateAttribute, attName, value0, value1);
                        }
                        result = _f.String("0");
                    }
                }
                else
                {
                    QilIterator i;
                    result = _f.Loop(i = _f.Let(result),
                        _f.Conditional(_f.Eq(i, _f.String(value1)), _f.String("1"),
                        fwdCompat ? _f.String("0") :
                        _f.Conditional(_f.Eq(i, _f.String(value0)), _f.String("0"),
                        _f.Error(_lastScope.SourceLine,
                            SR.Xslt_BistateAttribute, attName, value0, value1
                        )
                    )));
                }
                Debug.Assert(result.XmlType == T.StringX);
            }
            return result;
        }
QilGenerator