예제 #1
0
        private static void CallAsyncResult(Task task, IMessageSource source, UInt64 session)
        {
            switch (task.Status)
            {
            case TaskStatus.Canceled:
            {
                source.Respond(new ExceptionMessage(session, new TaskCanceledException()));
            }
            break;

            case TaskStatus.Faulted:
            {
                source.Respond(new ExceptionMessage(session, task.Exception.InnerException));
            }
            break;

            case TaskStatus.RanToCompletion:
            {
                Type taskType = task.GetType();
                if (taskType.IsGenericType && TypeFormatter.CanSerialize(taskType.GetGenericArguments()[0]))
                {
                    object result = taskType.GetProperty("Result", BindingFlags.Public | BindingFlags.Instance).GetValue(task, null);
                    source.Respond(new ResultMessage(session, result));
                }
                else
                {
                    source.Respond(new ResultMessage(session, null));
                }
            }
            break;
            }
        }
        /// <summary>
        /// Executes appropriate handler based on actual type of the <paramref name="view"/> with returning a result.
        /// </summary>
        /// <typeparam name="T">The type of the result.</typeparam>
        /// <param name="view">The view that is represented by the <see cref="UIViewController"/> or <see cref="UINavigationController"/>.</param>
        /// <param name="viewControllerHandler">The handler to execute when the <paramref name="view"/> is <see cref="UIViewController"/>.</param>
        /// <param name="navigationControllerHandler">
        /// The handler to execute when the <paramref name="view"/> is <see cref="UINavigationController"/>. Can be <see langword="null"/>.
        /// <para>If the <paramref name="navigationControllerHandler"/> is <see langword="null"/> then the <paramref name="viewControllerHandler"/> will be used as a handler.</para>
        /// </param>
        /// <returns>A result returned by appropriate handler.</returns>
        /// <exception cref="ArgumentNullException"><paramref name="view" /> or <paramref name="viewControllerHandler" /> is <see langword="null"/>.</exception>
        /// <exception cref="ArgumentException">
        /// The <paramref name="view" /> is derived from a class other than the <see cref="UIViewController"/>.
        /// </exception>
        public static T As <T>(
            this IView <ILifecycleViewModel> view,
            Func <UIViewController, T> viewControllerHandler,
            Func <UINavigationController, T>?navigationControllerHandler = null)
        {
            if (view == null)
            {
                throw new ArgumentNullException(nameof(view));
            }
            if (viewControllerHandler == null)
            {
                throw new ArgumentNullException(nameof(viewControllerHandler));
            }

            T result;

            if (view is UINavigationController navigationController)
            {
                result = (navigationControllerHandler ?? viewControllerHandler)(navigationController);
            }
            else if (view is UIViewController viewController)
            {
                result = viewControllerHandler(viewController);
            }
            else
            {
                throw new ArgumentException($"Only views derived from the '{TypeFormatter.FormatName<UIViewController>()}' type are supported.", nameof(view));
            }

            return(result);
        }
예제 #3
0
 private static void Call(IMessageSource source, IMessage message, Func <object[], object> target, bool extend)
 {
     object[] args; message.TryGetInvocationArgs(out args);
     if (extend)
     {
         args = args.Insert(0, source);
     }
     try
     {
         object result = target(args);
         if (result != null && !TypeFormatter.CanSerialize(result.GetType()))
         {
             result = null;
         }
         source.Respond(new ResultMessage(message, result));
     }
     catch (Exception er)
     {
         try
         {
             source.Respond(new ExceptionMessage(message, er));
         }
         catch (Exception fatal)
         {
             Application.Error(fatal);
         }
     }
 }
