public EnsembleTopDownClassifier(ClassHierarchy hierarchy)
 {
     this._hierarchy       = hierarchy;
     this._modelMapping    = new Dictionary <string, List <Tuple <string, IClassifier> > >();
     this._metaModel       = new Dictionary <string, IClassifier>();
     this._classifierNames = new List <string>();
 }
 public COOPFunctionConverter(ClassHierarchy hierarchy, COOPClass parentClass)
 {
     classHierarchy   = hierarchy;
     this.parentClass = parentClass;
     originalNameAndInputTypesToMangledName = new Dictionary <NameInputTypePair, string>(NameInputTypePair.nameInputsComparer);
     originalNameAndInputTypesToisStatic    = new Dictionary <NameInputTypePair, bool>();
     functionToReturnType = new Dictionary <string, COOPClass>();
     availableClasses     = hierarchy.getLineage(parentClass);
     availableClasses.AddRange(parentClass.imports);
     generateDictionaries();
 }
 public CallChain(Dictionary <NameInputTypePair, string> originalNameAndInputTypesToMangledName, Dictionary <NameInputTypePair, bool> originalNameAndInputTypesToisStatic, Dictionary <string, COOPClass> functionToReturnType, Dictionary <string, COOPClass> availableClasses, Dictionary <string, COOPClass> variablesToType, Dictionary <string, bool> isClassDict, COOPClass parentClass, ClassHierarchy hierarchy)
 {
     this.originalNameAndInputTypesToMangledName = originalNameAndInputTypesToMangledName;
     this.originalNameAndInputTypesToisStatic    = originalNameAndInputTypesToisStatic;
     this.functionToReturnType = functionToReturnType;
     this.availableClasses     = availableClasses;
     this.variablesToType      = variablesToType;
     this.isClassDict          = isClassDict;
     this.parentClass          = parentClass;
     this.hierarchy            = hierarchy;
 }
Example #4
0
        public void GenerateCH()
        {
            if (!programInfo.Contains("CH_TEXT"))
            {
                var ch = new ClassHierarchy();
                ch.Analyze(host);

                var text = DGMLSerializer.Serialize(ch);

                programInfo.Add("CH", ch);
                programInfo.Add("CH_TEXT", text);
            }
        }
Example #5
0
        /// <summary>
        /// Example use of the CodePrinter class: prints the code of all the methods
        /// from an application rooted in a specific assembly file.
        /// </summary>
        /// <param name="args">Root assembly of the analyzed program.</param>
        public static void TestMain(string[] args)
        {
            AssemblyNode an = AssemblyNode.GetAssembly(args[0]);

            if (an == null)
            {
                Console.WriteLine("assembly \"{0}\" not found", args[0]);
                Environment.Exit(1);
            }

            ClassHierarchy ch = new ClassHierarchy(args[0]); //DataStructUtil.singleton(an));

            foreach (Method method in ch.AllMethods())
            {
                CodePrinter.PrintMethod(Console.Out, method);
            }
        }
        private Dataset GetLocalFlatDataset(Node current, Dataset dataset)
        {
            ClassHierarchy hierarchy = ((Data.HierarchicalAttribute)dataset.Metadata.Target).Hierarchy;

            Node[]        siblings            = hierarchy.GetSiblings(current);
            List <string> negativeClassValues = new List <string>();

            foreach (Node sibling in siblings)
            {
                negativeClassValues.Add(sibling.Name);
            }


            Dataset local = dataset.GetBinaryFlatLabelSubDataset(current.Name, negativeClassValues.ToArray());

            return(local);
        }
		public void Search( ClassComponent cls )
		{
			if( cls.CodeClass.Children.Count > 0 )
			{
				ClassHierarchy ch = new ClassHierarchy();
				ch.Parent = cls.Name;
				foreach( EnvDTE.CodeClass child in cls.CodeClass.Children )
				{
					ch.Children.Add( child.Name );
				}
				m_htClassHierchs[ cls.CodeClass ] = ch;
			}
		
			foreach( ClassComponent inner in cls.InnerClasses )
			{
				Search( inner );
			}
		}
