예제 #1
0
 public void Clear()
 {
     this._handled           = false;
     this._mode              = DeferringMode.Off;
     this._deferredList      = null;
     this._deferredTreeDepth = -1;
 }
예제 #2
0
        void WriteObject(XamlType xamlType, bool fromMember, string methodName)
        {
            _handled = false;
            switch (_mode)
            {
            case DeferringMode.Off:
                break;

            case DeferringMode.TemplateReady:
                throw new XamlInternalException(SR.Get(SRID.TemplateNotCollected, methodName));

            case DeferringMode.TemplateStarting:
                StartDeferredList();
                _mode = DeferringMode.TemplateDeferring;
                goto case DeferringMode.TemplateDeferring;

            case DeferringMode.TemplateDeferring:
                if (fromMember)
                {
                    _deferredWriter.WriteGetObject();
                }
                else
                {
                    _deferredWriter.WriteStartObject(xamlType);
                }
                _deferredTreeDepth += 1;
                _handled            = true;
                break;

            default:
                throw new XamlInternalException(SR.Get(SRID.MissingCase, _mode.ToString(), methodName));
            }
        }
 public void Clear()
 {
     this._handled = false;
     this._mode = DeferringMode.Off;
     this._deferredList = null;
     this._deferredTreeDepth = -1;
 }
예제 #4
0
 public void Clear()
 {
     _handled           = false;
     _mode              = DeferringMode.Off;
     _deferredList      = null;
     _deferredTreeDepth = -1;
 }
예제 #5
0
        public override void WriteValue(object value)
        {
            this._handled = false;
            switch (this._mode)
            {
            case DeferringMode.Off:
                return;

            case DeferringMode.TemplateStarting:
                if (!(value is XamlNodeList))
                {
                    this.StartDeferredList();
                    this._mode = DeferringMode.TemplateDeferring;
                    break;
                }
                this._deferredList = (XamlNodeList)value;
                this._mode         = DeferringMode.TemplateReady;
                this._handled      = true;
                return;

            case DeferringMode.TemplateDeferring:
                break;

            case DeferringMode.TemplateReady:
                throw new XamlInternalException(System.Xaml.SR.Get("TemplateNotCollected", new object[] { "WriteValue" }));

            default:
                throw new XamlInternalException(System.Xaml.SR.Get("MissingCase", new object[] { this._mode.ToString(), "WriteValue" }));
            }
            this._deferredWriter.WriteValue(value);
            this._handled = true;
        }
예제 #6
0
        public override void WriteStartMember(XamlMember property)
        {
            _handled = false;
            switch (_mode)
            {
            case DeferringMode.Off:
                if (property.DeferringLoader != null)
                {
                    _mode = DeferringMode.TemplateStarting;

                    // We assume in WriteValue that this property can never be multi-valued
                    Debug.Assert(!property.IsDirective && !property.IsUnknown);
                }
                break;

            case DeferringMode.TemplateReady:
                throw new XamlInternalException(SR.Get(SRID.TemplateNotCollected, "WriteMember"));

            case DeferringMode.TemplateDeferring:
                _deferredWriter.WriteStartMember(property);
                _handled = true;
                break;

            default:
                throw new XamlInternalException(SR.Get(SRID.MissingCase, _mode.ToString(), "WriteMember"));
            }
        }
예제 #7
0
        public override void WriteEndObject()
        {
            this._handled = false;
            switch (this._mode)
            {
            case DeferringMode.Off:
                return;

            case DeferringMode.TemplateDeferring:
                this._deferredWriter.WriteEndObject();
                this._handled = true;
                this._deferredTreeDepth--;
                if (this._deferredTreeDepth == 0)
                {
                    this._deferredWriter.Close();
                    this._deferredWriter = null;
                    this._mode           = DeferringMode.TemplateReady;
                }
                return;

            case DeferringMode.TemplateReady:
                throw new XamlInternalException(System.Xaml.SR.Get("TemplateNotCollected", new object[] { "WriteEndObject" }));
            }
            throw new XamlInternalException(System.Xaml.SR.Get("MissingCase", new object[] { this._mode.ToString(), "WriteEndObject" }));
        }
예제 #8
0
        public override void WriteEndObject()
        {
            _handled = false;
            switch (_mode)
            {
            case DeferringMode.Off:
                break;

            case DeferringMode.TemplateReady:
                throw new XamlInternalException(SR.Get(SRID.TemplateNotCollected, "WriteEndObject"));

            case DeferringMode.TemplateDeferring:
                _deferredWriter.WriteEndObject();
                _handled            = true;
                _deferredTreeDepth -= 1;

                if (_deferredTreeDepth == 0)
                {
                    _deferredWriter.Close();
                    _deferredWriter = null;
                    _mode           = DeferringMode.TemplateReady;
                }
                break;

            default:
                throw new XamlInternalException(SR.Get(SRID.MissingCase, _mode.ToString(), "WriteEndObject"));
            }
        }