예제 #4
0
        internal static TView Get <TView, TViewModel>(TViewModel viewModel)
            where TView : class, IView <TViewModel>
            where TViewModel : class, ILifecycleViewModel
        {
            TView?view = null;

            for (var i = ViewsWeakReferences.Count - 1; i > -1; i--)
            {
                var viewWeakReference = ViewsWeakReferences[i];

                if (viewWeakReference.TryGetTarget(out var cachedView))
                {
                    if (ReferenceEquals(cachedView.ViewModel, viewModel))
                    {
                        view = (TView)cachedView;

                        break;
                    }
                }
                else
                {
                    ViewsWeakReferences.Remove(viewWeakReference);
                }
            }

            if (view == null)
            {
                throw new InvalidOperationException(
                          $"The view instance is missing for the provided '{TypeFormatter.FormatName(viewModel.GetType())}' view model one.");
            }

            return(view);
        }
예제 #5
0
            static ObjectFormatter()
            {
                new StringFormatter().Register();
                new Int64Formatter().Register();
                new Int32Formatter().Register();
                new Int16Formatter().Register();
                new ByteFormatter().Register();
                new BooleanFormatter().Register();
                new CharFormatter().Register();
                new DateTimeFormatter().Register();
                new PairFormatter().Register();
                new TripletFormatter().Register();
                new ArrayListFormatter().Register();
                new HashtableFormatter().Register();
                new ObjectArrayFormatter().Register();
                new UnitFormatter().Register();
                new FontUnitFormatter().Register();

                new ColorFormatter().Register();

                enumFormatter = new EnumFormatter();
                enumFormatter.Register();

                typeFormatter = new TypeFormatter();
                typeFormatter.Register();

                singleRankArrayFormatter = new SingleRankArrayFormatter();
                singleRankArrayFormatter.Register();

                typeConverterFormatter = new TypeConverterFormatter();
                typeConverterFormatter.Register();

                binaryObjectFormatter = new BinaryObjectFormatter();
                binaryObjectFormatter.Register();
            }
        public TypeCollectionTester(ExtractedTypeCollection typeCollection)
        {
            _typeCollection = typeCollection;

            // TODO any way to define this?  Or maybe an option when getting type name
            _typeFormatter = new TypeScriptTypeFormatter(_typeCollection, new FakeTypePrefixer());
        }
 public MvcActionTextTemplate(MvcAction action, ScriptExtensionsFactory extensionsFactory, FetchFunctionDescriptor fetchFunc, TypeFormatter formatter)
 {
     _action         = action;
     _formatter      = formatter;
     _fetchFunc      = fetchFunc;
     _bodyExtensions = extensionsFactory.CreateForActionFunctionBody(action);
 }
        /// <summary>
        /// Executes appropriate handler based on actual type of the <paramref name="view"/>.
        /// </summary>
        /// <param name="view">The view that is represented by an activity or fragment.</param>
        /// <param name="activityHandler">The handler to execute if <paramref name="view"/> is <see cref="Android.Support.V4.App.FragmentActivity"/>.</param>
        /// <param name="fragmentHandler">The handler to execute if <paramref name="view"/> is <see cref="Android.Support.V4.App.Fragment"/>.</param>
        /// <exception cref="ArgumentNullException"><paramref name="view" /> or <paramref name="activityHandler" /> or <paramref name="fragmentHandler" /> is <see langword="null"/>.</exception>
        /// <exception cref="ArgumentException">
        /// The <paramref name="view" /> is derived from a class other than the <see cref="Android.Support.V4.App.FragmentActivity"/> or <see cref="Android.Support.V4.App.Fragment"/>.
        /// </exception>
        public static void As(
            this IView <ILifecycleViewModel> view,
            Action <FragmentActivity> activityHandler,
            Action <Fragment> fragmentHandler)
        {
            if (view == null)
            {
                throw new ArgumentNullException(nameof(view));
            }
            if (activityHandler == null)
            {
                throw new ArgumentNullException(nameof(activityHandler));
            }
            if (fragmentHandler == null)
            {
                throw new ArgumentNullException(nameof(fragmentHandler));
            }

            if (view is FragmentActivity activity)
            {
                activityHandler(activity);
            }
            else if (view is Fragment fragment)
            {
                fragmentHandler(fragment);
            }
            else
            {
                throw new ArgumentException(
                          $"Only views derived from the '{TypeFormatter.FormatName<FragmentActivity>()}' or " +
                          $"'{TypeFormatter.FormatName<Fragment>()}' are supported.", nameof(view));
            }
        }
