public override bool WriteNode(IndentedTextWriter writer, BaseNode node, WriteNodeFunc defaultWriteNodeFunc, ILogger logger)
        {
            // pygamehack does not need padding variables
            if (node.Name.StartsWith("pad"))
            {
                return(true);
            }

            // Name and type hint prefix
            writer.Write(node.Name);
            writer.Write(": ");

            // Basic type
            var simpleTypeNode = GetSimpleType(node);

            if (simpleTypeNode != null)
            {
                writer.Write(simpleTypeNode);
            }
            // Class Instance
            else if (node is ClassInstanceNode classInstanceNode)
            {
                writer.Write(classInstanceNode.InnerNode.Name);
            }
            // Pointer
            else if (node is PointerNode pointerNode)
            {
                WritePointer(writer, pointerNode);
            }

            // Offset
            writer.Write(" = 0x");
            writer.Write($"{node.Offset:X}");
            writer.WriteLine();

            return(true);
        }
Example #2
0
 /// <summary>
 /// Outputs the C++ code for the node to the <see cref="TextWriter"/> instance.
 /// </summary>
 /// <param name="writer">The writer to output to.</param>
 /// <param name="node">The node to output.</param>
 /// <param name="defaultWriteNodeFunc">The default implementation of <see cref="CppCodeGenerator.WriteNode"/>.</param>
 /// <param name="logger">The logger.</param>
 /// <returns>True if the code generator has processed the node, false otherwise. If this method returns false, the default implementation is used.</returns>
 public virtual bool WriteNode(IndentedTextWriter writer, BaseNode node, WriteNodeFunc defaultWriteNodeFunc, ILogger logger)
 {
     return(false);
 }