public void Check(ConstructorInfo info, Dependency parent)
 {
     if (info.IsPrivate && !info.ReflectedType.IsAbstract)
     {
         parent.Add(new ProblemDependency(string.Format("This is a private constructor")));
     }
 }
        public void Check(FieldInfo info, Dependency parent)
        {
            //            Dependency parent = new Dependency(info.);
            bool isInterface = info.FieldType.IsInterface;
            bool isAbstract = info.FieldType.IsAbstract;
            bool isNotSealed = !info.FieldType.IsSealed;

            string message = "";
            if (isInterface)
            {
                message = string.Format("Field {0} is interface {1}", info.Name, info.FieldType.Name);
            }
            else if (isAbstract)
            {
                message = string.Format("Field {0} is an abstract class {1} and can be inherited from", info.Name,info.FieldType.Name);

            }
            else if (isNotSealed)
            {
                message =
                    string.Format("Field {0} is non sealed {1} and can be inherited from", info.Name,
                                  info.FieldType.Name);
            }

            parent.Add(new Dependency(message));
            //            if (parent.AlreadyContains(info.FieldType))
            //            {
            //                parent.Add(new Dependency(message));
            //            }
            //            else
            //            {
            //                parent.Add(new Dependency(info.FieldType, message));
            //            }
        }
 public void Check(MethodInfo info, Dependency parent)
 {
     if (!info.IsFinal && (info.IsVirtual || info.IsAbstract))
     {
         parent.Add(new Dependency(string.Format(" {0}() can be overriden", info.Name)));
     }
 }
Example #4
0
 /// <summary>
 /// Constructor for built in subsystem
 /// Default: BufferSize = 4098
 /// </summary>
 /// <param name="SSDRXmlNode"></param>
 /// <param name="dependencies"></param>
 /// <param name="asset"></param>
 public SSDR(XmlNode SSDRXmlNode, Dependency dependencies, Asset asset)
 {
     DefaultSubName = "SSDR";
     Asset          = asset;
     GetSubNameFromXmlNode(SSDRXmlNode);
     if (SSDRXmlNode.Attributes["bufferSize"] != null)
     {
         _bufferSize = (double)Convert.ChangeType(SSDRXmlNode.Attributes["bufferSize"].Value.ToString(), typeof(double));
     }
     DATABUFFERRATIO_KEY = new StateVarKey <double>(Asset.Name + "." + "databufferfillratio");
     addKey(DATABUFFERRATIO_KEY);
     SubsystemDependencyFunctions = new Dictionary <string, Delegate>();
     DependentSubsystems          = new List <Subsystem>();
     dependencies.Add("PowerfromSSDR" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(POWERSUB_PowerProfile_SSDRSUB));
     dependencies.Add("CommfromSSDR" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(COMMSUB_DataRateProfile_SSDRSUB));
     dependencies.Add("EvalfromSSDR" + "." + Asset.Name, new Func <Event, double>(EVAL_DataRateProfile_SSDRSUB));
 }
        protected void AddDependency <T>()
        {
            var dependencyNode = new DependencyNode
            {
                TypeId = typeof(T).GetHashCode(),
                Value  = null
            };

            Dependency.Add(dependencyNode);
        }
Example #6
0
 /// <summary>
 /// Constructor for built in subsystem
 /// </summary>
 /// <param name="CommXmlNode"></param>
 /// <param name="dependencies"></param>
 /// <param name="asset"></param>
 public Comm(XmlNode CommXmlNode, Dependency dependencies, Asset asset)
 {
     DefaultSubName = "Comm";
     Asset          = asset;
     GetSubNameFromXmlNode(CommXmlNode);
     SubsystemDependencyFunctions = new Dictionary <string, Delegate>();
     DependentSubsystems          = new List <Subsystem>();
     DATARATE_KEY = new StateVarKey <double>(Asset.Name + "." + "datarate(mb/s)");
     addKey(DATARATE_KEY);
     dependencies.Add("PowerfromComm" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(POWERSUB_PowerProfile_COMMSUB));
 }