Example #8
0
        public void Search(ClassComponent cls)
        {
            if (cls.CodeClass.Children.Count > 0)
            {
                ClassHierarchy ch = new ClassHierarchy();
                ch.Parent = cls.Name;
                foreach (EnvDTE.CodeClass child in cls.CodeClass.Children)
                {
                    ch.Children.Add(child.Name);
                }
                m_htClassHierchs[cls.CodeClass] = ch;
            }

            foreach (ClassComponent inner in cls.InnerClasses)
            {
                Search(inner);
            }
        }
        private List <COOPFunction> getAvailableFunctions(COOPClass coopClass, ClassHierarchy hierarchy)
        {
            List <COOPFunction> output = new List <COOPFunction>(coopClass.Functions.Values);

            List <COOPClass> lineageClasses = new List <COOPClass>(hierarchy.getLineage(coopClass));

            lineageClasses.Remove(coopClass);

            foreach (COOPClass lineageClass in lineageClasses)
            {
                output.AddRange(from f in lineageClass.Functions.Values where (int)f.AccessLevel >= 1 select f);
            }
            foreach (COOPClass coopClassImport in coopClass.imports)
            {
                output.AddRange(from f in coopClassImport.Functions.Values where f.AccessLevel == AccessLevel.Public select f);
            }

            return(output);
        }
Example #10
0
        public virtual void ParseGroupCode(int groupcode, string value)
        {
            switch (groupcode)
            {
            case 0:
                EntityType = value;
                break;

            case 5:
                Handle = value;
                break;

            case 100:
                ClassHierarchy.Add(value);
                break;

            case 67:
                IsInPaperSpace = int.Parse(value) == 1;
                break;

            case 8:
                LayerName = value;
                break;

            case 6:
                LineType = value;
                break;

            case 62:
                ColorNumber = int.Parse(value);
                break;

            case 48:
                LineTypeScale = double.Parse(value);
                break;

            case 60:
                IsInvisible = int.Parse(value) == 1;
                break;
            }
        }
    static bool ClassIsSubClassOfClass(TestCompilerResults compilerResults, ClassHierarchy hierarchy, String subClassName, String superClassName) {
      ITypeDefinition subClassDefinition = compilerResults.FindTypeWithName(subClassName);
      ITypeDefinition superClassDefinition = compilerResults.FindTypeWithName(superClassName);

      return hierarchy.AllSubClassesOfClass(superClassDefinition).Contains(subClassDefinition);
    }
    static bool ClassDirectlySubclassesClass(TestCompilerResults compilerResults, ClassHierarchy hierarchy, String subClassName, String superClassName) {
      ITypeDefinition subClassDefinition = compilerResults.FindTypeWithName(subClassName);
      Assert.AreNotEqual(null, subClassDefinition, "Couldn't find definition for {0}", subClassName);

      ITypeDefinition superClassDefinition = compilerResults.FindTypeWithName(superClassName);
      Assert.AreNotEqual(null, superClassDefinition, "Couldn't find definition for {0}", superClassName);

      return hierarchy.DirectSubClassesOfClass(superClassDefinition).Contains(subClassDefinition);
    }
Example #13
0
 public LocalPerNodeClassifier(ClassHierarchy hierarchy)
     : base(hierarchy)
 {
 }
Example #14
0
 public LocalClassifier(ClassHierarchy hierarchy)
 {
     this._hierarchy    = hierarchy;
     this._modelMapping = new Dictionary <string, IClassifier>();
 }
        public Model.Hierarchical.IHierarchicalClassifier CreateClassifier()
        {
            ClassHierarchy         hierarchy      = ((Data.HierarchicalAttribute) this._trainingSets[0].Metadata.Target).Hierarchy;
            LocalPerNodeClassifier localClassifer = new LocalPerNodeClassifier(hierarchy, _ensembleStrategy);

            Node         current = hierarchy.Root;
            Queue <Node> queue   = new Queue <Node>();

            foreach (Node node in hierarchy.GetNodes(current.Children))
            {
                queue.Enqueue(node);
            }

            int counter = 1;

            while (queue.Count != 0)
            {
                current = queue.Dequeue();
                if (localClassifer.Contains(current.Name))
                {
                    continue;
                }


                List <ClassifierInfo> ensemble = CreateEnsemble(current);

                if (_ensembleStrategy is EnsembleStrategy.EnsembleStackClassificationStrategy)
                {
                    List <Dataset> localDatasets = new List <Dataset>();
                    foreach (Dataset trainingSet in this._trainingSets)
                    {
                        localDatasets.Add(GetLocalFlatDataset(current, trainingSet));
                    }

                    IClassifier    metaClassifier = EnsembleStrategy.EnsembleStackClassificationStrategy.CreateMetaClassifier(this._algorithm, localDatasets, ensemble);
                    ClassifierInfo metaInfo       = new ClassifierInfo()
                    {
                        Desc = "metaClassifier", Classifier = metaClassifier, Quality = -1
                    };
                    ensemble.Add(metaInfo);
                }

                if (_serialize)
                {
                    IO.Serializer.SerializeEnsmeble(ensemble, current.Name);
                    localClassifer.PutEnsemble(current.Name, null);
                }
                else
                {
                    localClassifer.PutEnsemble(current.Name, ensemble);
                }


                if (_fireEvents)
                {
                    this.onPostNodeProcessing(current, new NodeCounterEventArgs()
                    {
                        Counter = counter
                    });
                }

                counter++;

                if (current.Children != null)
                {
                    foreach (string child in current.Children)
                    {
                        if (!queue.Contains(hierarchy[child]))
                        {
                            queue.Enqueue(hierarchy[child]);
                        }
                    }
                }
            }

            if (_serialize)
            {
                foreach (Node node in hierarchy.GetDescendants(hierarchy.Root))
                {
                    localClassifer.PutEnsemble(node.Name, IO.Serializer.DeserializeEnsemble(node.Name));
                }
            }


            return(localClassifer);
        }
