Exemplo n.º 1
0
        void Write <TDoc, TCursor>(MegaloScriptModel model, IO.TagElementStream <TDoc, TCursor, string> s,
                                   bool embedValues)
            where TDoc : class
            where TCursor : class
        {
            bool multiple_params  = mValueIds.Length > 1;
            bool write_extra_info = s.IsWriting && model.TagElementStreamSerializeFlags.HasParamFlags();

            for (int x = 0; x < mValueIds.Length; x++)
            {
                using (s.EnterCursorBookmark("Param"))
                {
                    if (write_extra_info)
                    {
                        ProtoData.ParameterList[x].WriteExtraModelInfo(model.Database, s, multiple_params, model.TagElementStreamSerializeFlags);
                    }

                    Contract.Assert(mValueIds[x].IsNotNone());
                    if (embedValues)
                    {
                        MegaloScriptValueBase.SerializeValueForEmbed(model, s, ref mValueIds[x]);
                    }
                    else
                    {
                        s.StreamCursor(ref mValueIds[x]);
                    }
                }
            }
        }
Exemplo n.º 2
0
        void Read <TDoc, TCursor>(MegaloScriptModel model, IO.TagElementStream <TDoc, TCursor, string> s,
                                  bool embedValues)
            where TDoc : class
            where TCursor : class
        {
            int param_index = 0;

            foreach (var node in s.ElementsByName("Param"))
            {
                using (s.EnterCursorBookmark(node))
                {
                    if (embedValues)
                    {
                        MegaloScriptValueBase.SerializeValueForEmbed(model, s, ref mValueIds[param_index]);
                    }
                    else
                    {
                        s.StreamCursor(ref mValueIds[param_index]);
                    }

                    Contract.Assert(mValueIds[param_index].IsNotNone());
                    param_index++;

                    if (param_index == mValueIds.Length)
                    {
                        break;
                    }
                }
            }
        }