Example #1
0
        public static void StoreTuple(IntPtr tupleHandle, HTuple tuple)
        {
            HTupleType type = tuple.Type == HTupleType.LONG ? HTupleType.INTEGER : tuple.Type;

            HalconAPI.HCkH(HalconAPI.CreateElementsOfType(tupleHandle, tuple.Length, type));
            switch (tuple.Type)
            {
            case HTupleType.INTEGER:
                HalconAPI.HCkH(HalconAPI.SetIArr(tupleHandle, tuple.IArr));
                break;

            case HTupleType.DOUBLE:
                HalconAPI.HCkH(HalconAPI.SetDArr(tupleHandle, tuple.DArr));
                break;

            case HTupleType.STRING:
                string[] sarr = tuple.SArr;
                for (int index = 0; index < tuple.Length; ++index)
                {
                    HalconAPI.HCkH(HalconAPI.SetS(tupleHandle, index, sarr[index]));
                }
                break;

            case HTupleType.MIXED:
                object[] oarr = tuple.data.OArr;
                for (int index = 0; index < tuple.Length; ++index)
                {
                    switch (HTupleImplementation.GetObjectType(oarr[index]))
                    {
                    case 1:
                        HalconAPI.HCkH(HalconAPI.SetI(tupleHandle, index, (int)oarr[index]));
                        break;

                    case 2:
                        HalconAPI.HCkH(HalconAPI.SetD(tupleHandle, index, (double)oarr[index]));
                        break;

                    case 4:
                        HalconAPI.HCkH(HalconAPI.SetS(tupleHandle, index, (string)oarr[index]));
                        break;

                    case 129:
                        HalconAPI.HCkH(HalconAPI.SetL(tupleHandle, index, (long)oarr[index]));
                        break;
                    }
                }
                break;

            case HTupleType.LONG:
                HalconAPI.HCkH(HalconAPI.SetLArr(tupleHandle, tuple.LArr));
                break;
            }
        }