Example #16
0
        public static void ChapterTwo()
        {
            #region [ Create types ]
            CreateTypes createTypes = new CreateTypes();
            //createTypes.StructAndClasses();
            //createTypes.Aliens();
            //createTypes.MyStackGeneric();
            //createTypes.ThisConstructor();
            //createTypes.DestoryAlien();
            //createTypes.SummaryOfCh1to2_1();
            #endregion

            #region [ Consume types ]
            ConsumeTypes consumeTypes = new ConsumeTypes();
            //consumeTypes.BoxingAndUnboxing();
            //consumeTypes.ImplicitExplicitOperator();
            //consumeTypes.UsingDynamic();
            #endregion

            #region [ Class hierarchies ]
            ClassHierarchy ch = new ClassHierarchy();
            //ch.DepositInMyBank(20);
            //ch.ComparePricesInMyBank();
            #endregion

            #region [ Reflection ]

            #region [ Attributes, Methods Invoke, Load Assemblies]
            RuntimeReflection reflection = new RuntimeReflection();
            //reflection.TestConditional();
            //reflection.CheckAttribute();
            //reflection.CheckCustomAttribute();
            //reflection.IdentityMembersInClass();
            //reflection.CallMethodUsingReflection();
            //reflection.ScanAssembly();
            #endregion

            #region [ Code DOM , Expression Trees and Reflection ]

            #region [ CodeDOM ]
            CodeDOMExample cde = new CodeDOMExample();
            //cde.GenerateCodDOM();

            #endregion

            #region [ Expression Trees ]
            ExpressionTrees et = new ExpressionTrees();
            //et.ExpressionTreeMultiply();
            //et.ExpressionTreeModifyToAdd();
            //et.IsAdultFemale();
            #endregion

            #region [ More Reflection ]
            Assemblies assemblies = new Assemblies();
            //assemblies.DisplayAssemblyInfo();
            //assemblies.GetPropertyInfo();
            //assemblies.GetMethodInfo();
            #endregion

            #endregion

            #endregion

            #region [ Manipulate strings ]
            ManipulateStrings manipulateStrings = new ManipulateStrings();
            //manipulateStrings.StringInterning();
            //manipulateStrings.StringWriter();
            //manipulateStrings.StringReader();
            //manipulateStrings.SearchStrings();
            //manipulateStrings.StringComparisonAndCulture();
            //manipulateStrings.FormatString();
            //manipulateStrings.FormattableString();
            //manipulateStrings.MusicTrackFormatter();
            #endregion
        }
Example #17
0
    /// <summary>
    /// Example use of the CodePrinter class: prints the code of all the methods
    /// from an application rooted in a specific assembly file.
    /// </summary>
    /// <param name="args">Root assembly of the analyzed program.</param>
    public static void TestMain(string[] args) {
      AssemblyNode an = AssemblyNode.GetAssembly(args[0]);
      if(an == null) {
        Console.WriteLine("assembly \"{0}\" not found", args[0]);
        Environment.Exit(1);
      }

      ClassHierarchy ch = new ClassHierarchy(args[0]); //DataStructUtil.singleton(an));
      foreach(Method method in ch.AllMethods()) {
        CodePrinter.PrintMethod(Console.Out, method);
      }
    }
        public Collection <FunctionConvertedInformation> convert(COOPFunction coopObject, ClassHierarchy hierarchy)
        {
            AccessLevel accessLevel = coopObject.AccessLevel;
            bool        isStatic    = coopObject.IsStatic;
            string      signature   = generateSignature(coopObject);
            string      body        = coopObject.bodyInC? coopObject.Body : fixBody(coopObject.Body, generateTypeNames(coopObject), coopObject.IsStatic);

            FunctionConvertedInformation functionConvertedInformation = new FunctionConvertedInformation
                                                                            (accessLevel, isStatic, signature, body, coopObject.ReturnType, coopObject.InputTypes);

            functionConvertedInformation.OriginalName = coopObject.Name;

            return(new Collection <FunctionConvertedInformation> {
                functionConvertedInformation
            });
        }