예제 #9
0
        private void WriteObject(XamlType xamlType, bool fromMember, string methodName)
        {
            this._handled = false;
            switch (this._mode)
            {
            case DeferringMode.Off:
                return;

            case DeferringMode.TemplateStarting:
                this.StartDeferredList();
                this._mode = DeferringMode.TemplateDeferring;
                break;

            case DeferringMode.TemplateDeferring:
                break;

            case DeferringMode.TemplateReady:
                throw new XamlInternalException(System.Xaml.SR.Get("TemplateNotCollected", new object[] { methodName }));

            default:
                throw new XamlInternalException(System.Xaml.SR.Get("MissingCase", new object[] { this._mode.ToString(), methodName }));
            }
            if (fromMember)
            {
                this._deferredWriter.WriteGetObject();
            }
            else
            {
                this._deferredWriter.WriteStartObject(xamlType);
            }
            this._deferredTreeDepth++;
            this._handled = true;
        }
 public XamlNodeList CollectTemplateList()
 {
     XamlNodeList list = this._deferredList;
     this._deferredList = null;
     this._mode = DeferringMode.Off;
     return list;
 }
예제 #11
0
        public XamlNodeList CollectTemplateList()
        {
            XamlNodeList list = this._deferredList;

            this._deferredList = null;
            this._mode         = DeferringMode.Off;
            return(list);
        }
예제 #12
0
        public XamlNodeList CollectTemplateList()
        {
            XamlNodeList retValue = _deferredList;

            _deferredList = null;
            _mode         = DeferringMode.Off;
            return(retValue);
        }
예제 #13
0
        public override void WriteStartMember(XamlMember property)
        {
            this._handled = false;
            switch (this._mode)
            {
            case DeferringMode.Off:
                if (property.DeferringLoader != null)
                {
                    this._mode = DeferringMode.TemplateStarting;
                }
                return;

            case DeferringMode.TemplateDeferring:
                this._deferredWriter.WriteStartMember(property);
                this._handled = true;
                return;

            case DeferringMode.TemplateReady:
                throw new XamlInternalException(System.Xaml.SR.Get("TemplateNotCollected", new object[] { "WriteMember" }));
            }
            throw new XamlInternalException(System.Xaml.SR.Get("MissingCase", new object[] { this._mode.ToString(), "WriteMember" }));
        }
예제 #14
0
        public override void WriteValue(object value)
        {
            _handled = false;
            switch (_mode)
            {
            case DeferringMode.Off:
                break;

            case DeferringMode.TemplateReady:
                throw new XamlInternalException(SR.Get(SRID.TemplateNotCollected, "WriteValue"));

            case DeferringMode.TemplateStarting:
                // This handles the case of SM template; V object; EM
                Debug.Assert(_deferredTreeDepth == 0);
                if (value is XamlNodeList)
                {
                    _deferredList = (XamlNodeList)value;
                    _mode         = DeferringMode.TemplateReady;
                    _handled      = true;
                }
                else
                {
                    StartDeferredList();
                    _mode = DeferringMode.TemplateDeferring;
                    goto case DeferringMode.TemplateDeferring;
                }
                break;

            case DeferringMode.TemplateDeferring:
                _deferredWriter.WriteValue(value);
                _handled = true;
                break;

            default:
                throw new XamlInternalException(SR.Get(SRID.MissingCase, _mode.ToString(), "WriteValue"));
            }
        }
예제 #15
0
        public override void  WriteNamespace(NamespaceDeclaration namespaceDeclaration)
        {
            switch (_mode)
            {
            case DeferringMode.Off:
                return;

            case DeferringMode.TemplateReady:
                throw new XamlInternalException(SR.Get(SRID.TemplateNotCollected, "WriteNamespace"));

            case DeferringMode.TemplateStarting:
                StartDeferredList();
                _mode = DeferringMode.TemplateDeferring;
                goto case DeferringMode.TemplateDeferring;

            case DeferringMode.TemplateDeferring:
                _deferredWriter.WriteNamespace(namespaceDeclaration);
                _handled = true;
                break;

            default:
                throw new XamlInternalException(SR.Get(SRID.MissingCase, _mode.ToString(), "WriteNamespace"));
            }
        }
