} // 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