예제 #9
0
        /// <summary>
        /// Performs forward navigation from the <paramref name="sourceView"/> to the target one with the provided lifecycle-aware view model <paramref name="parameters"/>
        /// and handling a lifecycle-aware view model result when it finished.
        /// </summary>
        /// <typeparam name="TTargetView">The type of the target view.</typeparam>
        /// <typeparam name="TParameters">The type of the target view model parameters.</typeparam>
        /// <typeparam name="TResult">The type of the target view model result.</typeparam>
        /// <param name="sourceView">The source navigation view from which navigation is performed from.</param>
        /// <param name="parameters">The target view model parameters. Can be <see langword="null"/>.</param>
        /// <param name="navigationStrategy">
        /// The strategy used for performing navigation. Can be <see langword="null"/>.
        /// <para>The default is <see cref="ForwardNavigationStrategy.StartActivityForResult(Bundle?)"/>.</para>
        /// </param>
        /// <exception cref="ArgumentNullException"><paramref name="sourceView"/> is <see langword="null"/>.</exception>
        /// <exception cref="ArgumentException">
        /// The <paramref name="sourceView" /> is derived from a class other than the <see cref="FragmentActivity"/> or <see cref="Fragment"/>.
        /// </exception>
        /// <exception cref="InvalidOperationException">
        /// <see cref="NavigationViewExtensions.GetActivity(INavigationView{ILifecycleViewModel})"/> returned <see langword="null"/> value for the provided <paramref name="sourceView"/>.
        /// </exception>
        public void NavigateForResult <TTargetView, TParameters, TResult>(
            INavigationView <ILifecycleViewModelWithResultHandler> sourceView,
            TParameters?parameters,
            ForwardNavigationDelegate?navigationStrategy = null)
            where TTargetView : FragmentActivity, INavigationView <ILifecycleViewModelWithParameters <TParameters> >, INavigationView <ILifecycleViewModelWithResult <TResult> >
            where TParameters : Parameters
            where TResult : Result
        {
            if (sourceView == null)
            {
                throw new ArgumentNullException(nameof(sourceView));
            }

            var context = sourceView.GetActivity();

            if (context == null)
            {
                throw new InvalidOperationException(
                          $"'{TypeFormatter.FormatName(sourceView.GetType())}.{nameof(NavigationViewExtensions.GetActivity)}' returned 'null' value.");
            }

            var targetViewIntent = new Intent(context, typeof(TTargetView));

            targetViewIntent.PutParameters(parameters);
            var requestCode = sourceView.RequestCode.GetFor <DefaultResultMapper <TResult> >();

            (navigationStrategy ?? NavigationStrategy.Forward.StartActivityForResult()).Invoke(sourceView, targetViewIntent, requestCode);
        }
        public object ConvertBack(object value, Type targetType)
        {
            if (targetType == null)
            {
                throw new ArgumentNullException(nameof(targetType));
            }

            var valueConverter = ValueConverterProvider.Get <TValueConverter>();
            var convertedValue = BindingValue.UnsetValue;

            if (TryGetParameter(out var parameter))
            {
                try
                {
                    convertedValue = valueConverter.ConvertBack(value, targetType, parameter, _converterCulture);
                }
                catch (Exception ex)
                {
                    Log($"An \"{LogFormatter.FormatException(ex)}\" exception occurred while converting \"{value ?? "null"}\" value from the target item to the source one " +
                        $"using \"{TypeFormatter.FormatName<TValueConverter>()}\" value converter.");
                }
            }

            return(convertedValue);
        }
