예제 #1
0
        public override TypeNode VisitTypeReference(TypeNode type, bool addNonNullWrapperIfNeeded)
        {
            if (type == null)
            {
                return(null);
            }

            // begin change by drunje (allow pointers to managed structures)
            if (this.AllowPointersToManagedStructures && (type.NodeType == NodeType.PointerTypeExpression))
            {
                PointerTypeExpression ptrExpr = (PointerTypeExpression)type;
                TypeNode et = this.VisitTypeReference(ptrExpr.ElementType);
                if ((et != null) && (et.Name != Looker.NotFound) && (!et.IsUnmanaged) && (et.IsValueType))
                {
                    return(et.GetPointerType());
                }
            }
            // end of change by drunje

            ClassParameter cp = this.typeParamToClassParamMap[type.UniqueKey] as ClassParameter;

            if (cp != null)
            {
                return(cp);
            }

            return(base.VisitTypeReference(type, addNonNullWrapperIfNeeded));
        }
예제 #2
0
        public object CreateClass([FromBody] ClassParameter obj)
        {
            if (obj.UserId == null && obj.Password == null)
            {
                return(new Result {
                    IsSucess = false, ResultData = "UserId Requird"
                });
            }
            GRContext db     = new GRContext();
            tbl_class objcls = new tbl_class();
            var       result = db.tbl_class.FirstOrDefault(r => r.class_name == obj.ClassName && r.course_name == obj.CourseName);

            if (result != null)
            {
                return(new Error()
                {
                    IsError = true, Message = "Duplicate Entry Not Allowd"
                });
            }
            objcls.class_name   = obj.ClassName.ToString();
            objcls.course_name  = obj.CourseName.ToString();
            objcls.Display      = 1;
            objcls.created_date = DateTime.Now;
            db.tbl_class.Add(objcls);
            db.SaveChanges();
            return(new Result
            {
                IsSucess = true,
                ResultData = "Class Created!"
            });
        }
예제 #3
0
        public List <ClassParameter> GetInputOrOutputData(XElement dataElement)
        {
            if (dataElement == null)
            {
                return(null);
            }

            IEnumerable <XElement> rows = from element in dataElement.Elements("row")
                                          select element;

            if (rows == null)
            {
                return(null);
            }

            var datas = new List <ClassParameter>();

            foreach (var row in rows)
            {
                var data = new ClassParameter {
                    Name = XElementParserUtils.GetStringValue(row.Element("fieldName")),
                    Type = XElementParserUtils.GetStringValue(row.Element("fieldType"))
                };
                datas.Add(data);
            }
            return(datas);
        }
예제 #4
0
        public void CanGetParameterValuesForMultiParametersVoidMethod()
        {
            var classParameter  = new ClassParameter();
            var structParameter = new StructParameter();
            Expression <Action <Component> > expression = c => c.MultiParametersVoid(3, classParameter, structParameter);
            var parameterValues = expression.GetParameterValues().ToList();

            parameterValues.Should().HaveCount(3);
            parameterValues[0].Should().Be(3);
            parameterValues[1].Should().Be(classParameter);
            parameterValues[2].Should().Be(structParameter);
        }
예제 #5
0
        private CodeTypeDeclaration CreateParameterClass(ClassParameter parameter)
        {
            var parameterClass = new CodeTypeDeclaration();

            parameterClass.IsClass        = true;
            parameterClass.TypeAttributes = TypeAttributes.Public;

            parameterClass.Name = parameter.Name;

            parameterClass.Members.AddRange(this.GenererateProperties(parameter.ChildProperties));

            return(parameterClass);
        }
