public EquatableHelper(ProcessedMethod method, SourceWriter headers, SourceWriter implementation) : base(method, headers, implementation) { ReturnType = "bool"; var pt = method.Method.GetParameters() [0].ParameterType; var objc = NameGenerator.GetTypeName(pt); var nullable = !pt.IsPrimitive ? " * _Nullable" : ""; ParameterType = pt; ObjCSignature = $"isEqualTo{objc.PascalCase ()}:({objc}{nullable})other"; MonoSignature = $"Equals({NameGenerator.GetMonoName (pt)})"; }
protected void GenerateIndexedSubscriptingWrite(Type indexType, Type propertyType) { string indexTypeString = NameGenerator.GetTypeName(indexType); headers.WriteLine($"- (void)setObject:(id)obj atIndexedSubscript:({indexTypeString})idx;"); implementation.WriteLine($"- (void)setObject:(id)obj atIndexedSubscript:({indexTypeString})idx"); implementation.WriteLine("{"); implementation.Indent++; implementation.WriteLine($"[self setItem:idx value:{FromNSObject (propertyType, "obj")}];"); implementation.Indent--; implementation.WriteLine("}"); implementation.WriteLine(); }
protected void GenerateIndexedSubscriptingRead(Type indexType, Type propertyType) { string indexTypeString = NameGenerator.GetTypeName(indexType); headers.WriteLine($"- (id)objectAtIndexedSubscript:({indexTypeString})idx;"); implementation.WriteLine($"- (id)objectAtIndexedSubscript:({indexTypeString})idx"); implementation.WriteLine("{"); implementation.Indent++; implementation.WriteLine($"return {ToNSObject (propertyType, "[self getItem:idx]")};"); implementation.Indent--; implementation.WriteLine("}"); implementation.WriteLine(); }
protected void GenerateKeyedSubscriptingRead(Type indexType, Type propertyType) { string indexTypeString = NameGenerator.GetTypeName(indexType); // TODO - Technically the argument here can be anything, not just id headers.WriteLine($"- (id)objectForKeyedSubscript:(id)key;"); implementation.WriteLine($"- (id)objectForKeyedSubscript:(id)key;"); implementation.WriteLine("{"); implementation.Indent++; implementation.WriteLine($"return {ToNSObject (propertyType, "[self getItem:key]")};"); implementation.Indent--; implementation.WriteLine("}"); implementation.WriteLine(); }