예제 #11
0
        /// <summary>
        /// Executes appropriate handler based on actual type of the <paramref name="view"/>.
        /// </summary>
        /// <param name="view">The view that is represented by a navigation or view controller.</param>
        /// <param name="navigationControllerHandler">The handler to execute if <paramref name="view"/> is <see cref="UINavigationController"/>.</param>
        /// <param name="viewControllerHandler">The handler to execute if <paramref name="view"/> is <see cref="UIViewController"/>.</param>
        /// <exception cref="ArgumentNullException"><paramref name="view" /> or <paramref name="navigationControllerHandler" /> or <paramref name="viewControllerHandler" /> is <see langword="null"/>.</exception>
        /// <exception cref="ArgumentException">
        /// The <paramref name="view" /> is derived from a class other than the <see cref="UINavigationController"/> or <see cref="UIViewController"/>.
        /// </exception>
        public static void As(
            this IView <ILifecycleViewModel> view,
            Action <UINavigationController> navigationControllerHandler,
            Action <UIViewController> viewControllerHandler)
        {
            if (view == null)
            {
                throw new ArgumentNullException(nameof(view));
            }
            if (navigationControllerHandler == null)
            {
                throw new ArgumentNullException(nameof(navigationControllerHandler));
            }
            if (viewControllerHandler == null)
            {
                throw new ArgumentNullException(nameof(viewControllerHandler));
            }

            if (view is UINavigationController navigationController)
            {
                navigationControllerHandler(navigationController);
            }
            else if (view is UIViewController viewController)
            {
                viewControllerHandler(viewController);
            }
            else
            {
                throw new ArgumentException(
                          $"Only views derived from the '{TypeFormatter.FormatName<UINavigationController>()}' or " +
                          $"'{TypeFormatter.FormatName<UIViewController>()}' are supported.", nameof(view));
            }
        }
예제 #12
0
        private void ProcessStats(object state)
        {
            var currentTrace = Interlocked.Exchange(ref grainTrace, new ConcurrentDictionary <string, SiloGrainTraceEntry>());

            if (currentTrace.Count > 0)
            {
                if (siloAddress == null)
                {
                    siloAddress = localSiloDetails.SiloAddress.ToParsableString();
                }

                var items = currentTrace.Values.ToArray();

                foreach (var item in items)
                {
                    item.Grain = TypeFormatter.Parse(item.Grain);
                }

                try
                {
                    dashboardGrain = dashboardGrain ?? grainFactory.GetGrain <IDashboardGrain>(0);

                    dashboardGrain.SubmitTracing(siloAddress, items.AsImmutable()).Ignore();
                }
                catch (Exception ex)
                {
                    logger.LogWarning(100001, ex, "Exception thrown sending tracing to dashboard grain");
                }
            }
        }
예제 #13
0
        public void TestSimpleType()
        {
            var example = "System.String";

            var name = TypeFormatter.Parse(example);

            Assert.Equal("System.String", name);
        }
예제 #14
0
 public void SetUp()
 {
     sw = new StringWriter();
     var tf = new TextFormatter(sw) { Indentation = 0 };
     tyfo = new TypeFormatter(tf, false);
     tf = new TextFormatter(sw) { Indentation = 0 };
     tyreffo = new TypeReferenceFormatter(tf, false);
 }
예제 #15
0
        public void TestGenericGrainWithFsType()
        {
            var example = ".Program.Progress";

            var name = TypeFormatter.Parse(example);

            Assert.Equal(".Program.Progress", name);
        }
예제 #16
0
        public void ShouldFormatNullableForStructureTypes(Type type, string expectedRender)
        {
            // Act
            var render = TypeFormatter.Format(type);

            // Assert
            Assert.Equal(expectedRender, render);
        }
예제 #17
0
        public void TestGenericGrainWithMultipleTs()
        {
            var example = typeof(ITestGenericGrain <string, int>).FullName;

            var name = TypeFormatter.Parse(example);

            Assert.Equal("TestGrains.ITestGenericGrain<String, Int32>", name);
        }
예제 #18
0
        public void ShouldFormatComplexGenericType(Type type, string expectedRender)
        {
            // Act
            var render = TypeFormatter.Format(type);

            // Assert
            Assert.Equal(expectedRender, render);
        }