예제 #6
0
        private ClassParameter ConvertToClassParameter(TypeNode typeParameter, InterfaceList interfaces, Class baseClass, ClassExpression cExpr)
        {
            ClassParameter cParam = typeParameter is MethodTypeParameter ? new MethodClassParameter() : new ClassParameter();

            this.typeParamToClassParamMap[typeParameter.UniqueKey] = cParam;
            cParam.SourceContext      = typeParameter.SourceContext;
            cParam.TypeParameterFlags = ((ITypeParameter)typeParameter).TypeParameterFlags;
            if (typeParameter.IsUnmanaged)
            {
                cParam.SetIsUnmanaged();
            }
            cParam.Name                = typeParameter.Name;
            cParam.Namespace           = StandardIds.ClassParameter;
            cParam.BaseClass           = baseClass == null ? SystemTypes.Object : baseClass;
            cParam.BaseClassExpression = cExpr;
            cParam.DeclaringMember     = ((ITypeParameter)typeParameter).DeclaringMember;
            cParam.DeclaringModule     = typeParameter.DeclaringModule;
            cParam.DeclaringType       = typeParameter is MethodTypeParameter ? null : typeParameter.DeclaringType;
            cParam.Flags               = typeParameter.Flags & ~TypeFlags.Interface;
            cParam.ParameterListIndex  = ((ITypeParameter)typeParameter).ParameterListIndex;
            MemberList mems = cParam.DeclaringType == null ? null : cParam.DeclaringType.Members;
            int        n    = mems == null ? 0 : mems.Count;

            for (int i = 0; i < n; i++)
            {
                if ((mems[i] as TypeNode) == typeParameter)
                {
                    mems[i] = cParam;
                    break;
                }
            }
            if (cExpr != null)
            {
                n = interfaces.Count - 1;
                InterfaceList actualInterfaces = new InterfaceList(n);
                for (int i = 0; i < n; i++)
                {
                    actualInterfaces.Add(interfaces[i + 1]);
                }
                cParam.Interfaces = actualInterfaces;
            }
            else
            {
                cParam.Interfaces = interfaces;
            }
            if (cExpr != null)
            {
                cParam.BaseClass = this.VisitClassExpression(cExpr);
            }
            return(cParam);
        }
        public void TestAmend_ExplicitRef()
        {
            ClassParameter p1 = new ClassParameter {
                Print = "Hello"
            };
            StructParameter p2 = new StructParameter {
                Print = "Hello"
            };

            Amend_Explicit_By_Ref(ref p1);
            Amend_Explicit_By_Ref(ref p2);

            Assert.AreEqual("Hello World", p1.Print);
            Assert.AreEqual("Hello", p2.Print, "Structs are always passed-by-value");
        }
 public object CreateClass([FromBody] ClassParameter obj)
 {
     try
     {
         ClassBusiness classB = new ClassBusiness();
         var           Result = classB.CreateClass(obj);
         return(Result);
     }
     catch (Exception e)
     {
         return(new Error()
         {
             IsError = true, Message = e.Message
         });
     }
 }
예제 #9
0
        public void Should_Generate_Classes_from_Parameters()
        {
            var expected   = @"namespace My.Namespace
{
    
    
    public class exception
    {
        
        public processData processData { get; set; }
        public string ExceptionMessage { get; set; }
    }
}
";
            var parameters = new List <ClassParameter>();
            var parameter  = new ClassParameter
            {
                Name            = "exception",
                Type            = "exception",
                ChildProperties = new List <ClassParameter>
                {
                    new ClassParameter
                    {
                        Name = "processData",
                        Type = "processData"
                    },

                    new ClassParameter
                    {
                        Name = "ExceptionMessage",
                        Type = "string"
                    }
                }
            };

            parameters.Add(parameter);
            var codenamespace = this.xsdBuilder.Build(parameters, "My.Namespace");
            var code          = TestCodeGeneratorUtils.GenerateCode(codenamespace);

            Assert.AreEqual(expected, code);
        }
예제 #10
0
        private TypeNode ConvertToClassParameter(TypeNode baseType, TypeNode /*!*/ typeParameter)
        {
            ClassParameter result;

            if (typeParameter is MethodTypeParameter)
            {
                result = new MethodClassParameter();
            }
            else if (typeParameter is TypeParameter)
            {
                result = new ClassParameter
                {
                    DeclaringType = typeParameter.DeclaringType
                };
            }
            else
            {
                return(typeParameter); //give up
            }
            result.SourceContext      = typeParameter.SourceContext;
            result.TypeParameterFlags = ((ITypeParameter)typeParameter).TypeParameterFlags;

            result.Name            = typeParameter.Name;
            result.Namespace       = StandardIds.ClassParameter;
            result.BaseClass       = baseType is Class c ? c : CoreSystemTypes.Object;
            result.DeclaringMember = ((ITypeParameter)typeParameter).DeclaringMember;
            result.DeclaringModule = typeParameter.DeclaringModule;
            result.Flags           = typeParameter.Flags & ~TypeFlags.Interface;

            //InterfaceList constraints = result.Interfaces = new InterfaceList();
            InterfaceList interfaces = typeParameter.Interfaces;

            for (int i = 1, n = interfaces == null ? 0 : interfaces.Count; i < n; i++)
            {
                //^ assert interfaces != null;
                interfaces.Add(this.VisitInterfaceReference(interfaces[i]));
            }
            return(result);
        }
예제 #11
0
 public override TypeNodeList VisitTypeParameterList(TypeNodeList typeParameters)
 {
     typeParameters = base.VisitTypeParameterList(typeParameters);
     for (int i = 0, n = typeParameters == null ? 0 : typeParameters.Count; i < n; i++)
     {
         TypeNode tp = typeParameters[i];
         if (tp == null)
         {
             continue;
         }
         ClassParameter cp = tp as ClassParameter;
         if (cp != null)
         {
             if (cp.BaseClass == null)
             {
                 cp.BaseClass = this.VisitTypeReference(cp.BaseClassExpression) as Class;
             }
         }
         typeParameters[i] = base.VisitTypeParameter(tp);
     }
     return(typeParameters);
 }