Example #7
0
 /// <summary>
 /// Constructor for built in subsystem
 /// Defaults: lowQualityPixels = 5000, midQualityPixels = 10000, highQualityPixels = 15000
 /// lowQualityTime = 3s, midQyalityTime = 5s, highQualityTime = 7s
 /// </summary>
 /// <param name="EOSensorXmlNode"></param>
 /// <param name="dependencies"></param>
 /// <param name="asset"></param>
 public EOSensor(XmlNode EOSensorXmlNode, Dependency dependencies, Asset asset)
 {
     DefaultSubName = "EOSensor";
     Asset          = asset;
     GetSubNameFromXmlNode(EOSensorXmlNode);
     PIXELS_KEY    = new StateVarKey <double>(Asset.Name + "." + "numpixels");
     INCIDENCE_KEY = new StateVarKey <double>(Asset.Name + "." + "incidenceangle");
     EOON_KEY      = new StateVarKey <bool>(Asset.Name + "." + "eosensoron");
     addKey(PIXELS_KEY);
     addKey(INCIDENCE_KEY);
     addKey(EOON_KEY);
     DependentSubsystems          = new List <Subsystem>();
     SubsystemDependencyFunctions = new Dictionary <string, Delegate>();
     if (EOSensorXmlNode.Attributes["lowQualityPixels"] != null)
     {
         //Console.WriteLine("inside loop");
         _lowQualityPixels = (double)Convert.ChangeType(EOSensorXmlNode.Attributes["lowQualityPixels"].Value.ToString(), typeof(double));
     }
     if (EOSensorXmlNode.Attributes["lowQualityTime"] != null)
     {
         _lowQualityTime = (double)Convert.ChangeType(EOSensorXmlNode.Attributes["lowQualityTime"].Value.ToString(), typeof(double));
     }
     if (EOSensorXmlNode.Attributes["midQualityPixels"] != null)
     {
         _midQualityPixels = (double)Convert.ChangeType(EOSensorXmlNode.Attributes["midQualityPixels"].Value.ToString(), typeof(double));
     }
     if (EOSensorXmlNode.Attributes["midQualityTime"] != null)
     {
         _midQualityTime = (double)Convert.ChangeType(EOSensorXmlNode.Attributes["midQualityTime"].Value.ToString(), typeof(double));
     }
     if (EOSensorXmlNode.Attributes["highQualityPixels"] != null)
     {
         _highQualityPixels = (double)Convert.ChangeType(EOSensorXmlNode.Attributes["highQualityPixels"].Value.ToString(), typeof(double));
     }
     if (EOSensorXmlNode.Attributes["highQualityTime"] != null)
     {
         _highQualityTime = (double)Convert.ChangeType(EOSensorXmlNode.Attributes["highQualityTime"].Value.ToString(), typeof(double));
     }
     dependencies.Add("PowerfromEOSensor" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(POWERSUB_PowerProfile_EOSENSORSUB));
     dependencies.Add("SSDRfromEOSensor" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(SSDRSUB_NewDataProfile_EOSENSORSUB));
 }
Example #8
0
        /// <summary>
        /// Constructor for built in subsystems
        /// Defaults: Slew time: 10s
        /// </summary>
        /// <param name="AntennaNode"></param>
        /// <param name="dependencies"></param>
        /// <param name="asset"></param>
        public Antenna(XmlNode AntennaNode, Dependency dependencies, Asset asset)
        {
            DefaultSubName = "Antenna";
            Asset          = asset;
            GetSubNameFromXmlNode(AntennaNode);

            /*double slewTime;
             * if (AntennaNode.Attributes["timetoslew"].Value != null)
             * {
             *  Double.TryParse(AntennaNode.Attributes["slewTime"].Value, out slewTime);
             *  _timetoslew = slewTime;
             * }*/
            ANTDATA_KEY      = new StateVarKey <Matrix <double> >(Asset.Name + "." + "antenna_data");
            ANTINCIDENCE_KEY = new StateVarKey <Matrix <double> >(Asset.Name + "." + "antenna_incidence");
            ANTSTRESS_KEY    = new StateVarKey <Matrix <double> >(Asset.Name + "." + "antenna_stress");
            addKey(ANTSTRESS_KEY);
            addKey(ANTINCIDENCE_KEY);
            addKey(ANTDATA_KEY);
            DependentSubsystems          = new List <Subsystem>();
            SubsystemDependencyFunctions = new Dictionary <string, Delegate>();
            dependencies.Add("PowerfromAntenna" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(POWERSUB_PowerProfile_ANTENNASUB));
            dependencies.Add("SSDRfromAntenna" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(SSDRSUB_NewDataProfile_ANTENNASUB));
        }
        protected override void DoChecks(MethodBase mehodBeingChecked, MethodBodyInfo methodBody, Dependency parent)
        {
            foreach (ILInstruction instruction in methodBody.Instructions)
            {
                if (instruction is InlineMethodInstruction)
                {
                    InlineMethodInstruction line = instruction as InlineMethodInstruction;
                    if (line.Method.IsVirtual)
                    {
                        parent.Add(new VirtualMethodCallDependency(line.Method.ReflectedType.Name, line.Method.Name));

                    }
                }
            }
        }
        protected override void DoChecks(MethodBase mehodBeingChecked, MethodBodyInfo methodBody, Dependency parent)
        {
            foreach (ILInstruction instruction in methodBody.Instructions)
            {
                if (instruction is InlineMethodInstruction)
                {
                    InlineMethodInstruction line = instruction as InlineMethodInstruction;
                    if (line.Method.IsStatic)
                    {
                        string message =
                            string.Format("Static method call {0} on {1}", line.Method.Name,
                                          line.Method.ReflectedType.Name);

                        parent.Add(new ProblemDependency(message));
                    }
                }
            }
        }
