示例#1
0
        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());
        }
示例#2
0
        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);
                }
            }
        }