summaryrefslogtreecommitdiff
path: root/Runtime/Export/UnityEngineInternal
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Export/UnityEngineInternal')
-rw-r--r--Runtime/Export/UnityEngineInternal/TypeInferenceRuleAttribute.cs52
-rw-r--r--Runtime/Export/UnityEngineInternal/WrappedTypes.cs20
2 files changed, 72 insertions, 0 deletions
diff --git a/Runtime/Export/UnityEngineInternal/TypeInferenceRuleAttribute.cs b/Runtime/Export/UnityEngineInternal/TypeInferenceRuleAttribute.cs
new file mode 100644
index 0000000..f2c7fc2
--- /dev/null
+++ b/Runtime/Export/UnityEngineInternal/TypeInferenceRuleAttribute.cs
@@ -0,0 +1,52 @@
+using System;
+
+namespace UnityEngineInternal
+{
+ public enum TypeInferenceRules
+ {
+ /// <summary>
+ /// (typeof(T)) as T
+ /// </summary>
+ TypeReferencedByFirstArgument,
+
+ /// <summary>
+ /// (, typeof(T)) as T
+ /// </summary>
+ TypeReferencedBySecondArgument,
+
+ /// <summary>
+ /// (typeof(T)) as (T)
+ /// </summary>
+ ArrayOfTypeReferencedByFirstArgument,
+
+ /// <summary>
+ /// (T) as T
+ /// </summary>
+ TypeOfFirstArgument,
+ }
+
+ /// <summary>
+ /// Adds a special type inference rule to a method.
+ /// </summary>
+ [Serializable]
+ [AttributeUsage(AttributeTargets.Method)]
+ public class TypeInferenceRuleAttribute : Attribute
+ {
+ private readonly string _rule;
+
+ public TypeInferenceRuleAttribute(TypeInferenceRules rule)
+ : this(rule.ToString())
+ {
+ }
+
+ public TypeInferenceRuleAttribute(string rule)
+ {
+ _rule = rule;
+ }
+
+ public override string ToString()
+ {
+ return _rule;
+ }
+ }
+} \ No newline at end of file
diff --git a/Runtime/Export/UnityEngineInternal/WrappedTypes.cs b/Runtime/Export/UnityEngineInternal/WrappedTypes.cs
new file mode 100644
index 0000000..54c2444
--- /dev/null
+++ b/Runtime/Export/UnityEngineInternal/WrappedTypes.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+namespace UnityEngineInternal
+{
+ // This is a solution to problem where we cannot use:
+ // * System.Collections.Stack on WP8 and Metro, because it was stripped from .NET
+ // * System.Collections.Generic.Stack cannot use on iOS because it creates a dependency to System.dll thus increasing overall executable size
+#if UNITY_WINRT
+ public class GenericStack : Stack<Object>
+ {
+
+ }
+#else
+ public class GenericStack : System.Collections.Stack
+ {
+
+ }
+#endif
+
+} \ No newline at end of file