private void ConvertProperty(MetaClassBuilder mcls, EStructuralFeature eprop) { var mprop = _factory.MetaProperty(); mprop.Name = eprop.Name.ToPascalCase(); mcls.Properties.Add(mprop); _map.Add(eprop, mprop); if (eprop.Derived) { mprop.Kind = MetaPropertyKind.Derived; } else if (eprop.Unsettable || !eprop.Changeable) { mprop.Kind = MetaPropertyKind.Readonly; } mprop.DefaultValue = eprop.DefaultValueLiteral; if (eprop is EAttribute eattr) { if (eattr.ID && eattr.EType == EcoreInstance.EString) { mprop.Attributes.Add(MetaInstance.NameAttribute.ToMutable()); } } else if (eprop is EReference eref) { mprop.IsContainment = eref.Containment; } }
public override IReadOnlyList <MetaClassBuilder> MetaClass_GetAllSuperClasses(MetaClassBuilder _this, bool includeSelf) { var result = new List <MetaClassBuilder>(); result.Add(_this); int i = 0; while (i < result.Count) { MetaClassBuilder current = result[i]; foreach (var sup in current.SuperClasses) { if (!result.Contains(sup)) { result.Add(sup); } } ++i; } if (!includeSelf) { result.RemoveAt(0); } result.Reverse(); return(result); }
private void ConvertOperation(MetaClassBuilder mcls, EOperation eop) { var mop = _factory.MetaOperation(); mop.Name = eop.Name.ToPascalCase(); mcls.Operations.Add(mop); _map.Add(eop, mop); foreach (var eparam in eop.EParameters) { var mparam = _factory.MetaParameter(); mparam.Name = eparam.Name.ToCamelCase(); mop.Parameters.Add(mparam); _map.Add(eparam, mparam); } }
public override IReadOnlyList <MetaPropertyBuilder> MetaClass_GetAllSuperProperties(MetaClassBuilder _this, bool includeSelf) { var result = new List <MetaPropertyBuilder>(); var supers = _this.GetAllSuperClasses(includeSelf); foreach (var sup in supers) { foreach (var prop in sup.Properties) { result.Add(prop); } } return(result); }
public override bool MetaClass_ConformsTo(MetaClassBuilder _this, MetaTypeBuilder type) { return(type is MetaClassBuilder superClass && _this.GetAllSuperClasses(true).Contains(superClass)); }
public override IReadOnlyList <MetaOperationBuilder> MetaClass_GetAllFinalOperations(MetaClassBuilder _this) { var ops = _this.GetAllOperations(); var result = new List <MetaOperationBuilder>(ops); result.Reverse(); int i = result.Count - 1; while (i >= 0) { var currentOp = result[i]; MetaOperationBuilder op = result.First(o => o.ConformsTo(currentOp)); if (op != currentOp) { result.RemoveAt(i); } --i; } return(result); }
public override IReadOnlyList <MetaPropertyBuilder> MetaClass_GetAllFinalProperties(MetaClassBuilder _this) { var props = _this.GetAllProperties(); var result = new List <MetaPropertyBuilder>(props); result.Reverse(); int i = result.Count - 1; while (i >= 0) { var currentProp = result[i]; MetaPropertyBuilder prop = result.First(p => p.Name == currentProp.Name); if (prop != currentProp) { result.RemoveAt(i); } --i; } return(result); }
public override IReadOnlyList <MetaOperationBuilder> MetaClass_GetAllOperations(MetaClassBuilder _this) { return(_this.GetAllSuperOperations(true)); }
public override IReadOnlyList <MetaPropertyBuilder> MetaClass_GetAllProperties(MetaClassBuilder _this) { return(_this.GetAllSuperProperties(true)); }
public override IReadOnlyList <MetaOperationBuilder> MetaClass_GetAllSuperOperations(MetaClassBuilder _this, bool includeSelf) { var result = new List <MetaOperationBuilder>(); var supers = _this.GetAllSuperClasses(includeSelf); foreach (var sup in supers) { foreach (var op in sup.Operations) { result.Add(op); } } return(result); }