summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Magno de Almeida <felipe@expertisesolutions.com.br>2019-03-10 13:54:26 -0300
committerFelipe Magno de Almeida <felipe@expertisesolutions.com.br>2019-03-10 17:39:37 -0300
commitbbb208abb30c24b490dfe5e3d69cd81934a6ae11 (patch)
treed708dd008d8bc541370d1768b04edaf5e75d975f
parent230cc00eeb2e38421a27b2badb6422c29f767f91 (diff)
downloadefl-bbb208abb30c24b490dfe5e3d69cd81934a6ae11.tar.gz
efl-mono: Add object type support for Eina.Value
-rw-r--r--src/bindings/mono/eina_mono/eina_value.cs15
-rw-r--r--src/lib/efl_mono/efl_custom_exports_mono.c3
2 files changed, 18 insertions, 0 deletions
diff --git a/src/bindings/mono/eina_mono/eina_value.cs b/src/bindings/mono/eina_mono/eina_value.cs
index 6fae14b022..ce92140c37 100644
--- a/src/bindings/mono/eina_mono/eina_value.cs
+++ b/src/bindings/mono/eina_mono/eina_value.cs
@@ -389,6 +389,10 @@ static internal class UnsafeNativeMethods {
// Error
[DllImport(efl.Libs.CustomExports)]
internal static extern IntPtr type_error();
+
+ // Error
+ [DllImport(efl.Libs.CustomExports)]
+ internal static extern IntPtr type_object();
}
}
@@ -472,6 +476,7 @@ public enum ValueType {
Optional,
/// <summary>Error values.</summary>
Error,
+ Object,
/// <summary>Empty values.</summary>
Empty,
}
@@ -530,6 +535,11 @@ static class ValueTypeMethods {
return val == ValueType.Error;
}
+ public static bool IsObject(this ValueType val)
+ {
+ return val == ValueType.Object;
+ }
+
/// <summary>Returns the Marshal.SizeOf for the given ValueType native structure.</summary>
public static int MarshalSizeOf(this ValueType val)
{
@@ -620,6 +630,9 @@ static class ValueTypeBridge
ManagedToNative.Add(ValueType.Error, type_error());
NativeToManaged.Add(type_error(), ValueType.Error);
+ ManagedToNative.Add(ValueType.Object, type_object());
+ NativeToManaged.Add(type_object(), ValueType.Object);
+
ManagedToNative.Add(ValueType.Empty, IntPtr.Zero);
NativeToManaged.Add(IntPtr.Zero, ValueType.Empty);
@@ -1869,6 +1882,8 @@ public class Value : IDisposable, IComparable<Value>, IEquatable<Value>
return Convert.ToUInt32(data.ToInt32());
case ValueType.String:
return StringConversion.NativeUtf8ToManagedString(data);
+ case ValueType.Object:
+ return new Efl.Object (data);
default:
return null;
}
diff --git a/src/lib/efl_mono/efl_custom_exports_mono.c b/src/lib/efl_mono/efl_custom_exports_mono.c
index 246a7bcf71..03022a7426 100644
--- a/src/lib/efl_mono/efl_custom_exports_mono.c
+++ b/src/lib/efl_mono/efl_custom_exports_mono.c
@@ -321,6 +321,9 @@ EAPI const Eina_Value_Type *type_list() {
EAPI const Eina_Value_Type *type_error() {
return EINA_VALUE_TYPE_ERROR;
}
+EAPI const Eina_Value_Type *type_object() {
+ return EINA_VALUE_TYPE_OBJECT;
+}
EAPI const Eina_Value_Type *type_optional() {
return EINA_VALUE_TYPE_OPTIONAL;