private static XpidlInterface CreateXpidlInterface(ComplexSyntaxNode interfaceSyntaxNode) { ValidateSyntaxNode( interfaceSyntaxNode, RuleConstants.XpidlInterface1, RuleConstants.XpidlInterface2, RuleConstants.XpidlInterface3, RuleConstants.XpidlInterface4); String interfaceName = CreateXpidlId((SimpleSyntaxNode)interfaceSyntaxNode[2, true]); Guid uuid = CreateInterfaceUuid((ComplexSyntaxNode)interfaceSyntaxNode[0]); XpidlModifiers<XpidlInterfaceModifier> interfaceModifiers = CreateXpidlInterfaceModifiers((ComplexSyntaxNode)interfaceSyntaxNode[0]); String baseInterfaceName = null; switch ((RuleConstants)interfaceSyntaxNode.Rule.Index) { case RuleConstants.XpidlInterface1: case RuleConstants.XpidlInterface2: baseInterfaceName = CreateXpidlId((SimpleSyntaxNode)interfaceSyntaxNode[4, true]); break; } var xpidlInterface = new XpidlInterface(interfaceName, baseInterfaceName, uuid, interfaceModifiers); BuildXpidlInterface(xpidlInterface, interfaceSyntaxNode); return xpidlInterface; }
private static void BuildXpidlInterface(XpidlInterface xpidlInterface, ComplexSyntaxNode interfaceSyntaxNode) { switch ((RuleConstants) interfaceSyntaxNode.Rule.Index) { case RuleConstants.XpidlInterface1: case RuleConstants.XpidlInterface2: case RuleConstants.XpidlInterface3: case RuleConstants.XpidlInterface4: case RuleConstants.XpidlInterfaceMembers1: case RuleConstants.XpidlInterfaceMembers2: case RuleConstants.XpidlInterfaceMemberConstant: case RuleConstants.XpidlInterfaceMemberAttribute: case RuleConstants.XpidlInterfaceMemberMethod: foreach (SyntaxNode syntaxNode in interfaceSyntaxNode) { if (syntaxNode is CommentSyntaxNode) { var commentSyntaxNode = (CommentSyntaxNode) syntaxNode; if (commentSyntaxNode.IsInlineCHeader) { XpidlInlineCHeader xpidlInlineCHeader = CreateXpidlInlineCHeader(commentSyntaxNode); xpidlInterface.AddNode(xpidlInlineCHeader); } else { XpidlComment xpidlComment = CreateXpidlComment(commentSyntaxNode); xpidlInterface.AddNode(xpidlComment); } } else if (syntaxNode is ComplexSyntaxNode) { BuildXpidlInterface(xpidlInterface, (ComplexSyntaxNode) syntaxNode); } } break; case RuleConstants.XpidlConstant: XpidlConstant xpidlConstant = CreateXpidlConstant(interfaceSyntaxNode); xpidlInterface.AddNode(xpidlConstant); break; case RuleConstants.XpidlAttribute1: case RuleConstants.XpidlAttribute2: case RuleConstants.XpidlAttribute3: case RuleConstants.XpidlAttribute4: XpidlAttribute xpidlAttribute = CreateXpidlAttribute(interfaceSyntaxNode); xpidlInterface.AddNode(xpidlAttribute); break; case RuleConstants.XpidlMethod1: case RuleConstants.XpidlMethod2: case RuleConstants.XpidlMethod3: case RuleConstants.XpidlMethod4: case RuleConstants.XpidlMethod5: case RuleConstants.XpidlMethod6: case RuleConstants.XpidlMethod7: case RuleConstants.XpidlMethod8: XpidlMethod xpidlMethod = CreateXpidlMethod(interfaceSyntaxNode); xpidlInterface.AddNode(xpidlMethod); break; case RuleConstants.XpidlInterfaceModifiersDecl1: case RuleConstants.XpidlInterfaceModifiersDecl2: break; default: throw new ArgumentException(mc_InvalidSyntaxNode, "interfaceSyntaxNode"); } }
internal void AddNode(XpidlInterface xpidlInterface) { AddNodeImpl(xpidlInterface); }