Esempio n. 1
0
 public ForwardAnalysis(ICFG cfg,
                        Func <APC, AbstractState, AbstractState> transfer,
                        Joiner <APC, AbstractState> joiner,
                        Func <AbstractState, AbstractState> immutableVersion,
                        Func <AbstractState, AbstractState> mutableVersion,
                        EdgeConverter <APC, AbstractState, EdgeData> edgeConverter,
                        Func <APC, APC, EdgeData> edgeDataGetter,
                        Func <APC, AbstractState, bool> isBottom,
                        Action <Pair <AbstractState, TextWriter> > dumper) : base(cfg)
 {
     this.transfer          = transfer;
     this.joiner            = joiner;
     this.immutable_version = immutableVersion;
     this.mutable_version   = mutableVersion;
     this.edge_converter    = edgeConverter;
     this.edge_data_getter  = edgeDataGetter;
     this.is_bottom         = isBottom;
     this.dumper            = dumper;
 }
Esempio n. 2
0
        public ForwardAnalysisSolver(
            ICFG cfg,
            Transformer <APC, AState, AState> transfer,
            EdgeConverter <APC, AState, EdgeData> edgeConverter,
            Joiner <APC, AState> joiner,
            Converter <AState, AState> immutableVersion,
            Converter <AState, AState> mutableVersion,
            Action <Pair <AState, TextWriter> > dumper,
            Func <APC, AState, bool> isBottom,
            Func <APC, AState, bool> isTop,
            ILPrinter <APC> printer,
            Printer <EdgeData> edgeDataPrinter,
            Func <APC, APC, EdgeData> edgeDataGetter
            )
            : base(cfg)
        {
            Contract.Requires(transfer != null);
            Contract.Requires(immutableVersion != null);
            Contract.Requires(isBottom != null);
            Contract.Requires(isTop != null);
            Contract.Requires(joiner != null);
            Contract.Requires(mutableVersion != null);
            Contract.Requires(edgeConverter != null);
            Contract.Requires(edgeDataGetter != null);

            this.transfer         = transfer;
            this.edgeConverter    = edgeConverter;
            this.joiner           = joiner;
            this.immutableVersion = immutableVersion;
            this.mutableVersion   = mutableVersion;
            this.dumper           = dumper;
            this.isBottom         = isBottom;
            this.isTop            = isTop;
            this.printer          = printer;
            this.edgeDataPrinter  = edgeDataPrinter;
            this.edgeDataGetter   = edgeDataGetter;
        }