예제 #12
0
    private TypeNode ConvertToClassParameter(TypeNode baseType, TypeNode/*!*/ typeParameter)
    {
        ClassParameter result;
        if (typeParameter is MethodTypeParameter)
        {
            result = new MethodClassParameter();
        }
        else if (typeParameter is TypeParameter)
        {
            result = new ClassParameter();
            result.DeclaringType = typeParameter.DeclaringType;
        }
        else
            return typeParameter; //give up
        result.SourceContext = typeParameter.SourceContext;
        result.TypeParameterFlags = ((ITypeParameter)typeParameter).TypeParameterFlags;
#if ExtendedRuntime
      if (typeParameter.IsUnmanaged) { result.SetIsUnmanaged(); }
      if (typeParameter.IsPointerFree) { result.SetIsPointerFree(); }
#endif
        result.ParameterListIndex = ((ITypeParameter)typeParameter).ParameterListIndex;
        result.Name = typeParameter.Name;
        result.Namespace = StandardIds.ClassParameter;
        result.BaseClass = baseType is Class ? (Class)baseType : CoreSystemTypes.Object;
        result.DeclaringMember = ((ITypeParameter)typeParameter).DeclaringMember;
        result.DeclaringModule = typeParameter.DeclaringModule;
        result.Flags = typeParameter.Flags & ~TypeFlags.Interface;
        InterfaceList constraints = result.Interfaces = new InterfaceList();
        InterfaceList interfaces = typeParameter.Interfaces;
        for (int i = 1, n = interfaces == null ? 0 : interfaces.Count; i < n; i++)
        {
            //^ assert interfaces != null;
            constraints.Add(interfaces[i]);
        }
        this.forwarding[typeParameter.UniqueKey] = result;
        return result;
    }
예제 #13
0
        private TypeNode/*!*/ ConstructCorrectTypeNodeSubclass(int i, Identifier/*!*/ namesp, int firstInterfaceIndex, int lastInterfaceIndex,
          TypeFlags flags, InterfaceList interfaces, int baseTypeCodedIndex, bool isSystemEnum)
        {
            TypeNode result;
            TypeNode.TypeAttributeProvider attributeProvider = new TypeNode.TypeAttributeProvider(this.GetTypeAttributes);
            TypeNode.NestedTypeProvider nestedTypeProvider = new TypeNode.NestedTypeProvider(this.GetNestedTypes);
            TypeNode.TypeMemberProvider memberProvider = new TypeNode.TypeMemberProvider(this.GetTypeMembers);
            bool isTemplateParameter = false;

            if ((flags & TypeFlags.Interface) != 0)
            {
                if (isTemplateParameter)
                    result = new TypeParameter(interfaces, nestedTypeProvider, attributeProvider, memberProvider, i);
                else
                    result = new Interface(interfaces, nestedTypeProvider, attributeProvider, memberProvider, i);
            }
            else if (isTemplateParameter)
            {
                result = new ClassParameter(nestedTypeProvider, attributeProvider, memberProvider, i);
            }
            else
            {
                result = null;
                TypeNode baseClass = this.GetTypeIfNotGenericInstance(baseTypeCodedIndex);
                if (baseClass != null)
                {
                    if (baseClass == CoreSystemTypes.MulticastDelegate) //TODO: handle single cast delegates
                        result = new DelegateNode(nestedTypeProvider, attributeProvider, memberProvider, i);
                    else if (baseClass == CoreSystemTypes.Enum)
                        result = new EnumNode(nestedTypeProvider, attributeProvider, memberProvider, i);
                    else if (baseClass == CoreSystemTypes.ValueType &&
                      !(isSystemEnum && (flags & TypeFlags.Sealed) == 0))
                    {
                        result = new Struct(nestedTypeProvider, attributeProvider, memberProvider, i);
                    }
                }

                if(result == null)
                    result = new Class(nestedTypeProvider, attributeProvider, memberProvider, i);
            }

            result.Flags = flags;
            result.Interfaces = interfaces;
            return result;
        }
예제 #14
0
 public static int Call(ClassParameter p) => p.Value;
예제 #15
0
 public int MultiParametersNonVoid(string text, ClassParameter classParameter,
                                   ReadonlyStructParameter structParameter) => 5;
예제 #16
0
 public void MultiParametersVoid(int id, ClassParameter classParameter, StructParameter structParameter)
 {
 }