예제 #19
0
        public void ShouldFormatKeywordForSystemTypes(Type type, string expectedRender)
        {
            // Act
            var render = TypeFormatter.Format(type);

            // Assert
            Assert.Equal(expectedRender, render);
        }
        public void TestCustomType()
        {
            var example = "ExecuteAsync(CreateApp)";

            var name = TypeFormatter.Parse(example);

            Assert.Equal("ExecuteAsync(CreateApp)", name);
        }
예제 #21
0
        public void TestFriendlyNameForStrings()
        {
            var example = "TestGrains.GenericGrain`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]";

            var name = TypeFormatter.Parse(example);

            Assert.Equal("TestGrains.GenericGrain<String>", name);
        }
        public MvcControllerTextTemplate(ControllerContext context, ScriptExtensionsFactory extensionsFactory)
        {
            _context          = context;
            _scriptExtensions = extensionsFactory;

            _imports              = ImportManager.FromControllerContext(context);
            _formatter            = new TypeScriptTypeFormatter(context.TypeCollection, new ModuleTypePrefixResolver(_imports));
            _postScriptExtensions = _scriptExtensions.CreatePostControllerScript(context);
        }
예제 #23
0
        /// <summary>
        /// Gets the script for the extracted types
        /// </summary>
        /// <param name="context">The context for writing the script</param>
        /// <returns>The script text</returns>
        public string GetText(TypeWriteContext context)
        {
            _context = context;

            _imports   = ImportManager.FromTypes(_context.IncludedTypes, _context.OutputPath);
            _formatter = new TypeScriptTypeFormatter(context.TypeCollection, new ModuleTypePrefixResolver(_imports));              // Add no prefix to the types

            return(TransformText());
        }
예제 #24
0
 public override string ToString()
 {
     StringWriter sw = new StringWriter();
     TextFormatter fmt = new TextFormatter(sw);
     CodeFormatter cf = new CodeFormatter(fmt);
     TypeFormatter tf = new TypeFormatter(fmt, false);
     Signature.Emit(Name, ProcedureSignature.EmitFlags.ArgumentKind, fmt, cf, tf);
     return sw.ToString();
 }
예제 #25
0
        public override string ToString()
        {
            StringWriter  sw  = new StringWriter();
            TextFormatter fmt = new TextFormatter(sw);
            CodeFormatter cf  = new CodeFormatter(fmt);
            TypeFormatter tf  = new TypeFormatter(fmt);

            Signature.Emit(Name, FunctionType.EmitFlags.ArgumentKind, fmt, cf, tf);
            return(sw.ToString());
        }
예제 #26
0
        public void TestGenericWithMultipleTs()
        {
            var example = typeof(IGenericGrain <Tuple <string, int> >).FullName;

            Console.WriteLine(example);

            var name = TypeFormatter.Parse(example);

            Assert.Equal("TestGrains.IGenericGrain<Tuple<String, Int32>>", name);
        }
예제 #27
0
        public string ToString(string name, EmitFlags flags = EmitFlags.ArgumentKind)
        {
            StringWriter  sw = new StringWriter();
            TextFormatter f  = new TextFormatter(sw);
            CodeFormatter cf = new CodeFormatter(f);
            TypeFormatter tf = new TypeFormatter(f);

            Emit(name, flags, f, cf, tf);
            return(sw.ToString());
        }
예제 #28
0
        public override string ToString()
        {
            StringWriter  w  = new StringWriter();
            TextFormatter f  = new TextFormatter(w);
            CodeFormatter cf = new CodeFormatter(f);
            TypeFormatter tf = new TypeFormatter(f, false);

            Emit("()", EmitFlags.ArgumentKind | EmitFlags.LowLevelInfo, f, cf, tf);
            return(w.ToString());
        }
예제 #29
0
        public void ShouldFormatNameForStandardTypes()
        {
            // Arrange
            var type = typeof(IList);

            // Act
            var render = TypeFormatter.Format(type);

            // Assert
            Assert.Equal("System.Collections.IList", render);
        }
