using Newtonsoft.Json;
using System;
using System.Collections.Generic;

namespace FeMM.Grasshopper.Components.Models.MeCheck2
{
    public class CompositeSectionStiffeners : IEquatable<CompositeSectionStiffeners>
    {
        public double BeamLength { get; set; }
        public double GeometryStiffenerSpacing { get; set; }
        public double GeometryStiffenerWidth { get; set; }
        public double GeometryStiffenerThickness { get; set; }
        public bool GeometryStiffenerSymmetric { get; set; }
        public bool GeometryStiffenerRigid { get; set; }

        public CompositeSectionStiffeners()
        {
        }

        public CompositeSectionStiffeners(double beamLength, double geometryStiffenerSpacing, double geometryStiffenerWidth, double geometryStiffenerThickness, bool geometryStiffenerSymmetric, bool geometryStiffenerRigid)
        {
            BeamLength = beamLength;
            GeometryStiffenerSpacing = geometryStiffenerSpacing;
            GeometryStiffenerWidth = geometryStiffenerWidth;
            GeometryStiffenerThickness = geometryStiffenerThickness;
            GeometryStiffenerSymmetric = geometryStiffenerSymmetric;
            GeometryStiffenerRigid = geometryStiffenerRigid;
        }

        public void Write(JsonTextWriter writer)
        {
            writer.WritePropertyName("BeamLength");
            writer.WriteValue(BeamLength);
            writer.WritePropertyName("GeometryStiffenerSymmetric");
            writer.WriteValue(GeometryStiffenerSymmetric);
            writer.WritePropertyName("GeometryStiffenerRigid");
            writer.WriteValue(GeometryStiffenerRigid);
            writer.WritePropertyName("GeometryStiffenerSpacing");
            writer.WriteValue(GeometryStiffenerSpacing);
            writer.WritePropertyName("GeometryStiffenerWidth");
            writer.WriteValue(GeometryStiffenerWidth);
            writer.WritePropertyName("GeometryStiffenerThickness");
            writer.WriteValue(GeometryStiffenerThickness);
        }

        public override bool Equals(object obj)
        {
            return Equals(obj as CompositeSectionStiffeners);
        }

        public bool Equals(CompositeSectionStiffeners other)
        {
            return other is not null &&
                   BeamLength == other.BeamLength &&
                   GeometryStiffenerSpacing == other.GeometryStiffenerSpacing &&
                   GeometryStiffenerWidth == other.GeometryStiffenerWidth &&
                   GeometryStiffenerThickness == other.GeometryStiffenerThickness &&
                   GeometryStiffenerSymmetric == other.GeometryStiffenerSymmetric &&
                   GeometryStiffenerRigid == other.GeometryStiffenerRigid;
        }

        public override int GetHashCode()
        {
            unchecked
            {
                int hashCode = -1630197643;
                hashCode = hashCode * -1521134295 + BeamLength.GetHashCode();
                hashCode = hashCode * -1521134295 + GeometryStiffenerSpacing.GetHashCode();
                hashCode = hashCode * -1521134295 + GeometryStiffenerWidth.GetHashCode();
                hashCode = hashCode * -1521134295 + GeometryStiffenerThickness.GetHashCode();
                hashCode = hashCode * -1521134295 + GeometryStiffenerSymmetric.GetHashCode();
                hashCode = hashCode * -1521134295 + GeometryStiffenerRigid.GetHashCode();
                return hashCode;
            }
        }

        public static bool operator ==(CompositeSectionStiffeners left, CompositeSectionStiffeners right)
        {
            return EqualityComparer<CompositeSectionStiffeners>.Default.Equals(left, right);
        }

        public static bool operator !=(CompositeSectionStiffeners left, CompositeSectionStiffeners right)
        {
            return !(left == right);
        }
    }
}
303 files24 directories