Beispiel #1
0
        internal static int LoadObjectVector(HObjectVector outVector, IntPtr vectorHandle)
        {
            int dimension;

            EngineAPI.HCkE(EngineAPI.GetObjectVectorDimension(vectorHandle, out dimension));
            int length;

            EngineAPI.HCkE(EngineAPI.GetObjectVectorLength(vectorHandle, out length));
            if (dimension == 1)
            {
                for (int index = length - 1; index >= 0; --index)
                {
                    IntPtr key;
                    EngineAPI.HCkE(EngineAPI.GetObjectVectorObject(vectorHandle, index, out key));
                    outVector[index].O = new HObject(key, false);
                }
            }
            else
            {
                for (int index = length - 1; index >= 0; --index)
                {
                    IntPtr sub_vector_handle;
                    EngineAPI.HCkE(EngineAPI.GetObjectVectorVector(vectorHandle, index, out sub_vector_handle));
                    EngineAPI.HCkE(EngineAPI.LoadObjectVector(outVector[index], sub_vector_handle));
                    EngineAPI.HCkE(EngineAPI.DestroyObjectVector(sub_vector_handle));
                }
            }
            return(2);
        }
Beispiel #2
0
        internal static int StoreObjectVector(HObjectVector inVector, IntPtr vectorHandle)
        {
            int dimension = inVector.Dimension;
            int length    = inVector.Length;

            if (dimension == 1)
            {
                for (int index = length - 1; index >= 0; --index)
                {
                    EngineAPI.HCkE(EngineAPI.SetObjectVectorObject(vectorHandle, index, inVector[index].O.Key));
                }
            }
            else
            {
                for (int index = length - 1; index >= 0; --index)
                {
                    IntPtr vectorHandle1;
                    EngineAPI.HCkE(EngineAPI.CreateObjectVector(inVector[index], out vectorHandle1));
                    EngineAPI.HCkE(EngineAPI.SetObjectVectorVector(vectorHandle, index, vectorHandle1));
                    EngineAPI.HCkE(EngineAPI.DestroyObjectVector(vectorHandle1));
                }
            }
            GC.KeepAlive((object)inVector);
            return(2);
        }
Beispiel #3
0
        /// <summary>Sets input control parameter for procedure call</summary>
        public void SetInputIconicParamVector(string name, HObjectVector vector)
        {
            IntPtr vectorHandle;

            HDevProcedureCall.HCkE(EngineAPI.CreateObjectVector(vector, out vectorHandle));
            HDevProcedureCall.HCkE(EngineAPI.SetInputIconicParamVector(this.call, name, vectorHandle));
            GC.KeepAlive((object)this);
            HDevProcedureCall.HCkE(EngineAPI.DestroyObjectVector(vectorHandle));
        }
Beispiel #4
0
 /// <summary>Create copy of object vector</summary>
 public HObjectVector(HObjectVector vector)
     : base((HVector)vector)
 {
     if (this.mDimension > 0)
     {
         return;
     }
     this.mObject = vector.mObject.CopyObj(1, -1);
 }
Beispiel #5
0
        /// <summary>Sets the value of a global iconic variable</summary>
        public void SetGlobalIconicVarVector(string name, HObjectVector vector)
        {
            IntPtr vectorHandle;

            HDevEngine.HCkE(EngineAPI.CreateObjectVector(vector, out vectorHandle));
            HDevEngine.HCkE(EngineAPI.SetGlobalIconicVarVector(this.engine, name, vectorHandle));
            GC.KeepAlive((object)this);
            HDevEngine.HCkE(EngineAPI.DestroyObjectVector(vectorHandle));
        }
Beispiel #6
0
        internal static int CreateObjectVector(HObjectVector inVector, out IntPtr vectorHandle)
        {
            IntPtr vector_handle;

            EngineAPI.HCkE(EngineAPI.CreateObjectVector(inVector.Dimension, out vector_handle));
            EngineAPI.HCkE(EngineAPI.StoreObjectVector(inVector, vector_handle));
            GC.KeepAlive((object)inVector);
            vectorHandle = vector_handle;
            return(2);
        }
Beispiel #7
0
        internal static HObjectVector GetAndDestroyObjectVector(IntPtr vectorHandle)
        {
            int dimension;

            EngineAPI.HCkE(EngineAPI.GetObjectVectorDimension(vectorHandle, out dimension));
            HObjectVector outVector = new HObjectVector(dimension);

            EngineAPI.HCkE(EngineAPI.LoadObjectVector(outVector, vectorHandle));
            EngineAPI.HCkE(EngineAPI.DestroyObjectVector(vectorHandle));
            return(outVector);
        }
Beispiel #8
0
 public HObjectVector Insert(int index, HObjectVector vector, bool clone)
 {
     this.InsertImpl(index, (HVector)vector, clone);
     return(this);
 }
Beispiel #9
0
 /// <summary>
 ///   Create empty vector of specified dimension. In case of dimension
 ///   0 a leaf vector for an empty object is created
 /// </summary>
 public HObjectVector(int dimension)
     : base(dimension)
 {
     this.mObject = dimension <= 0 ? HObjectVector.GenEmptyObj() : (HObject)null;
 }
Beispiel #10
0
 /// <summary>Insert vector at specified index</summary>
 public HObjectVector Insert(int index, HObjectVector vector)
 {
     this.InsertImpl(index, (HVector)vector, true);
     return(this);
 }
Beispiel #11
0
 public HObjectVector Append(HObjectVector vector, bool clone)
 {
     return((HObjectVector)this.ConcatImpl((HVector)vector, true, clone));
 }
Beispiel #12
0
 public HObjectVector Concat(HObjectVector vector, bool clone)
 {
     return((HObjectVector)this.ConcatImpl((HVector)vector, false, clone));
 }
Beispiel #13
0
 /// <summary>Concatenate two vectors, creating new vector</summary>
 public HObjectVector Concat(HObjectVector vector)
 {
     return((HObjectVector)this.ConcatImpl((HVector)vector, false, true));
 }
Beispiel #14
0
 /// <summary>
 ///   Returns true if vector has same dimension, lengths, and elements
 /// </summary>
 public bool VectorEqual(HObjectVector vector)
 {
     return(this.EqualsImpl((HVector)vector));
 }