public void GetterSetterOnly_IsIncluded() { var sut = new GetterSetter() { I = 1 }; var printer = CreatePrinter(); Assert.AreEqual(@"new GetterSetter() { I = 1 }", printer.PrintObject(sut, "")); }
public void Visit(GetterSetter node) { Debug.Fail("shouldn't get here"); }
public virtual void Visit(GetterSetter node) { // no children }
public void Visit(GetterSetter node) { // starts with a 'get' or a 'set', so we don't care }
public override void VisitCXXMethodDecl(CXXMethodDecl decl, VisitKind visitKind) { if (visitKind != VisitKind.Enter) { return; } var isConstructor = decl is CXXConstructorDecl; if (decl is CXXDestructorDecl || isConstructor) { return; } if (decl.IsCopyAssignmentOperator || decl.IsMoveAssignmentOperator) { return; } if (decl.Parent == null) { return; } if (!decl.Parent.QualifiedName.StartsWith("Urho3D::")) { return; } // Only get methods prefixed with Get with no parameters // and Set methods that return void and take a single parameter var name = decl.Name; // Handle Get methods that are not really getters // This is a get method that does not get anything QualType type; if (name.StartsWith("Get") || name.StartsWith("Is")) { if (decl.Parameters.Count() != 0) { return; } if (decl.ReturnQualType.ToString() == "void") { return; } if (name == "IsElementEventSender" || name == "IsOpen" || name == "IsPressed") { return; } type = decl.ReturnQualType; } else if (name.StartsWith("Set")) { if (decl.Parameters.Count() != 1) { return; } if (!(decl.ReturnQualType.Bind() is Sharpie.Bind.Types.VoidType)) { return; } if ((name == "SetTypeName" || name == "SetType") && decl.Parent.Name == "UnknownComponent") { return; } if (decl.Access != AccessSpecifier.Public) { return; } type = decl.Parameters.FirstOrDefault().QualType; } else { return; } Dictionary <string, Dictionary <QualType, GetterSetter> > typeProperties; if (!allProperties.TryGetValue(decl.Parent.Name, out typeProperties)) { typeProperties = new Dictionary <string, Dictionary <QualType, GetterSetter> >(); allProperties[decl.Parent.Name] = typeProperties; } var propName = name.Substring(name.StartsWith("Is") ? 2 : 3); Dictionary <QualType, GetterSetter> property; if (!typeProperties.TryGetValue(propName, out property)) { property = new Dictionary <QualType, GetterSetter>(); typeProperties[propName] = property; } GetterSetter gs; if (!property.TryGetValue(type, out gs)) { gs = new GetterSetter() { Name = propName }; } if (name.StartsWith("Get") || name.StartsWith("Is")) { Console.WriteLine($"Getter exists for {name}"); if (propName != decl.Parent.Name || propName == "Text") { // do not generate Getter if propertyName equals to typename (Text type already has a workaround for this case) gs.Getter = decl; } } else { if (gs.Setter != null) { Console.WriteLine($"Setter exists for {name}"); } gs.Setter = decl; } property[type] = gs; }
public void Visit(GetterSetter node) { ReportError(node); }
public virtual bool Walk(GetterSetter node) { return(true); }
public virtual void Visit(GetterSetter node) { if (node != null) { AcceptChildren(node); } }
public void Visit(GetterSetter node) { // invalid! ignore IsValid = false; }
public virtual void PostWalk(GetterSetter node) { }
public virtual bool Walk(GetterSetter node) { return true; }
public override void VisitCXXMethodDecl(CXXMethodDecl decl, VisitKind visitKind) { if (visitKind != VisitKind.Enter) return; var isConstructor = decl is CXXConstructorDecl; if (decl is CXXDestructorDecl || isConstructor) return; if (decl.IsCopyAssignmentOperator || decl.IsMoveAssignmentOperator) return; if (decl.Parent == null) return; if (!decl.Parent.QualifiedName.StartsWith("Urho3D::")) return; // Only get methods prefixed with Get with no parameters // and Set methods that return void and take a single parameter var name = decl.Name; // Handle Get methods that are not really getters // This is a get method that does not get anything QualType type; if (name.StartsWith("Get") || name.StartsWith("Is")) { if (decl.Parameters.Count() != 0) return; if (decl.ReturnQualType.ToString() == "void") return; if (name == "IsElementEventSender" || name == "IsOpen" || name == "IsPressed") return; type = decl.ReturnQualType; } else if (name.StartsWith("Set")) { if (decl.Parameters.Count() != 1) return; if (!(decl.ReturnQualType.Bind() is Sharpie.Bind.Types.VoidType)) return; if ((name == "SetTypeName" || name == "SetType") && decl.Parent.Name == "UnknownComponent") return; if (decl.Access != AccessSpecifier.Public) return; type = decl.Parameters.FirstOrDefault().QualType; } else return; Dictionary<string, Dictionary<QualType, GetterSetter>> typeProperties; if (!allProperties.TryGetValue(decl.Parent.Name, out typeProperties)) { typeProperties = new Dictionary<string, Dictionary<QualType, GetterSetter>>(); allProperties[decl.Parent.Name] = typeProperties; } var propName = name.Substring(name.StartsWith("Is") ? 2 : 3); Dictionary<QualType, GetterSetter> property; if (!typeProperties.TryGetValue(propName, out property)) { property = new Dictionary<QualType, GetterSetter>(); typeProperties[propName] = property; } GetterSetter gs; if (!property.TryGetValue(type, out gs)) { gs = new GetterSetter() { Name = propName }; } if (name.StartsWith("Get") || name.StartsWith("Is")) { Console.WriteLine($"Getter exists for {name}"); gs.Getter = decl; } else { if (gs.Setter != null) { Console.WriteLine($"Setter exists for {name}"); } gs.Setter = decl; } property[type] = gs; }
public override bool Walk(GetterSetter node) { AddNode(node); return(true); }
public void Visit(GetterSetter node) { // not applicable; terminate }