예제 #16
0
        public override void WriteNamespace(NamespaceDeclaration namespaceDeclaration)
        {
            switch (this._mode)
            {
            case DeferringMode.Off:
                return;

            case DeferringMode.TemplateStarting:
                this.StartDeferredList();
                this._mode = DeferringMode.TemplateDeferring;
                break;

            case DeferringMode.TemplateDeferring:
                break;

            case DeferringMode.TemplateReady:
                throw new XamlInternalException(System.Xaml.SR.Get("TemplateNotCollected", new object[] { "WriteNamespace" }));

            default:
                throw new XamlInternalException(System.Xaml.SR.Get("MissingCase", new object[] { this._mode.ToString(), "WriteNamespace" }));
            }
            this._deferredWriter.WriteNamespace(namespaceDeclaration);
            this._handled = true;
        }
        private void WriteObject(XamlType xamlType, bool fromMember, string methodName)
        {
            this._handled = false;
            switch (this._mode)
            {
                case DeferringMode.Off:
                    return;

                case DeferringMode.TemplateStarting:
                    this.StartDeferredList();
                    this._mode = DeferringMode.TemplateDeferring;
                    break;

                case DeferringMode.TemplateDeferring:
                    break;

                case DeferringMode.TemplateReady:
                    throw new XamlInternalException(System.Xaml.SR.Get("TemplateNotCollected", new object[] { methodName }));

                default:
                    throw new XamlInternalException(System.Xaml.SR.Get("MissingCase", new object[] { this._mode.ToString(), methodName }));
            }
            if (fromMember)
            {
                this._deferredWriter.WriteGetObject();
            }
            else
            {
                this._deferredWriter.WriteStartObject(xamlType);
            }
            this._deferredTreeDepth++;
            this._handled = true;
        }
예제 #18
0
 public DeferringWriter(ObjectWriterContext context)
 {
     _context = context;
     _mode    = DeferringMode.Off;
 }
        public override void WriteStartMember(XamlMember property)
        {
            this._handled = false;
            switch (this._mode)
            {
                case DeferringMode.Off:
                    if (property.DeferringLoader != null)
                    {
                        this._mode = DeferringMode.TemplateStarting;
                    }
                    return;

                case DeferringMode.TemplateDeferring:
                    this._deferredWriter.WriteStartMember(property);
                    this._handled = true;
                    return;

                case DeferringMode.TemplateReady:
                    throw new XamlInternalException(System.Xaml.SR.Get("TemplateNotCollected", new object[] { "WriteMember" }));
            }
            throw new XamlInternalException(System.Xaml.SR.Get("MissingCase", new object[] { this._mode.ToString(), "WriteMember" }));
        }
        public override void WriteEndObject()
        {
            this._handled = false;
            switch (this._mode)
            {
                case DeferringMode.Off:
                    return;

                case DeferringMode.TemplateDeferring:
                    this._deferredWriter.WriteEndObject();
                    this._handled = true;
                    this._deferredTreeDepth--;
                    if (this._deferredTreeDepth == 0)
                    {
                        this._deferredWriter.Close();
                        this._deferredWriter = null;
                        this._mode = DeferringMode.TemplateReady;
                    }
                    return;

                case DeferringMode.TemplateReady:
                    throw new XamlInternalException(System.Xaml.SR.Get("TemplateNotCollected", new object[] { "WriteEndObject" }));
            }
            throw new XamlInternalException(System.Xaml.SR.Get("MissingCase", new object[] { this._mode.ToString(), "WriteEndObject" }));
        }
        public override void WriteValue(object value)
        {
            this._handled = false;
            switch (this._mode)
            {
                case DeferringMode.Off:
                    return;

                case DeferringMode.TemplateStarting:
                    if (!(value is XamlNodeList))
                    {
                        this.StartDeferredList();
                        this._mode = DeferringMode.TemplateDeferring;
                        break;
                    }
                    this._deferredList = (XamlNodeList) value;
                    this._mode = DeferringMode.TemplateReady;
                    this._handled = true;
                    return;

                case DeferringMode.TemplateDeferring:
                    break;

                case DeferringMode.TemplateReady:
                    throw new XamlInternalException(System.Xaml.SR.Get("TemplateNotCollected", new object[] { "WriteValue" }));

                default:
                    throw new XamlInternalException(System.Xaml.SR.Get("MissingCase", new object[] { this._mode.ToString(), "WriteValue" }));
            }
            this._deferredWriter.WriteValue(value);
            this._handled = true;
        }
        public override void WriteNamespace(NamespaceDeclaration namespaceDeclaration)
        {
            switch (this._mode)
            {
                case DeferringMode.Off:
                    return;

                case DeferringMode.TemplateStarting:
                    this.StartDeferredList();
                    this._mode = DeferringMode.TemplateDeferring;
                    break;

                case DeferringMode.TemplateDeferring:
                    break;

                case DeferringMode.TemplateReady:
                    throw new XamlInternalException(System.Xaml.SR.Get("TemplateNotCollected", new object[] { "WriteNamespace" }));

                default:
                    throw new XamlInternalException(System.Xaml.SR.Get("MissingCase", new object[] { this._mode.ToString(), "WriteNamespace" }));
            }
            this._deferredWriter.WriteNamespace(namespaceDeclaration);
            this._handled = true;
        }
 public DeferringWriter(ObjectWriterContext context)
 {
     this._context = context;
     this._mode = DeferringMode.Off;
 }