/// <summary> /// Write the name/version/maxid of an imported table. /// </summary> /// <param name="writer">Current writer.</param> /// <param name="importedTable">Imported table.</param> /// <remarks>This assumes the writer is in the import list.</remarks> internal static void WriteImportTable(this IIonWriter writer, ISymbolTable importedTable) { writer.StepIn(IonType.Struct); // {name:'a', version: 1, max_id: 33} writer.SetFieldNameSymbol(GetSystemSymbol(SystemSymbols.NameSid)); writer.WriteString(importedTable.Name); writer.SetFieldNameSymbol(GetSystemSymbol(SystemSymbols.VersionSid)); writer.WriteInt(importedTable.Version); writer.SetFieldNameSymbol(GetSystemSymbol(SystemSymbols.MaxIdSid)); writer.WriteInt(importedTable.MaxId); writer.StepOut(); }
protected override void WriteBodyTo(IIonWriter writer, ISymbolTableProvider symbolTableProvider) { if (IsNullValue()) { writer.WriteNull(IonType.Int); } else if (_bigInteger != null) { writer.WriteInt(_bigInteger.Value); } else { writer.WriteInt(_longValue); } }
private static void RunOnce() { Writer.StepIn(IonType.List); for (var i = 0; i < 1000; i++) { Writer.StepIn(IonType.Struct); Writer.SetFieldName("boolean"); Writer.WriteBool(true); Writer.SetFieldName("string"); Writer.WriteString("this is a string"); Writer.SetFieldName("integer"); Writer.WriteInt(int.MaxValue); Writer.SetFieldName("float"); Writer.WriteFloat(432.23123f); Writer.SetFieldName("timestamp"); Writer.WriteTimestamp(new Timestamp(new DateTime(2000, 11, 11))); Writer.StepOut(); } byte[] bytes = null; Writer.StepOut(); Writer.Flush(ref bytes); Writer.Finish(); }
/// <summary> /// Serialize long value. /// </summary> /// /// <param name="writer">The Ion writer to be used for serialization.</param> /// <param name="item">The long value to serialize.</param> public override void Serialize(IIonWriter writer, long item) { writer.SetTypeAnnotations(new List <string>() { ANNOTATION }); writer.WriteInt(item); }
public override void Serialize(IIonWriter writer, Course item) { writer.StepIn(IonType.Struct); writer.SetFieldName("Sections"); writer.WriteInt(updateCourseSections.RemoveSections(item.Sections)); writer.SetFieldName("MeetingTime"); writer.WriteString(updateCourseSections.ShowNewTime()); writer.StepOut(); }
private static void Serializers(IonType type, dynamic value, IIonWriter writer) { switch (type) { case IonType.Bool: writer.WriteBool(value); break; case IonType.Blob: writer.WriteBlob(value); break; case IonType.Clob: writer.WriteClob(value); break; case IonType.Decimal: writer.WriteDecimal(value); break; case IonType.Float: writer.WriteFloat(value); break; case IonType.Int: writer.WriteInt(value); break; case IonType.String: writer.WriteString(value); break; case IonType.Symbol: writer.WriteString(value.Text); break; case IonType.Timestamp: writer.WriteTimestamp(value); break; case IonType.Null: writer.WriteNull(value); break; default: throw new InvalidOperationException("Unexpected type '" + type + "'"); } }
/// <summary> /// Just write a bunch of scalar values /// </summary> private static List <(string key, object value)> WriteFlat(IIonWriter writer) { var kvps = new List <(string key, object value)>(); void writeAndAdd <T>(string fieldName, T value, Action <T> writeAction) { writer.SetFieldName(fieldName); writeAction(value); kvps.Add((fieldName, value)); } writeAndAdd("boolean", true, writer.WriteBool); writeAndAdd("cstring", "somestring", writer.WriteString); writeAndAdd("int", 123456, i => writer.WriteInt(i)); writeAndAdd("long", long.MaxValue / 10000, writer.WriteInt); writeAndAdd("datetime", new Timestamp(new DateTime(2000, 11, 11, 11, 11, 11, DateTimeKind.Utc)), writer.WriteTimestamp); writeAndAdd("decimal", 6.34233242123123123423m, writer.WriteDecimal); writeAndAdd("float", 231236.321312f, d => writer.WriteFloat(d)); writeAndAdd("double", 231345.325667d * 133.346432d, writer.WriteFloat); return(kvps); }
private static bool TryWriteScalar(IIonWriter writer, object obj, Type type, IScalarWriter scalarWriter) { if (type.IsEnum) { var propValue = Enum.GetName(type, obj); writer.WriteSymbol(propValue); return(true); } if (type == typeof(string)) { var propValue = (string)obj; writer.WriteString(propValue); return(true); } if (type == typeof(int)) { var propValue = (int)obj; writer.WriteInt(propValue); return(true); } if (type == typeof(long)) { var propValue = (long)obj; writer.WriteInt(propValue); return(true); } if (type == typeof(bool)) { var propValue = (bool)obj; writer.WriteBool(propValue); return(true); } if (type == typeof(float)) { var propValue = (float)obj; writer.WriteFloat(propValue); return(true); } if (type == typeof(double)) { var propValue = (double)obj; writer.WriteFloat(propValue); return(true); } if (type == typeof(DateTime)) { var propValue = (DateTime)obj; writer.WriteTimestamp(new Timestamp(propValue)); return(true); } if (type == typeof(DateTimeOffset)) { var propValue = (DateTimeOffset)obj; writer.WriteTimestamp(new Timestamp(propValue)); return(true); } if (type == typeof(decimal)) { var propValue = (decimal)obj; writer.WriteDecimal(propValue); return(true); } //try to see if we can write use the scalar writer if (scalarWriter != null) { var method = scalarWriter.GetType().GetMethod(nameof(IScalarWriter.TryWriteValue)); var genericMethod = method.MakeGenericMethod(type); return((bool)genericMethod.Invoke(scalarWriter, new[] { writer, obj })); } return(false); }
public override void Serialize(IIonWriter writer, long item) { writer.WriteInt(-item); }
/// <summary> /// Serialize int value. /// </summary> /// /// <param name="writer">The Ion writer to be used for serialization.</param> /// <param name="item">The int value to serialize.</param> public override void Serialize(IIonWriter writer, int item) { writer.WriteInt(item); }