/// <inheritdoc /> public override void VisitNativeTypeValue(TypeValue value) { var nativeDecl = value.Declaration; foreach (var methodInfo in nativeDecl.ModeledMethods) { //TODO resolve invoking element //var analyzer = new NativeAnalyzer(methodInfo.Method, new StringLiteral(new PHP.Core.Parsers.Position(),"to be implemented")); var analyzer = new NativeAnalyzer(methodInfo.Value.Method, new StringLiteral(new PHP.Core.Parsers.Position(), nativeDecl.QualifiedName.Name + "::" + methodInfo.Value.Name)); _methods.Add(_snapshot.CreateFunction(methodInfo.Value.Name, analyzer)); } foreach (var methodValue in nativeDecl.SourceCodeMethods.Values) { _methods.Add(methodValue); } }
/// <summary> /// Visit method for NativeAnalyzer /// </summary> /// <param name="nativeAnalyzer">Native analyzer</param> internal void VisitNative(NativeAnalyzer nativeAnalyzer) { Result(new NativeAnalyzerPoint(nativeAnalyzer)); }
/// <summary> /// Create function value from given declaration /// </summary> /// <param name="name">Name of created analyzer</param> /// <param name="analyzer">Analyzer declaration</param> /// <returns>Created value</returns> public FunctionValue CreateFunction(Name name, NativeAnalyzer analyzer) { _statistics.Report(Statistic.CreatedFunctionValues); return(new NativeAnalyzerValue(name, analyzer)); }
internal NativeAnalyzerValue(Name name, NativeAnalyzer analyzer) : base(analyzer, name, new FileInfo("native_functions.virtual")) { Analyzer = analyzer; }
internal NativeAnalyzerPoint(NativeAnalyzer analyzer) { Analyzer = analyzer; }