public string GetFullFunctionOrEventHeaderText(PapyrusSymbol symbol) { if (symbol is FunctionSymbol functionSymbol) { var displayText = GetDisplayTextForFunction(functionSymbol); var typePrefix = string.Empty; var typeIdentifier = functionSymbol.Definition.Header.TypeIdentifier; if (typeIdentifier != null) { var returnType = symbol.GetPapyrusType(); typePrefix = (returnType?.Name.FullyQualifiedDisplayName ?? typeIdentifier.Text + (typeIdentifier.IsArray ? "[]" : string.Empty)) + " "; } return($"{typePrefix}Function {functionSymbol.Name}({displayText.Parameters.Select(t => t.Text).Join(", ")})"); } if (symbol is EventSymbol eventSymbol) { var displayText = GetDisplayTextForEvent(eventSymbol); return($"Event {eventSymbol.Name}({displayText.Parameters.Select(t => t.Text).Join(", ")})"); } return(null); }
public DisplayText GetDisplayText(PapyrusSymbol symbol) { if (symbol is AliasedSymbol asAliased) { return(GetDisplayText(asAliased.Aliased)); } // TODO: User flags switch (symbol.Kind) { case SymbolKinds.CustomEvent: return(GetBasicDisplayText(symbol.Name, "custom event", "CustomEvent")); case SymbolKinds.Event: var eventDisplayText = GetDisplayTextForEvent((EventSymbol)symbol); return(new DisplayText() { Kind = eventDisplayText.Kind, Text = $"{eventDisplayText.Prefix}({eventDisplayText.Parameters.Select(t => t.Text).Join(", ")}){eventDisplayText.Postfix}", Documentation = eventDisplayText.Documentation }); case SymbolKinds.Function: var funcDisplayText = GetDisplayTextForFunction((FunctionSymbol)symbol); return(new DisplayText() { Kind = funcDisplayText.Kind, Text = $"{funcDisplayText.Prefix}({funcDisplayText.Parameters.Select(t => t.Text).Join(", ")}){funcDisplayText.Postfix}", Documentation = funcDisplayText.Documentation }); case SymbolKinds.Group: return(GetBasicDisplayText(symbol.Name, "group", "Group")); case SymbolKinds.Import: return(GetBasicDisplayText(symbol.Name, "import", "Import")); case SymbolKinds.Property: return(GetDisplayTextForProperty((PropertySymbol)symbol)); case SymbolKinds.State: return(GetDisplayTextForState((StateSymbol)symbol)); case SymbolKinds.Struct: return(GetBasicDisplayText( symbol.GetPapyrusType()?.Name.FullyQualifiedDisplayName ?? symbol.Name, "struct", "Struct")); case SymbolKinds.Variable: return(GetDisplayTextForVariable((VariableSymbol)symbol)); case SymbolKinds.Script: return(GetDisplayTextForScript((ScriptSymbol)symbol)); } return(null); }
public string GetEventHandlerSignatureText(PapyrusSymbol symbol) { if (symbol is EventSymbol eventSymbol) { var displayText = GetDisplayTextForEvent(eventSymbol); return($"{eventSymbol.Name}({symbol.Parent.Name} akSender, {displayText.Parameters.Select(t => t.Text).Join(", ")})"); } #if FALLOUT4 if (symbol is CustomEventSymbol customEventSymbol) { return($"{customEventSymbol.Name}({symbol.Parent.Name} akSender, Var[] akArgs)"); } #endif return(null); }
public PapyrusSymbol(SyntaxNode node, IdentifierNode identifier, PapyrusSymbol parent) { _node = node; _documentation = new string[] { _node.GetLeadingComments() }; _identifier = identifier; _parent = parent; if (_parent != null) { lock (_parent._children) { _parent._children.Add(this); } } }
protected TypeSymbol(SyntaxNode node, IdentifierNode identifier, PapyrusSymbol parent, ObjectIdentifier id) : base(node, identifier, parent) { _id = id; }
public StructSymbol(StructDefinitionNode node, PapyrusSymbol parent) : base(node, node.Header.Identifier, parent, ObjectIdentifier.Parse(parent.Name + "#" + node.Header.Identifier.Text)) { }
public VariableSymbol(ITypedIdentifiable node, PapyrusSymbol parent) : base((SyntaxNode)node, node.Identifier, parent) { DefaultValue = node is FunctionParameterNode asFunctionParameter ? asFunctionParameter.DefaultValue : null; }
public PropertySymbol(PropertyDefinitionNode node, PapyrusSymbol parent) : base(node, node.Header.Identifier, parent) { }
public StateSymbol(StateDefinitionNode node, PapyrusSymbol parent) : base(node, node.Identifier, parent) { }
public ImportSymbol(ImportNode node, PapyrusSymbol parent) : base(node, node.Identifier, parent) { }
public GroupSymbol(GroupDefinitionNode node, PapyrusSymbol parent) : base(node, node.Header.Identifier, parent) { }
public FunctionSymbol(FunctionDefinitionNode node, PapyrusSymbol parent) : base(node, node.Header.Identifier, parent) { }
public EventSymbol(EventDefinitionNode node, PapyrusSymbol parent) : base(node, node.Header.Identifier, parent) { }
public CustomEventSymbol(CustomEventDefinitionNode node, PapyrusSymbol parent) : base(node, node.Identifier, parent) { }