BFSchema.CodeGenerators.CSharp.CSHelper.VisitExpGroup C# (CSharp) Method

VisitExpGroup() public static method

public static VisitExpGroup ( BfsExpGroup group, IBfsDataBlock owner ) : string
group BfsExpGroup
owner IBfsDataBlock
return string
        public static string VisitExpGroup(BfsExpGroup group, IBfsDataBlock owner)
        {
            StringBuilder b = new StringBuilder();
            b.Append("(");

            for (int i = 0; i < group.Members.Count; i++)
            {
                IBfsExpNode node = group.Members[i];

                if (node is BfsExpGroup)
                    b.Append(VisitExpGroup(node as BfsExpGroup, owner));
                else if (node is BfsExpressionVariable)
                {
                    BfsExpressionVariable expVar = node as BfsExpressionVariable;
                    b.Append(owner.Name.ToLower());

                    foreach (IBfsNamedField namedField in expVar.NameHierarchy)
                        b.Append("." + namedField.Name);

                    //Only append this last reading into the enum type if the value is being compared against an EnumAliasExp
                    if ((group.Members.Count > i + 2 && group.Members[i + 2] is BfsEnumAliasExp)
                        || (i >= 2 && group.Members[i - 2] is BfsEnumAliasExp))
                        b.Append("." + expVar.NameHierarchy[expVar.NameHierarchy.Count - 1]);
                }
                else if (node is BfsEnumAliasExp)
                {
                    //TODO
                    BfsEnumAliasExp enumAliasExp = node as BfsEnumAliasExp;
                    b.Append(enumAliasExp.EnumBlock.Name + "." + enumAliasExp.EnumBlock.Name + "Enum." + enumAliasExp.Alias.Name);
                }
                else if (node is BfsLocalField)
                {
                    BfsLocalField localField = node as BfsLocalField;
                    b.Append(localField.Name);
                }
                else
                    b.Append(" " + node + " ");
            }
            b.Append(")");
            return b.ToString();
        }