<?xml version="1.0"?>
<doc>
    <assembly>
        <name>MonoMod</name>
    </assembly>
    <members>
        <member name="T:MonoMod.MonoModAdded">
            <summary>
            MonoMod "added" attribute.
            Will be applied by MonoMod automatically on patched types / members.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModConstructor">
            <summary>
            MonoMod constructor attribute.
            Apply it onto a constructor and it will be patched by MonoMod.
            Or apply it onto a method and it will be handled like a constructor.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModCustomAttributeAttribute">
            <summary>
            MonoMod "custom attribute" attribute.
            Apply it onto a custom attribute type and the supplied handler in your MonoModRules will handle it.
            Replaces MMIL.Rule.RegisterCustomAttribute in MonoModRules constructor.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModCustomMethodAttributeAttribute">
            <summary>
            MonoMod "custom method attribute" attribute.
            Apply it onto a custom attribute type and the supplied handler in your MonoModRules will handle it.
            Replaces MMIL.Rule.RegisterCustomMethodAttribute in MonoModRules constructor.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModEnumReplace">
            <summary>
            MonoMod enum replace attribute.
            Apply it onto a enum type / class and its values will be replaced by MonoMod.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModForceCall">
            <summary>
            MonoMod force call attribute.
            Apply it onto a method and all calls to it will be forcibly replaced with the call instruction.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModForceCallvirt">
            <summary>
            MonoMod force callvirt attribute.
            Apply it onto a method and all calls to it will be forcibly replaced with the callvirt instruction.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModHook">
            <summary>
            MonoMod hook attribute.
            Apply it onto a type / method / field and calls to the item it hooks will be relinked to the item the attribute gets applied to.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModIfFlag">
            <summary>
            MonoMod "if" attribute.
            Apply it onto a type / method / field and it gets ignored if MonoModder.Data[key] equals false.
            If fallback (true by default) is false, it also gets ignored if MonoModder.Data[key] is undefined.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModIgnore">
            <summary>
            MonoMod ignore attribute.
            Apply it onto a method / type and it (except its MonoMod custom attributes) will be ignored by MonoMod.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModLinkFrom">
            <summary>
            MonoMod "static hook" attribute.
            Apply it onto a type / method / field and calls to the item it hooks will be relinked to the item the attribute gets applied to.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModLinkTo">
            <summary>
            MonoMod linkto attribute.
            Apply it onto a type / method / field and calls to it by mods will be relinked to another target.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModNoNew">
            <summary>
            MonoMod "only patch if it exists" attribute.
            Apply it onto a type or method and it gets ignored if there's no original method in the input module.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModOnPlatform">
            <summary>
            MonoMod on platform ("#ifdef PLATFORM") attribute.
            Apply it onto a type / method / field and it gets ignored on non-matching platforms.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModOriginal">
            <summary>
            MonoMod original method attribute.
            Will be applied by MonoMod automatically on original methods.
            Use this (or MonoModIgnore) manually to mark non-"orig_" originals!
            </summary>
        </member>
        <member name="T:MonoMod.MonoModOriginalName">
            <summary>
            MonoMod original name attribute.
            Apply it onto a method (not the orig_) and its orig_ method will instead be named like that.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModPatch">
            <summary>
            MonoMod patch attribute.
            Apply it onto a type and it will behave as if the type was prefixed with patch_.
            This allows for custom compile-time names while MonoMod uses the supplied name for any relinking.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModPublic">
            <summary>
            MonoMod ignore attribute.
            Apply it onto a method / field / property / type and it will be made public by MonoMod.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModRemove">
            <summary>
            MonoMod remove attribute.
            Apply it onto a field / method / type and it will be removed by MonoMod.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModReplace">
            <summary>
            MonoMod replace attribute.
            Apply it onto a method and no orig_ method will be generated by MonoMod.
            Apply it onto a field and its attributes and field type will be replaced.
            Apply it onto a property and it will be removed first, as if you're just adding your own.
            Apply it onto a type and the original type will be removed first.
            </summary>
        </member>
        <member name="T:MonoMod.MonoModTargetModule">
            <summary>
            MonoMod target module attribute.
            Apply it onto a type and it will only be patched in the target module.
            Important: This attribute acts as a filter. It doesn't affect any other module than the input module.
            For example, one can define the target assembly version using MonoModTargetModule,
            or use the same MonoMod mod on multiple differing input assemblies.
            </summary>
        </member>
        <member name="M:MonoMod.MonoModder.Read">
            <summary>
            Reads the main module from the Input stream / InputPath file to Module.
            </summary>
        </member>
        <member name="M:MonoMod.MonoModder.Write(System.IO.Stream,System.String)">
            <summary>
            Write the modded module to the given stream or the default output.
            </summary>
            <param name="output">Output stream. If none given, outputPath or default Output will be used.</param>
            <param name="outputPath">Output path. If none given, output or default OutputPath will be used.</param>
        </member>
        <member name="M:MonoMod.MonoModder.AutoPatch">
            <summary>
            Automatically mods the module, loading Input, writing the modded module to Output.
            </summary>
        </member>
        <member name="M:MonoMod.MonoModder.PrePatchModule(Mono.Cecil.ModuleDefinition)">
            <summary>
            Pre-Patches the module (adds new types, module references, resources, ...).
            </summary>
            <param name="mod">Mod to patch into the input module.</param>
        </member>
        <member name="M:MonoMod.MonoModder.PrePatchType(Mono.Cecil.TypeDefinition,System.Boolean)">
            <summary>
            Patches the type (adds new types).
            </summary>
            <param name="type">Type to patch into the input module.</param>
            <param name="forceAdd">Forcibly add the type, no matter if it already exists or if it's MonoModRules.</param>
        </member>
        <member name="M:MonoMod.MonoModder.PatchModule(Mono.Cecil.ModuleDefinition)">
            <summary>
            Patches the module (adds new type members).
            </summary>
            <param name="mod">Mod to patch into the input module.</param>
        </member>
        <member name="M:MonoMod.MonoModder.PatchType(Mono.Cecil.TypeDefinition)">
            <summary>
            Patches the type (adds new members).
            </summary>
            <param name="type">Type to patch into the input module.</param>
        </member>
        <member name="M:MonoMod.MonoModder.GetMetadataToken(Mono.Cecil.TokenType)">
            <summary>
            Creates a new non-conflicting MetadataToken.
            </summary>
            <param name="type">The type of the new token.</param>
            <returns>A MetadataToken with an unique RID for the target module.</returns>
        </member>
        <member name="M:MonoMod.MonoModder.AllowedSpecialName(Mono.Cecil.MethodDefinition,Mono.Cecil.TypeDefinition)">
            <summary>
            Checks if the method has a special name that is "allowed" to be patched.
            </summary>
            <returns><c>true</c> if the special name used in the method is allowed, <c>false</c> otherwise.</returns>
            <param name="method">Method to check.</param>
            <param name="targetType">Type to which the method will be added.</param>
        </member>
    </members>
</doc>