예제 #30
0
        void ICommand.Execute(object parameter)
        {
            if (parameter != null)
            {
                throw new ArgumentException(
                          $"\"{_name.SelfOrDefaultIfNullOrWhiteSpace(TypeFormatter.FormatName(GetType()))}\" command expects \"null\" value.",
                          nameof(parameter));
            }

            Execute();
        }
        public void TestName()
        {
            var expected   = typeof(Subject).GetTypeInfo();
            var @namespace = NamespaceFormatter.Default.Get(expected);
            var aliases    = new Names(new TypedTable <string>(DefaultNames.Default));
            var formatter  = new TypeFormatter(aliases);
            var partitions = new AssemblyTypePartitions(PartitionedTypeSpecification.Default, formatter);
            var type       = new PartitionedTypeCandidates(TypeLoader.Default, partitions).Get(new Identity(formatter.Get(expected), @namespace)).Only();

            Assert.Equal(expected, type);
        }
예제 #32
0
        public void ShouldFormatNestedGenericType()
        {
            // Arrange
            var type           = typeof(NestedGenericType <int>);
            var expectedRender = $"{typeof(TypeFormatterTests).FullName}.NestedGenericType<int>";

            // Act
            var render = TypeFormatter.Format(type);

            // Assert
            Assert.Equal(expectedRender, render);
        }
예제 #33
0
        public void Emit(string fnName, EmitFlags f, Formatter fmt, CodeFormatter w, TypeFormatter t)
        {
            bool emitStorage = (f & EmitFlags.ArgumentKind) == EmitFlags.ArgumentKind;
            if (emitStorage)
            {
                if (ReturnValue != null)
                {
                    w.WriteFormalArgumentType(ReturnValue, emitStorage);
                    fmt.Write(" ");
                }
                else
                {
                    fmt.Write("void ");
                }
                fmt.Write("{0}(", fnName);
            }
            else
            {
                if (ReturnValue == null)
                    fmt.Write("void {0}", fnName);
                else
                {
                    t.Write(ReturnValue.DataType, fnName);           //$TODO: won't work with fn's that return pointers to functions or arrays.
                }
                fmt.Write("(");
            }
            var sep = "";
            if (Parameters != null)
            {
                for (int i = 0; i < Parameters.Length; ++i)
                {
                    fmt.Write(sep);
                    sep = ", ";
                    w.WriteFormalArgument(Parameters[i], emitStorage, t);
                }
            }
            fmt.Write(")");

            if ((f & EmitFlags.LowLevelInfo) == EmitFlags.LowLevelInfo)
            {
                fmt.WriteLine();
                fmt.Write("// stackDelta: {0}; fpuStackDelta: {1}; fpuMaxParam: {2}", StackDelta, FpuStackDelta, FpuStackArgumentMax);
                fmt.WriteLine();
            }
        }
예제 #34
0
 public override string ToString()
 {
     StringWriter w = new StringWriter();
     TextFormatter f = new TextFormatter(w);
     CodeFormatter cf = new CodeFormatter(f);
     TypeFormatter tf = new TypeFormatter(f, false);
     Emit("()", EmitFlags.ArgumentKind | EmitFlags.LowLevelInfo, f, cf, tf);
     return w.ToString();
 }
예제 #35
0
 public string ToString(string name)
 {
     StringWriter sw = new StringWriter();
     TextFormatter f = new TextFormatter(sw);
     CodeFormatter cf = new CodeFormatter(f);
     TypeFormatter tf = new TypeFormatter(f, false);
     Emit(name, EmitFlags.ArgumentKind, f, cf, tf);
     return sw.ToString();
 }
예제 #36
0
			static ObjectFormatter ()
			{			
				new StringFormatter ().Register ();
				new Int64Formatter ().Register ();
				new Int32Formatter ().Register ();
				new Int16Formatter ().Register ();
				new ByteFormatter ().Register ();
				new BooleanFormatter ().Register ();
				new CharFormatter ().Register ();
				new DateTimeFormatter ().Register ();
				new PairFormatter ().Register ();
				new TripletFormatter ().Register ();
				new ArrayListFormatter ().Register ();
				new HashtableFormatter ().Register ();
				new ObjectArrayFormatter ().Register ();
				new UnitFormatter ().Register ();
				new FontUnitFormatter ().Register ();
				new IndexedStringFormatter ().Register ();
				new ColorFormatter ().Register ();

				enumFormatter = new EnumFormatter ();
				enumFormatter.Register ();

				typeFormatter = new TypeFormatter ();
				typeFormatter.Register ();

				singleRankArrayFormatter = new SingleRankArrayFormatter ();
				singleRankArrayFormatter.Register ();

				typeConverterFormatter = new TypeConverterFormatter ();
				typeConverterFormatter.Register ();

				binaryObjectFormatter = new BinaryObjectFormatter ();
				binaryObjectFormatter.Register ();
			}
