public void write_modern_proc_type(modern_proc_type _modern_proc_type)
		{
			write_type_definition(_modern_proc_type);
			if (_modern_proc_type.aloneparam == null)
			{
				bw.Write((byte)0);
			}
			else
			{
				bw.Write((byte)1);
				_modern_proc_type.aloneparam.visit(this);
			}
			if (_modern_proc_type.el == null)
			{
				bw.Write((byte)0);
			}
			else
			{
				bw.Write((byte)1);
				_modern_proc_type.el.visit(this);
			}
			if (_modern_proc_type.res == null)
			{
				bw.Write((byte)0);
			}
			else
			{
				bw.Write((byte)1);
				_modern_proc_type.res.visit(this);
			}
		}
Esempio n. 2
0
 public override void visit(modern_proc_type _modern_proc_type)
 {
     if (_modern_proc_type.aloneparam != null)
     {
         _modern_proc_type.aloneparam.visit(this);
         if (_modern_proc_type.res != null)
             _modern_proc_type.res.visit(this);
     }
     else
     {
         foreach (enumerator en in _modern_proc_type.el.enumerators)
         {
             new named_type_reference(en.name.name, en.source_context).visit(this);
         }
         if (_modern_proc_type.res != null)
             _modern_proc_type.res.visit(this);
     }
 }
		public void visit(modern_proc_type _modern_proc_type)
		{
			bw.Write((Int16)200);
			write_modern_proc_type(_modern_proc_type);
		}
		public void read_modern_proc_type(modern_proc_type _modern_proc_type)
		{
			read_type_definition(_modern_proc_type);
			_modern_proc_type.aloneparam = _read_node() as type_definition;
			_modern_proc_type.el = _read_node() as enumerator_list;
			_modern_proc_type.res = _read_node() as type_definition;
		}
 public override void visit(modern_proc_type _modern_proc_type)
 {
     template_type_reference ttr = new template_type_reference();
     List<ident> names = new List<ident>();
     if (_modern_proc_type.res != null)
     {
         names.Add(new ident("System"));
         names.Add(new ident("Func"));
     }
     else
     {
         names.Add(new ident("System"));
         names.Add(new ident("Action"));
     }
     ttr.name = new named_type_reference(names);
     ttr.source_context = _modern_proc_type.source_context;
     ttr.params_list = new template_param_list();
     if (_modern_proc_type.aloneparam != null)
     {
         ttr.params_list.params_list.Add(_modern_proc_type.aloneparam);
         if (_modern_proc_type.res != null)
             ttr.params_list.params_list.Add(_modern_proc_type.res);
     }
     else
     {
         if (_modern_proc_type.el != null)
         foreach (enumerator en in _modern_proc_type.el.enumerators)
         {
             ttr.params_list.params_list.Add(en.name); // Здесь исправил SSM 15.1.16
         }
         if (_modern_proc_type.res != null)
             ttr.params_list.params_list.Add(_modern_proc_type.res);
     }
     visit(ttr);
 }
		public void visit(modern_proc_type _modern_proc_type)
		{
			read_modern_proc_type(_modern_proc_type);
		}
 public override void visit(modern_proc_type _modern_proc_type)
 {
     if (_modern_proc_type.aloneparam != null)
     {
         visit_node(_modern_proc_type.aloneparam);
         add_space_before = false;
         add_space_after = false;
         visit_node(_modern_proc_type.res);
     }
     else
     {
         
         if (_modern_proc_type.el != null && _modern_proc_type.el.enumerators != null)
         {
             sb.Append("(");
             for (int i = 0; i < _modern_proc_type.el.enumerators.Count; i++)
             {
                 visit_node(_modern_proc_type.el.enumerators[i]);
             }
         }
         else
             read_from_beg_pos = true;
         add_space_before = false;
         add_space_after = false;
         visit_node(_modern_proc_type.res);
     }
 }
 public void CompareInternal(modern_proc_type left, modern_proc_type right)
 {
     if (left == null && right != null || left != null && right == null)
         throw_not_equal(left, right);
     if (left != null && right != null)
     {
         CompareInternal(left.el, right.el);
     }
 }
Esempio n. 9
0
 public override void visit(modern_proc_type _modern_proc_type)
 {
     if (_modern_proc_type.aloneparam != null)
     {
         visit_node(_modern_proc_type.aloneparam);
         add_space_before = false;
         add_space_after = false;
         visit_node(_modern_proc_type.res);
     }
     else
     {
         if (_modern_proc_type.el == null && _modern_proc_type.res == null)
         {
             int beg_pos = GetPosition(_modern_proc_type.source_context.begin_position.line_num, _modern_proc_type.source_context.begin_position.column_num);
             int end_pos = GetPosition(_modern_proc_type.source_context.end_position.line_num, _modern_proc_type.source_context.end_position.column_num);
             sb.Append(Text.Substring(beg_pos, end_pos - beg_pos + 1));
         }
         else
         {
             if (_modern_proc_type.el != null && _modern_proc_type.el.enumerators != null)
             {
                 sb.Append("(");
                 for (int i = 0; i < _modern_proc_type.el.enumerators.Count; i++)
                 {
                     visit_node(_modern_proc_type.el.enumerators[i]);
                 }
             }
             else
                 read_from_beg_pos = true;
             add_space_before = false;
             add_space_after = false;
             visit_node(_modern_proc_type.res);
         }
     }
 }
Esempio n. 10
0
 public override void visit(modern_proc_type _modern_proc_type)
 {
     if (_modern_proc_type.aloneparam != null)
     {
         _modern_proc_type.aloneparam.visit(this);
         if (_modern_proc_type.res != null)
             _modern_proc_type.res.visit(this);
     }
     else
     {
         foreach (enumerator en in _modern_proc_type.el.enumerators)
         {
             en.name.visit(this); // Это исправил - SSM 15.1.16
         }
         if (_modern_proc_type.res != null)
             _modern_proc_type.res.visit(this);
     }
 }