Example #19
0
        public Collection <FileConvertedInformation> convert(COOPClass coopObject, ClassHierarchy hierarchy)
        {
            var       output = new Collection <FileConvertedInformation>();
            COOPClass parent = hierarchy.getParent(coopObject);
            bool      createProtected, createPrivate;
            string    publicStructure = generatePublicStructure(coopObject, parent, out createProtected, out createPrivate);

            string cFile           = "",
                   protectedHeader = $"#ifndef SRC_PROTECTED_FILE_{coopObject.Name}\n#define SRC_PROTECTED_FILE_{coopObject.Name}\n",
                   publicHeader    = $"#ifndef SRC_PUBLIC_FILE_{coopObject.Name}\n#define SRC_PUBLIC_FILE_{coopObject.Name}\n";

            foreach (COOPClass coopObjectImport in coopObject.imports)
            {
                cFile += $"#include \"{coopObjectImport.Name}.h\"\n";
            }

            if (coopObject.Parent != null)
            {
                cFile += $"#include \"{coopObject.Parent.Name}_protected.h\"\n";
            }

            cFile += $"#include \"{coopObject.Name}_protected.h\"\n";


            if (createPrivate)
            {
                cFile += generatePrivateStructure(coopObject);
            }


            protectedHeader += $"#include \"{coopObject.Name}.h\"\n";
            if (createProtected)
            {
                protectedHeader += generateProtectedStructure(coopObject);
            }

            publicHeader += publicStructure;


            COOPFunctionConverter functionConverter = new COOPFunctionConverter(hierarchy, coopObject);
            List <FunctionConvertedInformation> functionConvertedInformations = new List <FunctionConvertedInformation>();

            foreach (var coopObjectFunction in coopObject.getFunctions())
            {
                var f = functionConverter.convert(coopObjectFunction);
                functionConvertedInformations.AddRange(f);
            }

            foreach (FunctionConvertedInformation functionConvertedInformation in
                     from f in functionConvertedInformations where f.accessLevel == AccessLevel.Private select f)
            {
                cFile += functionConvertedInformation.signature + ";\n";
            }

            foreach (FunctionConvertedInformation functionConvertedInformation in
                     from f in functionConvertedInformations where f.accessLevel == AccessLevel.Protected select f)
            {
                protectedHeader += functionConvertedInformation.signature + ";\n";
            }

            bool   hasMain = false;
            string sig     = "";

            foreach (FunctionConvertedInformation functionConvertedInformation in
                     from f in functionConvertedInformations where f.accessLevel == AccessLevel.Public select f)
            {
                publicHeader += functionConvertedInformation.signature + ";\n";
                //Console.WriteLine(functionConvertedInformation.signature);
                if (functionConvertedInformation.OriginalName == "main")
                {
                    Console.WriteLine("Main Method Found: " + functionConvertedInformation.signature);
                    hasMain = true;
                    sig     = functionConvertedInformation.signature;
                }
            }

            foreach (FunctionConvertedInformation functionConvertedInformation in functionConvertedInformations)
            {
                cFile += functionConvertedInformation.signature + "{\n";
                cFile += functionConvertedInformation.body;
                cFile += "}\n";
            }

            publicHeader    += "#endif";
            protectedHeader += "#endif";

            if (humanReadable)
            {
                cFile           = toHumanReadable(cFile);
                publicHeader    = toHumanReadable(publicHeader);
                protectedHeader = toHumanReadable(protectedHeader);
            }

            output.Add(new FileConvertedInformation(coopObject.Name + ".c", cFile));
            output.Add(new FileConvertedInformation(coopObject.Name + "_protected.h", protectedHeader));
            output.Add(new FileConvertedInformation(coopObject.Name + ".h", publicHeader));

            if (hasMain)
            {
                output[2].hasMainMethod = true;
                output[2].mainMethod    = sig;
                Console.WriteLine("Main Method Confirmed: " + sig);
            }

            return(output);
        }