예제 #37
0
 public void SetUp()
 {
     sw = new StringWriter();
     tyfo = new TypeFormatter(new TextFormatter(sw), false);
     tyreffo = new TypeReferenceFormatter(new TextFormatter(sw), false);
 }
예제 #38
0
파일: CodeFormatter.cs 프로젝트: uxmal/reko
 public void WriteFormalArgument(Identifier arg, bool writeStorage, TypeFormatter t)
 {
     if (writeStorage)
     {
         WriteFormalArgumentType(arg, writeStorage);
         writer.Write(" ");
         writer.Write(arg.Name);
     }
     else
     {
         if (arg.Storage is OutArgumentStorage)
         {
             t.Write(new ReferenceTo(arg.DataType), arg.Name);
         }
         else
         {
             t.Write(arg.DataType, arg.Name);
         }
     }
 }
예제 #39
0
파일: Decompiler.cs 프로젝트: nemerle/reko
 public void WriteDecompiledTypes(Program program, TextWriter w)
 {
     WriteHeaderComment(Path.GetFileName(program.TypesFilename), program, w);
     w.WriteLine("/*"); program.TypeStore.Write(w); w.WriteLine("*/");
     var tf = new TextFormatter(w)
     {
         Indentation = 0,
     };
     TypeFormatter fmt = new TypeFormatter(tf, false);
     foreach (EquivalenceClass eq in program.TypeStore.UsedEquivalenceClasses)
     {
         if (eq.DataType != null)
         {
             w.Write("typedef ");
             fmt.Write(eq.DataType, eq.Name);
             w.WriteLine(";");
             w.WriteLine();
         }
     }
 }
예제 #40
0
 public void WriteFormalArgument(Identifier arg, bool writeStorage, TypeFormatter t)
 {
     if (writeStorage)
     {
         WriteFormalArgumentType(arg, writeStorage);
         writer.Write(" ");
         writer.Write(arg.Name);
     }
     else
     {
         t.Write(arg.DataType, arg.Name);
     }
 }
예제 #41
0
		public void VisitDeclaration(AbsynDeclaration decl)
		{
			writer.Indent();
			if (decl.Identifier.DataType != null)
			{
                TypeFormatter tf = new TypeFormatter(writer, true);
                tf.Write(decl.Identifier.DataType, decl.Identifier.Name);
			}
			else
			{
                writer.Write("?unknown?");
                writer.Write(" ");
                decl.Identifier.Accept(this);
            }
			if (decl.Expression != null)
			{
				writer.Write(" = ");
				decl.Expression.Accept(this);
			}
			writer.Terminate(";");
		}
예제 #42
0
		public void VisitDeclaration(Declaration decl)
		{
			writer.Indent();
            Debug.Assert(decl.Identifier.DataType != null, "The DataType property can't ever be null");

            TypeFormatter tf = new TypeFormatter(writer, true);
            tf.Write(decl.Identifier.DataType, decl.Identifier.Name);
			if (decl.Expression != null)
			{
				writer.Write(" = ");
				decl.Expression.Accept(this);
			}
			writer.Terminate();
		}
예제 #43
0
 private void SetTextView(DataType dt)
 {
     var tsf = new TextSpanFormatter() { Indentation = 0 };
     var fmt = new TypeFormatter(tsf, false);
     tsf.UseTabs = false;
     fmt.Write(dt, "");
     this.TextView.Model = tsf.GetModel();
 }