示例#1
0
		} //	end GetSubConditionDefinition


		/// <summary>
		/// CreateOTSConditionDefinitionData
		/// </summary>
		internal OTSConditionDefinitionData CreateOTSConditionDefinitionData()
		{
			OTSConditionDefinitionData conditionDefinitionData = new OTSConditionDefinitionData();
			conditionDefinitionData.m_definition = OTBFunctions.AllocateOTBString(this.m_definition);

			Hashtable syncSubconditions = Hashtable.Synchronized(m_subconditions);

			conditionDefinitionData.m_subConditionCount = (uint) syncSubconditions.Count;
			if (syncSubconditions.Count > 0)
			{
				conditionDefinitionData.m_subConditionDefinitions =
					OTBFunctions.OTAllocateMemory(syncSubconditions.Count*Marshal.SizeOf(typeof (IntPtr)));

				conditionDefinitionData.m_subConditionDescriptions =
					OTBFunctions.OTAllocateMemory(syncSubconditions.Count*Marshal.SizeOf(typeof (IntPtr)));

				conditionDefinitionData.m_subConditionSeverities =
					OTBFunctions.OTAllocateMemory(syncSubconditions.Count*Marshal.SizeOf(typeof (uint)));

				int index = 0;

				foreach (AeSubConditionDefinition subCondition in syncSubconditions.Values)
				{
					IntPtr definitionPointer = OTBFunctions.AllocateOTBString(subCondition.Definition);
					Marshal.WriteIntPtr(
						conditionDefinitionData.m_subConditionDefinitions,
						index*Marshal.SizeOf(typeof (IntPtr)),
						definitionPointer);

					IntPtr descriptionPointer = OTBFunctions.AllocateOTBString(subCondition.Description);
					Marshal.WriteIntPtr(
						conditionDefinitionData.m_subConditionDescriptions,
						index*Marshal.SizeOf(typeof (IntPtr)),
						descriptionPointer);

					Marshal.WriteInt32(conditionDefinitionData.m_subConditionSeverities,
					                   index*Marshal.SizeOf(typeof (uint)),
					                   (int) subCondition.Severity);
					index++;
				} //	end foreach
			} //	end if

			return conditionDefinitionData;
		} //	end CreateOTSConditionDefinitionData