Inheritance: SerializerBase
示例#1
0
	public ICalendarProperty  property(
		
	ISerializationContext ctx,	
	ICalendarPropertyListContainer c

	) //throws RecognitionException, TokenStreamException
{
		ICalendarProperty p = null;;
		
		IToken  n = null;
		IToken  m = null;
		
			string v;
		
		
		{
			switch ( LA(1) )
			{
			case IANA_TOKEN:
			{
				n = LT(1);
				match(IANA_TOKEN);
				
						p = new CalendarProperty(n.getLine(), n.getColumn());
						p.Name = n.getText().ToUpper();
					
				break;
			}
			case X_NAME:
			{
				m = LT(1);
				match(X_NAME);
				
						p = new CalendarProperty(m.getLine(), m.getColumn());
						p.Name = m.getText().ToUpper();
					
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			 }
		}
		
			ISerializationProcessor<ICalendarProperty> processor = ctx.GetService(typeof(ISerializationProcessor<ICalendarProperty>)) as ISerializationProcessor<ICalendarProperty>;
			// Do some pre-processing on the property
			if (processor != null)
				processor.PreDeserialization(p);
		
			if (c != null)
			{
				// Add the property to the container, as the parent object(s)
				// may be needed during deserialization.
				c.Properties.Add(p);
			}
		
			// Push the property onto the serialization context stack
			ctx.Push(p);
			IStringSerializer dataMapSerializer = new DataMapSerializer(ctx);
		
		{    // ( ... )*
			for (;;)
			{
				if ((LA(1)==SEMICOLON))
				{
					match(SEMICOLON);
					parameter(ctx, p);
				}
				else
				{
					goto _loop24_breakloop;
				}
				
			}
_loop24_breakloop:			;
		}    // ( ... )*
		match(COLON);
		v=value();
		
			// Deserialize the value of the property
			// into a concrete iCalendar data type,
			// a list of concrete iCalendar data types,
			// or string value.
			object deserialized = dataMapSerializer.Deserialize(new StringReader(v));
		if (deserialized != null)
		{
				// Try to determine if this is was deserialized as a *list*
				// of concrete types.
		Type targetType = dataMapSerializer.TargetType;
		Type listOfTargetType = typeof(IList<>).MakeGenericType(targetType);
		if (listOfTargetType.IsAssignableFrom(deserialized.GetType()))
		{
					// We deserialized a list - add each value to the
					// resulting object.
		foreach (var item in (IEnumerable)deserialized)
		p.AddValue(item);
		}
		else
		{
					// We deserialized a single value - add it to the object.
		p.AddValue(deserialized);
		}
		}
		
		{    // ( ... )*
			for (;;)
			{
				if ((LA(1)==CRLF))
				{
					match(CRLF);
				}
				else
				{
					goto _loop26_breakloop;
				}
				
			}
_loop26_breakloop:			;
		}    // ( ... )*
		
			// Do some final processing on the property:
			if (processor != null)
				processor.PostDeserialization(p);
		
			// Notify that the property has been loaded
			p.OnLoaded();
			
			// Pop the property off the serialization context stack
			ctx.Pop();
		
		return p;
	}
示例#2
0
	public ICalendarProperty  property(
		
	ISerializationContext ctx,	
	ICalendarPropertyListContainer c

	) //throws RecognitionException, TokenStreamException
{
		ICalendarProperty p = null;;
		
		IToken  n = null;
		IToken  m = null;
		
			string v;
		
		
		{
			switch ( LA(1) )
			{
			case IANA_TOKEN:
			{
				n = LT(1);
				match(IANA_TOKEN);
				
						p = new CalendarProperty(n.getLine(), n.getColumn());
						p.Name = n.getText().ToUpper();
					
				break;
			}
			case X_NAME:
			{
				m = LT(1);
				match(X_NAME);
				
						p = new CalendarProperty(m.getLine(), m.getColumn());
						p.Name = m.getText().ToUpper();
					
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			 }
		}
		
			ISerializationProcessor<ICalendarProperty> processor = ctx.GetService(typeof(ISerializationProcessor<ICalendarProperty>)) as ISerializationProcessor<ICalendarProperty>;
			// Do some pre-processing on the property
			if (processor != null)
				processor.PreDeserialization(p);
		
			if (c != null)
			{
				// Add the property to the container, as the parent object(s)
				// may be needed during deserialization.
				c.Properties.Add(p);
			}
		
			// Push the property onto the serialization context stack
			ctx.Push(p);
            IStringSerializer dataMapSerializer = new DataMapSerializer(ctx);
		
		{    // ( ... )*
			for (;;)
			{
				if ((LA(1)==SEMICOLON))
				{
					match(SEMICOLON);
					parameter(ctx, p);
				}
				else
				{
					goto _loop24_breakloop;
				}
				
			}
_loop24_breakloop:			;
		}    // ( ... )*
		match(COLON);
		v=value();
		
			// Deserialize the value of the property
			// into a concrete iCalendar data type,
			// or string value.
            p.Value = dataMapSerializer.Deserialize(new StringReader(v));
		
		{    // ( ... )*
			for (;;)
			{
				if ((LA(1)==CRLF))
				{
					match(CRLF);
				}
				else
				{
					goto _loop26_breakloop;
				}
				
			}
_loop26_breakloop:			;
		}    // ( ... )*
		
			// Do some final processing on the property:
			if (processor != null)
				processor.PostDeserialization(p);
		
			// Notify that the property has been loaded
			p.OnLoaded();
			
			// Pop the property off the serialization context stack
			ctx.Pop();
		
		return p;
	}