Example #11
0
        /// <summary>
        /// Constructor for built in subsystems
        /// Defaults: Slew time: 10s
        /// </summary>
        /// <param name="ADCSNode"></param>
        /// <param name="dependencies"></param>
        /// <param name="asset"></param>
        public ADCS(XmlNode ADCSNode, Dependency dependencies, Asset asset)
        {
            DefaultSubName = "Adcs";
            Asset          = asset;
            GetSubNameFromXmlNode(ADCSNode);

            /*double slewTime;
             * if (ADCSNode.Attributes["timetoslew"].Value != null)
             * {
             *  Double.TryParse(ADCSNode.Attributes["slewTime"].Value, out slewTime);
             *  _timetoslew = slewTime;
             * }*/
            POINTVEC_KEY = new StateVarKey <Matrix <double> >(Asset.Name + "." + "eci_pointing_vector(xyz)");
            addKey(POINTVEC_KEY);
            DependentSubsystems          = new List <Subsystem>();
            SubsystemDependencyFunctions = new Dictionary <string, Delegate>();
            dependencies.Add("PowerfromADCS" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(POWERSUB_PowerProfile_ADCSSUB));
        }
Example #12
0
    // Use this for initialization
    void Init()
    {
        Debug.Log("Initializing commodities");
        //replicate paper
        Dependency foodDep = new Dependency();

        foodDep.Add("Wood", 2);
        Add("Food", 5, foodDep);

        Dependency woodDep = new Dependency();

        woodDep.Add("Food", 1);
        woodDep.Add("Tool", .1f);
        Add("Wood", 3, woodDep);

        Dependency oreDep = new Dependency();

        oreDep.Add("Food", 2f);
        Add("Ore", 2, oreDep);

        Dependency metalDep = new Dependency();

        metalDep.Add("Food", 2);
        metalDep.Add("Ore", 2);
        Add("Metal", 1, metalDep);

        Dependency toolDep = new Dependency();

        toolDep.Add("Food", 2.3f);
        toolDep.Add("Metal", 2);
        Add("Tool", 1, toolDep);

        //PrintStat();
        return;

#if false
        Add("Food", 4);
        Add("Water", 1);
        Add("Oil", 6);

        Dependency oreDep = new Dependency();
        oreDep.Add("Oil", 10);
        Add("Ore", 5, oreDep);

        Dependency energyDep = new Dependency();
        energyDep.Add("Oil", .1f);
        Add("Energy", .2f, energyDep);

        Dependency compDep = new Dependency();
        compDep.Add("Oil", .3f);
        compDep.Add("Ore", .6f);
        Add("Computer", 300, compDep);

        Dependency rocketDep = new Dependency();
        rocketDep.Add("Oil", 30000f);
        rocketDep.Add("Water", 200000f);
        rocketDep.Add("Ore", 6000f);
        Add("Rocket", 400000f, rocketDep);

        Dependency ftDep = new Dependency();
        ftDep.Add("Oil", 20000f);
        ftDep.Add("Water", 100000f);
        ftDep.Add("Ore", 1000f);
        Add("Fuel Tank", 100000f, ftDep);

        Dependency f9Dep = new Dependency();
        f9Dep.Add("Rocket", 10);         //9 for 1st stage, 1 for 2nd stage
        f9Dep.Add("Fuel Tank", 2);       //1 for each stage
        Add("Falcon 9", 60000000f, f9Dep);

        Dependency fhDep = new Dependency();
        fhDep.Add("Falcon 9", 3);       //2 boosters, 1 core
        f9Dep.Add("Rocket", 1);         //2nd stage on core
        fhDep.Add("Fuel Tank", 1);
        Add("Falcon Heavy", 60000000f, f9Dep);

        PrintStat();
#endif
    }