public static object ToObject(Type type, LLSD value) { if (type == typeof(ulong)) { if (value.Type == LLSDType.Binary) { byte[] bytes = value.AsBinary(); return(Utils.BytesToUInt64(bytes)); } else { return((ulong)value.AsInteger()); } } else if (type == typeof(uint)) { if (value.Type == LLSDType.Binary) { byte[] bytes = value.AsBinary(); return(Utils.BytesToUInt(bytes)); } else { return((uint)value.AsInteger()); } } else if (type == typeof(ushort)) { return((ushort)value.AsInteger()); } else if (type == typeof(byte)) { return((byte)value.AsInteger()); } else if (type == typeof(short)) { return((short)value.AsInteger()); } else if (type == typeof(string)) { return(value.AsString()); } else if (type == typeof(bool)) { return(value.AsBoolean()); } else if (type == typeof(float)) { return((float)value.AsReal()); } else if (type == typeof(double)) { return(value.AsReal()); } else if (type == typeof(int)) { return(value.AsInteger()); } else if (type == typeof(UUID)) { return(value.AsUUID()); } else if (type == typeof(Vector3)) { if (value.Type == LLSDType.Array) { return(((LLSDArray)value).AsVector3()); } else { return(Vector3.Zero); } } else if (type == typeof(Vector4)) { if (value.Type == LLSDType.Array) { return(((LLSDArray)value).AsVector4()); } else { return(Vector4.Zero); } } else if (type == typeof(Quaternion)) { if (value.Type == LLSDType.Array) { return(((LLSDArray)value).AsQuaternion()); } else { return(Quaternion.Identity); } } else { return(null); } }
private static void SerializeNotationElementFormatted(StringWriter writer, string indent, LLSD llsd) { switch (llsd.Type) { case LLSDType.Unknown: writer.Write(undefNotationValue); break; case LLSDType.Boolean: if (llsd.AsBoolean()) { writer.Write(trueNotationValueTwo); } else { writer.Write(falseNotationValueTwo); } break; case LLSDType.Integer: writer.Write(integerNotationMarker); writer.Write(llsd.AsString()); break; case LLSDType.Real: writer.Write(realNotationMarker); writer.Write(llsd.AsString()); break; case LLSDType.UUID: writer.Write(uuidNotationMarker); writer.Write(llsd.AsString()); break; case LLSDType.String: writer.Write(singleQuotesNotationMarker); writer.Write(EscapeCharacter(llsd.AsString(), singleQuotesNotationMarker)); writer.Write(singleQuotesNotationMarker); break; case LLSDType.Binary: writer.Write(binaryNotationMarker); writer.Write("64"); writer.Write(doubleQuotesNotationMarker); writer.Write(llsd.AsString()); writer.Write(doubleQuotesNotationMarker); break; case LLSDType.Date: writer.Write(dateNotationMarker); writer.Write(doubleQuotesNotationMarker); writer.Write(llsd.AsString()); writer.Write(doubleQuotesNotationMarker); break; case LLSDType.URI: writer.Write(uriNotationMarker); writer.Write(doubleQuotesNotationMarker); writer.Write(EscapeCharacter(llsd.AsString(), doubleQuotesNotationMarker)); writer.Write(doubleQuotesNotationMarker); break; case LLSDType.Array: SerializeNotationArrayFormatted(writer, indent + baseIndent, (LLSDArray)llsd); break; case LLSDType.Map: SerializeNotationMapFormatted(writer, indent + baseIndent, (LLSDMap)llsd); break; default: throw new LLSDException("Notation serialization: Not existing element discovered."); } }