using FishNet.Utility;
using System;
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo(UtilityConstants.CODEGEN_ASSEMBLY_NAME)]
namespace FishNet.CodeGenerating
{
///
/// Allows a SyncType to be mutable.
///
public class AllowMutableSyncTypeAttribute : Attribute { }
///
/// Type will be included in auto serializer creation.
///
[AttributeUsage((AttributeTargets.Class | AttributeTargets.Struct), Inherited = true, AllowMultiple = false)]
public class IncludeSerializationAttribute : Attribute { }
///
/// Type will be excluded from auto serializer creation.
///
public class ExcludeSerializationAttribute : Attribute { }
///
/// Method will not be considered a writer or reader.
///
public class NotSerializerAttribute : Attribute { }
///
/// Method or type will be made public by codegen.
///
internal class MakePublicAttribute : Attribute { }
///
/// Method is a comparer for a value type.
///
public class CustomComparerAttribute : Attribute { }
///
/// Used on a type when you want a custom serializer to be global across all assemblies.
///
[AttributeUsage((AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface), Inherited = true, AllowMultiple = false)]
public class UseGlobalCustomSerializerAttribute : Attribute { }
///
/// Uses built-in caches to retrieve read classes rather than initializing a new instance.
/// This attribute is primarily for internal use and may change at anytime without notice.
///
[AttributeUsage((AttributeTargets.Class), Inherited = true, AllowMultiple = false)]
public class ReadUnallocatedAttribute : Attribute { }
///
/// Indicates a method is the default writer for a type. The first non-extension parameter indicates the type this writer is for.
/// This attribute is primarily for internal use and may change at anytime without notice.
///
public class DefaultWriterAttribute : Attribute { }
///
/// Indicates a method is the default reader for a type. The return type indicates what type the reader is for.
/// This attribute is primarily for internal use and may change at anytime without notice.
///
public class DefaultReaderAttribute : Attribute { }
///
/// Indicates a method is a delta writer. The first non-extension parameter indicates the type this writer is for.
/// This attribute is primarily for internal use and may change at anytime without notice.
///
public class DefaultDeltaWriterAttribute : Attribute { }
///
/// Indicates a method is a delta reader. The return type indicates what type the reader is for.
/// This attribute is primarily for internal use and may change at anytime without notice.
///
public class DefaultDeltaReaderAttribute : Attribute { }
}