/* Generated by the protocol buffer compiler. DO NOT EDIT! */ /* Generated from: DigitalInterfaceState.proto */ #ifndef PROTOBUF_C_DigitalInterfaceState_2eproto__INCLUDED #define PROTOBUF_C_DigitalInterfaceState_2eproto__INCLUDED #include PROTOBUF_C__BEGIN_DECLS #if PROTOBUF_C_VERSION_NUMBER < 1003000 # error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. #elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION # error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. #endif #include "InterfaceIOs.pb-c.h" typedef struct _DigitalInterfaceState DigitalInterfaceState; /* --- enums --- */ /* --- messages --- */ struct _DigitalInterfaceState { ProtobufCMessage base; protobuf_c_boolean has_interfaceio; InterfaceIOs interfaceio; protobuf_c_boolean has_value; protobuf_c_boolean value; }; #define DIGITAL_INTERFACE_STATE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&digital_interface_state__descriptor) \ , 0, INTERFACE_IOS__ANALOG_MIXCHIP_TEMP, 0, 0 } /* DigitalInterfaceState methods */ void digital_interface_state__init (DigitalInterfaceState *message); size_t digital_interface_state__get_packed_size (const DigitalInterfaceState *message); size_t digital_interface_state__pack (const DigitalInterfaceState *message, uint8_t *out); size_t digital_interface_state__pack_to_buffer (const DigitalInterfaceState *message, ProtobufCBuffer *buffer); DigitalInterfaceState * digital_interface_state__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void digital_interface_state__free_unpacked (DigitalInterfaceState *message, ProtobufCAllocator *allocator); /* --- per-message closures --- */ typedef void (*DigitalInterfaceState_Closure) (const DigitalInterfaceState *message, void *closure_data); /* --- services --- */ /* --- descriptors --- */ extern const ProtobufCMessageDescriptor digital_interface_state__descriptor; PROTOBUF_C__END_DECLS #endif /* PROTOBUF_C_DigitalInterfaceState_2eproto__INCLUDED */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;

namespace Tango.Scripting.IDE.Controls
{
    
    /// <summary>
    /// The shared resource dictionary is a specialized resource dictionary
    /// that loads it content only once. If a second instance with the same source
    /// is created, it only merges the resources from the cache.
    /// </summary>
    public class SharedResourceDictionary : ResourceDictionary
    {
        /// <summary>
        /// Internal cache of loaded dictionaries 
        /// </summary>
        public static Dictionary<Uri, ResourceDictionary> _sharedDictionaries =
            new Dictionary<Uri, ResourceDictionary>();

        /// <summary>
        /// Local member of the source uri
        /// </summary>
        private Uri _sourceUri;

        /// <summary>
        /// Gets or sets the uniform resource identifier (URI) to load resources from.
        /// </summary>
        public new Uri Source
        {
            get { return _sourceUri; }
            set
            {
                _sourceUri = value;

                if (!_sharedDictionaries.ContainsKey(value))
                {
                    // If the dictionary is not yet loaded, load it by setting
                    // the source of the base class
                    base.Source = value;

                    // add it to the cache
                    _sharedDictionaries.Add(value, this);
                }
                else
                {
                    // If the dictionary is already loaded, get it from the cache
                    MergedDictionaries.Add(_sharedDictionaries[value]);
                }
            }
        }
    }
}