//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// UserRTX.NET satellite library | Author: Sergei Y.Kitáev
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
using System;

#if !WASM
namespace user_rtx { using u = user_rtx;
#else
namespace user_rtx.wasm { using u = user_rtx.wasm;
#endif
//--------------------------------------------------------------------------------------------------

/// <summary>
/// Thread safe (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Constructor )]
public class thread_safeAttribute: Attribute {}
/// <summary>
/// Thread local (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Constructor )]
public class thread_localAttribute: Attribute {}
/// <summary>
/// Thread global (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Constructor )]
public class thread_globalAttribute: Attribute {}

//--------------------------------------------------------------------------------------------------

/// <summary>
/// Synchronized object (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Method | AttributeTargets.Property )]
public class synchronized_objectAttribute: Attribute {}

//--------------------------------------------------------------------------------------------------

/// <summary>
/// Lock on static synch.root (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Constructor )]
public class lock_on_static_sync_rootAttribute: Attribute {}
/// <summary>
/// Lock on current object (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Constructor )]
public class lock_on_currentAttribute: Attribute {}

/// <summary>
/// Needs in lock (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Constructor )]
public class needs_in_lockAttribute: Attribute {}

/// <summary>
/// Main thread execution restriction (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Constructor )]
public class main_thread_onlyAttribute: Attribute {}
/// <summary>
/// Main thread property setter access (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Property )]
public class set_in_main_threadAttribute: Attribute {}
/// <summary>
/// Not in main thread restriction (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Constructor )]
public class not_in_main_threadAttribute: Attribute {}

/// <summary>
/// Marshal into main UI-thread (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Constructor )]
public class marshal_into_main_ui_threadAttribute: Attribute {}

/// <summary>
/// Lock free (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Constructor )]
public class lock_freeAttribute: Attribute {}

/// <summary>
/// Unlocked (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Method | AttributeTargets.Property )]
public class unlockedAttribute: Attribute {}

/// <summary>
/// Requires lock (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Constructor )]
public class requires_lockAttribute: Attribute {}

/// <summary>
/// Volatice access (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Class | AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.Method )]
public class volatile_accessAttribute: Attribute {}

/// <summary>
/// Volatice access to base value with non-simple setter (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Property )]
public class v_access_simple_getAttribute: Attribute {}

/// <summary>
/// Interlocked access (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Class | AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.Method )]
public class interlocked_accessAttribute: Attribute {}

/// <summary>
/// Memory barrier (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Constructor )]
public class memory_barrierAttribute: Attribute {}

/// <summary>
/// Lock attribute (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Constructor | AttributeTargets.Parameter )]
public class lockAttribute: Attribute {}

/// <summary>
/// Has locks (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Constructor | AttributeTargets.Parameter )]
public class has_locksAttribute: Attribute {}

/// <summary>
/// Partial lock (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Parameter )]
public class partial_lockAttribute: Attribute {}

/// <summary>
/// In separate thread (remark attribute)
/// </summary>
[AttributeUsage( AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Constructor )]
public class in_separate_threadAttribute: Attribute {}

//--------------------------------------------------------------------------------------------------
} // user_rtx (.wasm)
