public bool Equals(CompoundMember other) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } return(string.Equals(_name, other._name) && MemberType.Equals(other.MemberType) && TypedValue.Equals(other.TypedValue)); }
private void AddTypedef(string name, TaggedSymbol taggedSymbol) { if (name.IsFake()) { throw new Exception($"Found fake typedef name {name}"); } if (taggedSymbol.IsFake && ComplexTypes.ContainsKey(taggedSymbol.Tag)) { // found a typedef for a fake symbol, e.g. typedef struct .123fake {} FOO ComplexTypes[taggedSymbol.Tag].Typedefs.Add(name, taggedSymbol); } if (_typedefs.TryGetValue(name, out var already)) { if (taggedSymbol.Equals(already)) { return; } var writer = new IndentedTextWriter(Console.Out); writer.WriteLine($"WARNING: Non-uniform definitions of typedef {name}"); writer.WriteLine("This is the definition already present:"); writer.Indent++; writer.WriteLine(already.ToString()); writer.WriteLine(already.AsCode(name)); ComplexTypes[already.Tag].Dump(writer, false); writer.Indent--; writer.WriteLine("This is the new definition:"); writer.Indent++; writer.WriteLine(taggedSymbol.ToString()); writer.WriteLine(taggedSymbol.AsCode(name)); ComplexTypes[taggedSymbol.Tag].Dump(writer, false); writer.Indent--; throw new Exception($"Non-uniform definition of typedef {name}"); } _typedefs.Add(name, taggedSymbol); }