private IEnumerable <IEdmEnumMember> ComputeMembers()
        {
            IEdmEnumMember        csdlSemanticsEnumMember;
            List <IEdmEnumMember> edmEnumMembers = new List <IEdmEnumMember>();
            long value = (long)-1;

            foreach (CsdlEnumMember member in this.enumeration.Members)
            {
                long?nullable = member.Value;
                if (nullable.HasValue)
                {
                    long?value1 = member.Value;
                    value = value1.Value;
                    csdlSemanticsEnumMember = new CsdlSemanticsEnumMember(this, member);
                    csdlSemanticsEnumMember.SetIsValueExplicit(this.Model, new bool?(true));
                }
                else
                {
                    if (value >= 0x7fffffffffffffffL)
                    {
                        CsdlSemanticsEnumTypeDefinition csdlSemanticsEnumTypeDefinition = this;
                        string      name          = member.Name;
                        EdmError[]  edmErrorArray = new EdmError[1];
                        EdmError[]  edmError      = edmErrorArray;
                        int         num           = 0;
                        EdmLocation location      = member.Location;
                        EdmLocation edmLocation   = location;
                        if (location == null)
                        {
                            edmLocation = base.Location;
                        }
                        edmError[num]           = new EdmError(edmLocation, EdmErrorCode.EnumMemberValueOutOfRange, Strings.CsdlSemantics_EnumMemberValueOutOfRange);
                        csdlSemanticsEnumMember = new BadEnumMember(csdlSemanticsEnumTypeDefinition, name, edmErrorArray);
                    }
                    else
                    {
                        long?nullable1 = new long?(value + (long)1);
                        value                   = nullable1.Value;
                        member.Value            = nullable1;
                        csdlSemanticsEnumMember = new CsdlSemanticsEnumMember(this, member);
                    }
                    csdlSemanticsEnumMember.SetIsValueExplicit(this.Model, new bool?(false));
                }
                edmEnumMembers.Add(csdlSemanticsEnumMember);
            }
            return(edmEnumMembers);
        }
        private IEnumerable <IEdmEnumMember> ComputeMembers()
        {
            var members = new List <IEdmEnumMember>();

            // Walk the members and assign implicit values where needed.
            long previousValue = -1;

            foreach (CsdlEnumMember member in this.enumeration.Members)
            {
                IEdmEnumMember semanticsMember;
                long?          implicitValue = null;
                if (!member.Value.HasValue)
                {
                    if (previousValue < long.MaxValue)
                    {
                        implicitValue   = previousValue + 1;
                        previousValue   = implicitValue.Value;
                        member.Value    = implicitValue;
                        semanticsMember = new CsdlSemanticsEnumMember(this, member);
                    }
                    else
                    {
                        semanticsMember = new BadEnumMember(this, member.Name, new EdmError[] { new EdmError(member.Location ?? this.Location, EdmErrorCode.EnumMemberValueOutOfRange, Edm.Strings.CsdlSemantics_EnumMemberValueOutOfRange) });
                    }

                    semanticsMember.SetIsValueExplicit(this.Model, false);
                }
                else
                {
                    previousValue   = member.Value.Value;
                    semanticsMember = new CsdlSemanticsEnumMember(this, member);
                    semanticsMember.SetIsValueExplicit(this.Model, true);
                }

                members.Add(semanticsMember);
            }

            return(members);
        }