public void Mod_Ref() { string doubledUp = "System.ValueType& modopt(System.Runtime.CompilerServices.IsBoxed)"; string result = MemberFormatter.RemoveMod(doubledUp); Assert.AreEqual("System.ValueType&", result); }
private void ProcessMember(MemberInfo memberInfo, List <KeyValuePair <int, MemberFormatter> > formatters, ref int count) { var keys = memberInfo.GetCustomAttributes <KeyAttribute>(); foreach (var key in keys) { if (key.Value == -1) { if (LastKeyAttribute == null) { LastKeyAttribute = new LastKeyAttribute(); Logger.Instance.Error("Type {0} contains unsetted keys, but it has no one [LastKey] attribute. Saves won't work properly!", Type.FullName); } key.Value = LastKeyAttribute.Value++; } if (key.DistributedSubPath != null) { var flags = key.Flags | SerializationFlags.Distributed; var externalFormatter = MemberFormatter.CreateDistributed(memberInfo, flags, key.DistributedSubPath); formatters.Add(new KeyValuePair <int, MemberFormatter>(key.Value, externalFormatter)); } var formatter = MemberFormatter.Create(memberInfo, key.Flags); formatters.Add(new KeyValuePair <int, MemberFormatter>(key.Value, formatter)); count = Math.Max(count, key.Value + 1); } }
public void DoubleMod_Pointer() { string doubledUp = "System.ValueType modreq(System.DateTime) modopt(System.Runtime.CompilerServices.IsBoxed)*"; string result = MemberFormatter.RemoveMod(doubledUp); Assert.AreEqual("System.ValueType*", result); }
public void Test_StaticEvent() => TestEventSignature(typeof(SomeClass), "function onStaticEvent(eventArgs) { /* Your code */ }" + MemberFormatter.GetLineEnding() + "mdoc.Test.SampleClasses.SomeClass.addEventListener(\"staticevent\", onStaticEvent);" + MemberFormatter.GetLineEnding() + "mdoc.Test.SampleClasses.SomeClass.removeEventListener(\"staticevent\", onStaticEvent);" + MemberFormatter.GetLineEnding() + "- or -" + MemberFormatter.GetLineEnding() + "mdoc.Test.SampleClasses.SomeClass.onstaticevent = onStaticEvent;", nameof(SomeClass.StaticEvent));
public void Test_Event() => TestEventSignature(typeof(SomeClass), "function onAppMemoryUsageIncreased(eventArgs) { /* Your code */ }" + MemberFormatter.GetLineEnding() + "someClass.addEventListener(\"appmemoryusageincreased\", onAppMemoryUsageIncreased);" + MemberFormatter.GetLineEnding() + "someClass.removeEventListener(\"appmemoryusageincreased\", onAppMemoryUsageIncreased);" + MemberFormatter.GetLineEnding() + "- or -" + MemberFormatter.GetLineEnding() + "someClass.onappmemoryusageincreased = onAppMemoryUsageIncreased;", nameof(SomeClass.AppMemoryUsageIncreased));
public int WriteMembers(SerializationFlags flags, object instance, ref byte[] bytes, int offset, IFormatterResolver formatterResolver, bool recursive = true) { var startOffset = offset; if (BaseMeta != null && recursive) { offset += BaseMeta.WriteMembers(flags, instance, ref bytes, offset, formatterResolver); } if (Flags.IsSerializable() && !Flags.IsSkipWriting()) { if (MemberFormatterGroups == null) { offset += MessagePackBinary.WriteNil(ref bytes, offset); } else { var notNilCount = 0; var formatters = new MemberFormatter[MemberFormatterGroups.Length]; for (int i = 0; i < MemberFormatterGroups.Length; i++) { var formatter = MemberFormatterGroups[i]?.GetFormatter(flags); if (formatter != null) { formatters[i] = formatter; notNilCount = i + 1; } } bool hasAnnotations = Serializer.Instance.State.Settings.Flags.HasFlag(SerializationFlags.Annotations); offset += MessagePackBinary.WriteArrayHeader(ref bytes, offset, notNilCount); for (int i = 0; i < notNilCount; i++) { var formatter = formatters[i]; if (formatter == null) { offset += MessagePackBinary.WriteNil(ref bytes, offset); } else { if (hasAnnotations) { offset += MessagePackBinaryExtension.WriteComment(ref bytes, offset, formatter.MemberName + ":"); } offset += formatter.Write(instance, ref bytes, offset, formatterResolver); } } } } return(offset - startOffset); }
public void Formatters_VerifyPrivateConstructorNull() { // this is a private constructor var method = GetMethod <TestClass> (m => m.IsConstructor && !m.IsPublic && m.Parameters.Count() == 1); MemberFormatter[] formatters = new MemberFormatter[] { new CSharpFullMemberFormatter(), new CSharpMemberFormatter(), new ILMemberFormatter(), new ILFullMemberFormatter() }; var sigs = formatters.Select(f => f.GetDeclaration(method)); foreach (var sig in sigs) { Assert.IsNull(sig); } }
protected static string FormatEndings(string s) { return(s?.Replace("\r\n", MemberFormatter.GetLineEnding())); }
public JsMemberFormatter(TypeMap map) : base(map) { usageFormatter = new JsUsageFormatter(map); }
private void DocumentMembers <T>(T[] members, string heading, bool forceDocumentation, MemberFormatter <T> format) where T : MemberInfo { bool foundOne = false; foreach (var m in members) { if (forceDocumentation || m.GetDocumentation() != null) { foundOne = true; break; } } if (foundOne) { Section("h3", heading, null); List <T> mems = new List <T>(members); // ReSharper disable StringCompareIsCultureSpecific.1 mems.Sort((m1, m2) => (string.Compare(m1.Name, m2.Name))); // ReSharper restore StringCompareIsCultureSpecific.1 Tag("dl", delegate { foreach (var m in mems) { string doc = m.GetDocumentation(); if (m.Name != "value__" && (forceDocumentation || doc != null)) { // ReSharper disable AccessToModifiedClosure Tag("dt", () => format(m)); // ReSharper restore AccessToModifiedClosure if (doc != null) { Tag("dd", doc); } } } }); } }