示例#1
0
 public static object[] ToObjectArray(Tag[] tags)
 {
     object[] objArray = new object[tags.Length];
     for (int i = 0; i < tags.Length; i++)
     {
         objArray[i] = NXObjectManager.Get(tags[i]);
     }
     return(objArray);
 }
示例#2
0
        public static object ToObject(Variant v)
        {
            switch ((v.type & ~VariantType.Array))
            {
            case VariantType.Int:
                if ((v.type & VariantType.Array) == VariantType.Int)
                {
                    return(v.val.i);
                }
                return(ToIntArray(v.array_length, v.val.ptr));

            case VariantType.Double:
                if ((v.type & VariantType.Array) == VariantType.Int)
                {
                    return(v.val.d);
                }
                return(ToDoubleArray(v.array_length, v.val.ptr));

            case VariantType.Logical:
                if ((v.type & VariantType.Array) == VariantType.Int)
                {
                    return(v.val.l != 0);
                }
                return(ToBoolArray(v.array_length, v.val.ptr));

            case VariantType.String:
                if ((v.type & VariantType.Array) == VariantType.Int)
                {
                    return(ToStringFromUTF8(v.val.ptr));
                }
                return(ToStringArrayFromUTF8(v.array_length, v.val.ptr));

            case VariantType.Tag:
                if ((v.type & VariantType.Array) == VariantType.Int)
                {
                    return(NXObjectManager.Get((Tag)v.val.i));
                }
                return(ToObjectArray(typeof(object), v.array_length, v.val.ptr));

            case VariantType.Empty:
                if ((v.type & VariantType.Array) != VariantType.Int)
                {
                    throw new ArgumentException("array of Variant.Empty not allowed");
                }
                return(null);

            case VariantType.Variant:
                if ((v.type & VariantType.Array) == VariantType.Int)
                {
                    throw new ArgumentException("VariantType.Variant only valid for arrays");
                }
                return(ToObjectArray(v.array_length, v.val.ptr));
            }
            throw new ArgumentException("bad Variant object");
        }
示例#3
0
        protected static void StaticInitialize()
        {
            int status = JAM_SESSION_initialize();

            if (status != 0)
            {
                throw NXException.Create(status);
            }
            InitLicense();
            if (objectManager == null)
            {
                objectManager = new NXObjectManager();
            }
        }
示例#4
0
        public static unsafe Array ToObjectArray(Type elemType, int count, IntPtr tags)
        {
            uint *numPtr = (uint *)tags.ToPointer();
            Array array  = Array.CreateInstance(elemType, count);

            for (int i = 0; i < count; i++)
            {
                if (numPtr[i] != 0)
                {
                    array.SetValue(NXObjectManager.Get(*((Tag *)(numPtr + i))), i);
                }
            }
            SM_free(tags);
            return(array);
        }