Пример #1
0
        public void Build()
        {
            foreach (INamedTypeSymbol symbol in GetSymbolsForNativeApi())
            {
                if (symbol.TypeKind == TypeKind.Enum)
                {
                    Enums.Add(symbol.Name, symbol);
                    continue;
                }
                if (IsRefCountedTypeSymbol(symbol))
                {
                    RefCounted.Add(symbol.Name, symbol);
                    continue;
                }
                if (IsScopedTypeSymbol(symbol))
                {
                    Scoped.Add(symbol.Name, symbol);
                    continue;
                }

                if (symbol.TypeKind != TypeKind.Struct)
                {
                    continue;
                }

                if (IsSizedStruct(symbol))
                {
                    Sized.Add(symbol.Name, symbol);
                    continue;
                }

                Simple.Add(symbol.Name, symbol);
            }
        }
Пример #2
0
        /// <summary>
        /// Initializes a new instance of <see cref="CefBaseRefCounted{T}"/>.
        /// </summary>
        public unsafe CefBaseRefCounted()
            : base(Allocate(sizeof(T)))
        {
            var reference = new RefCountedReference(new WeakReference <CefBaseRefCounted>(this));

            GlobalSyncRoot.EnterWriteLock();
            try
            {
                RefCounted.Add(_instance, reference);
            }
            finally
            {
                GlobalSyncRoot.ExitWriteLock();
            }
        }