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;
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #4
0
        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);
        }
Exemple #5
0
 public override bool MetaClass_ConformsTo(MetaClassBuilder _this, MetaTypeBuilder type)
 {
     return(type is MetaClassBuilder superClass && _this.GetAllSuperClasses(true).Contains(superClass));
 }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
 public override IReadOnlyList <MetaOperationBuilder> MetaClass_GetAllOperations(MetaClassBuilder _this)
 {
     return(_this.GetAllSuperOperations(true));
 }
Exemple #9
0
 public override IReadOnlyList <MetaPropertyBuilder> MetaClass_GetAllProperties(MetaClassBuilder _this)
 {
     return(_this.GetAllSuperProperties(true));
 }
Exemple #10
0
        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);
        }