public byte[] SaveCompiledExpressions() { List <byte> buffer = new List <byte>(); //VALUE _value = new VALUE(); //string _valuestr = ""; int size = 0; DrawExpressionCollectionCode drawexpressioncollectioncode = new DrawExpressionCollectionCode(); size = Marshal.SizeOf(drawexpressioncollectioncode); drawexpressioncollectioncode.BufferSize = size; drawexpressioncollectioncode.IsValid = 1; drawexpressioncollectioncode.NoOfDynamicProperties = objDisplayObjectDynamicPropertys.Count; //drawexpressioncollectioncode.NoOfExpressions = 0; // add above structure to buffer StructFile sfDrawExpressionCollectionCode = new StructFile(typeof(DrawExpressionCollectionCode)); sfDrawExpressionCollectionCode.WriteStructure(ref buffer, (object)drawexpressioncollectioncode); // foreach (DisplayObjectDynamicProperty exs in objDisplayObjectDynamicPropertys.list) { ExpressionCode expressioncode = new ExpressionCode(); size = Marshal.SizeOf(expressioncode); expressioncode.Property = (int)exs.ObjectType; expressioncode.NoOfConditions = exs.NoOfConditions; expressioncode.ReturnType = (int)exs.Type; if (exs.IsColor) { expressioncode.IsColor = 1; } else { expressioncode.IsColor = 0; } expressioncode.ExecutionType = 1;// 0 initialization 1 Cyclic expressioncode.IsValid = 0; StructFile sfEcpressionCode = new StructFile(typeof(ExpressionCode)); expressioncode.IsValid = 1; FillPropertyList(ref expressioncode, exs.ObjectType); sfEcpressionCode.WriteStructure(ref buffer, (object)expressioncode); foreach (DisplayObjectDynamicPropertyCondition cs in exs.ConditionList) { ConditionCode conditioncode = new ConditionCode(); //conditioncode.StrValue = new STRINGOBJ(); conditioncode.Size = cs.SimpleOperation.Size1(); if (exs.IsString) { //unsafe { conditioncode.StrValue.Len = cs.m_StrValue.Len; conditioncode.StrValue.Val00 = cs.m_StrValue.Val00; conditioncode.StrValue.Val01 = cs.m_StrValue.Val01; conditioncode.StrValue.Val02 = cs.m_StrValue.Val02; conditioncode.StrValue.Val03 = cs.m_StrValue.Val03; conditioncode.StrValue.Val04 = cs.m_StrValue.Val04; conditioncode.StrValue.Val05 = cs.m_StrValue.Val05; conditioncode.StrValue.Val06 = cs.m_StrValue.Val06; conditioncode.StrValue.Val07 = cs.m_StrValue.Val07; conditioncode.StrValue.Val08 = cs.m_StrValue.Val08; conditioncode.StrValue.Val09 = cs.m_StrValue.Val09; conditioncode.StrValue.Val10 = cs.m_StrValue.Val10; conditioncode.StrValue.Val11 = cs.m_StrValue.Val11; conditioncode.StrValue.Val12 = cs.m_StrValue.Val12; conditioncode.StrValue.Val13 = cs.m_StrValue.Val13; conditioncode.StrValue.Val14 = cs.m_StrValue.Val14; conditioncode.StrValue.Val15 = cs.m_StrValue.Val15; //for (int k = 0; k < cs.m_StrValue.Len; k++) //{ // conditioncode.Val[k] = cs.m_StrValue.Val[k]; //} } } else { conditioncode.Value.ULINT = cs.m_Value.ULINT; } StructFile sfConditionCode = new StructFile(typeof(ConditionCode)); sfConditionCode.WriteStructure(ref buffer, conditioncode); cs.SimpleOperation.Write2Buffer(ref buffer); } } return(buffer.ToArray()); }
public void loadDrawExpressionCollection(byte[] _compiledexp) { int size = 0; int size1 = 0; //drawexpressionCollection = new DrawExpressionCollection(this); DrawExpressionCollectionCode drawexpressioncollectioncode = new DrawExpressionCollectionCode(); drawexpressioncollectioncode = (DrawExpressionCollectionCode)RawDeserialize(_compiledexp, 0, typeof(DrawExpressionCollectionCode)); size = Marshal.SizeOf(drawexpressioncollectioncode); if (drawexpressioncollectioncode.IsValid == 1) { for (int i = 0; i < drawexpressioncollectioncode.NoOfDynamicProperties; i++) { ExpressionCode expressioncode = new ExpressionCode(); expressioncode = (ExpressionCode)RawDeserialize(_compiledexp, size, typeof(ExpressionCode)); size += Marshal.SizeOf(expressioncode); DisplayObjectDynamicProperty displayobjectdynamicproperty = new DisplayObjectDynamicProperty(); displayobjectdynamicproperty.ObjectType = (enumDynamicGraphicalProperty)expressioncode.Property; displayobjectdynamicproperty.Type = (VarType)expressioncode.ReturnType; //displayobjectdynamicproperty.IsValid = 1; displayobjectdynamicproperty.IsColor = Convert.ToBoolean(expressioncode.IsColor); displayobjectdynamicproperty.IsString = Convert.ToBoolean(expressioncode.IsString); for (int j = 0; j < expressioncode.NoOfConditions; j++) { ConditionCode conditioncode = new ConditionCode(); //conditioncode.StrValue = new STRINGOBJ(); conditioncode = (ConditionCode)RawDeserialize(_compiledexp, size, typeof(ConditionCode)); size += Marshal.SizeOf(conditioncode); DisplayObjectDynamicPropertyCondition displayobjectdynamicpropertycondition = new DisplayObjectDynamicPropertyCondition(); displayobjectdynamicpropertycondition.IsValid = true; displayobjectdynamicpropertycondition.m_Value = conditioncode.Value; //unsafe { displayobjectdynamicpropertycondition.ToCopySTRINGOBJ(conditioncode.StrValue); //for (int k = 0; k < 16; k++) //{ // displayobjectdynamicpropertycondition.m_StrValue.Val[k] = conditioncode.Val[k]; //} } size1 = 0; { OPERATION _operation = new OPERATION(); _operation = (OPERATION)RawDeserialize(_compiledexp, size, typeof(OPERATION)); size1 = Marshal.SizeOf(_operation); size += Marshal.SizeOf(_operation); while (size1 < _operation.Size1) { TICInstruction instruction = new TICInstruction(); instruction.Operator = (OPERATOR)RawDeserialize(_compiledexp, size, typeof(OPERATOR)); size += Marshal.SizeOf(instruction.Operator); size1 += Marshal.SizeOf(instruction.Operator); for (int k = 0; k < instruction.Operator.NoOfArg; k++) { OPERAND operand = new OPERAND(); operand = (OPERAND)RawDeserialize(_compiledexp, size, typeof(OPERAND)); size += Marshal.SizeOf(operand); size1 += Marshal.SizeOf(operand); instruction.OperandList.Add(operand); } displayobjectdynamicpropertycondition.SimpleOperation.instructionlist.Add(instruction); } } displayobjectdynamicproperty.ConditionList.Add(displayobjectdynamicpropertycondition); } drawexpressionCollection.objDisplayObjectDynamicPropertys.list.Add(displayobjectdynamicproperty); } } }