SIL.FieldWorks.Common.Controls.FilterSdaDecorator.VecProp C# (CSharp) Method

VecProp() public method

Override to filter the specified properties.
public VecProp ( int hvo, int tag, int chvoMax, int &chvo, SIL.FieldWorks.Common.COMInterfaces.ArrayPtr rghvo ) : void
hvo int
tag int
chvoMax int
chvo int
rghvo SIL.FieldWorks.Common.COMInterfaces.ArrayPtr
return void
		public override void VecProp(int hvo, int tag, int chvoMax, out int chvo, ArrayPtr rghvo)
		{
			ITestItem tester;
			if (!m_filterFlids.TryGetValue(tag, out tester))
			{
				base.VecProp(hvo, tag, chvoMax, out chvo, rghvo);
				return;
			}
			int chvoReal = BaseSda.get_VecSize(hvo, tag);
			using (ArrayPtr arrayPtr = MarshalEx.ArrayToNative<int>(chvoReal))
			{
				BaseSda.VecProp(hvo, tag, chvoReal, out chvoReal, arrayPtr);
				int[] candidates = MarshalEx.NativeToArray<int>(arrayPtr, chvoReal);
				int[] results = new int[chvoMax];
				int iresult = 0;
				for (int icandidate = 0; icandidate < candidates.Length; icandidate++)
				{
					if (tester.Test(candidates[icandidate], BaseSda, m_validHvos))
						results[iresult++] = candidates[icandidate];
				}
				chvo = iresult;
				MarshalEx.ArrayToNative(rghvo, chvoMax, results);
			}
		}
	}