Example #20
0
 public LocalPerNodeClassifier(ClassHierarchy hierarchy, EnsembleStrategy.IEnsembleClassificationStrategy ensembleStrategy)
     : base(hierarchy, ensembleStrategy)
 {
 }
Example #21
0
 public EnsemblePerNodeTopDownClassifier(ClassHierarchy hierarchy)
     : base(hierarchy)
 {
 }
Example #22
0
        public Collection <FunctionCallConvertedInformation> convert(string functionCall, ClassHierarchy hierarchy)
        {
            Parser    parser    = new Parser(functionCall, Parser.ReadOptions.STRING);
            ParseTree parseTree = new ParseTree(parser.ParseObject);

            if (!parseTree.successfulParse)
            {
                return(null);
            }

            string output = fixCall(parseTree.Head);

            return(new Collection <FunctionCallConvertedInformation> {
                new FunctionCallConvertedInformation(output)
            });
        }
    static void ConstructClassHierarchyForSources(string[] sources, ClassHierarchyResultDelegate resultDelegate) {
      // Each source is assumed to refer to all the sources before it

      CompileSourcesAndRun(sources, ".dll", compilerResult => {
        WholeProgram wholeProgram = new WholeProgram(new IAssembly[] { compilerResult.MainAssembly }, compilerResult.Host);

        ClassHierarchy classHierarchy = new ClassHierarchy(wholeProgram.AllDefinedTypes(), compilerResult.Host);

        resultDelegate(compilerResult, classHierarchy);
      });
    }
Example #24
0
 public LocalClassifier(ClassHierarchy hierarchy, EnsembleStrategy.IEnsembleClassificationStrategy ensembleStrategy)
 {
     this._hierarchy        = hierarchy;
     this._modelMapping     = new Dictionary <string, List <ClassifierInfo> >();
     this._ensembleStrategy = ensembleStrategy;
 }
Example #25
0
        public static EnsemblePerNodeTopDownClassifier CreateEnsembleDSPerNodeTopDownClassifier(List <Data.Dataset> trainingSets, IClassificationAlgorithm algorithm)
        {
            ClassHierarchy hierarchy = ((Data.HierarchicalAttribute)trainingSets[0].Metadata.Target).Hierarchy;
            EnsemblePerNodeTopDownClassifier topDownClassifier = new EnsemblePerNodeTopDownClassifier(hierarchy);


            Data.Attribute[] metaAttributes = new Data.Attribute[2];

            string[] values = new string[trainingSets.Count];

            for (int i = 0; i < metaAttributes.Length; i++)
            {
                values[i] = trainingSets[i].Metadata.DatasetName;
            }

            metaAttributes[0] = new Data.Attribute("Dataset", 0, values);
            metaAttributes[1] = new Data.Attribute("Prediction", 1, new string[] { "yes", "no" });
            Data.Attribute target = new Data.Attribute("class", metaAttributes.Length, new string[] { "yes", "no" });

            Metadata meta = new Metadata("metaModel", metaAttributes, target);

            Node         current = hierarchy.Root;
            Queue <Node> queue   = new Queue <Node>();

            foreach (Node node in hierarchy.GetNodes(current.Children))
            {
                queue.Enqueue(node);
            }

            while (queue.Count != 0)
            {
                current = queue.Dequeue();
                Node[]        siblings            = hierarchy.GetSiblings(current);
                List <string> negativeClassValues = new List <string>();
                foreach (Node sibling in siblings)
                {
                    negativeClassValues.Add(sibling.Name);
                }


                Dataset dsLocal = new Dataset(meta.Clone());

                int i = 0;
                foreach (Dataset trainingSet in trainingSets)
                {
                    Dataset local = trainingSet.GetBinaryFlatLabelSubDataset(current.Name, negativeClassValues.ToArray());
                    algorithm.TrainingSet = local;
                    IClassifier classifier = algorithm.CreateClassifier();
                    topDownClassifier.AddClassifier(current.Name, local.Metadata.DatasetName, classifier);
                    //Example metaExample=new Example(dsLocal,i,
                }

                //algorithm.TrainingSet = local;
                //IClassifier classifier = algorithm.CreateClassifier();
                //topDownClassifier.PutClassifier(current.Name, trainingSet.Metadata.DatasetName, classifier);
                //if (current.Children != null)
                //    foreach (string child in current.Children)
                //        queue.Enqueue(hierarchy[child]);
            }


            return(topDownClassifier);
        }