private bool EqualsDefinedCore(NativeDefinedType left, NativeDefinedType right)
        {
            if (left.IsAnonymous && right.IsAnonymous)
            {
                // don't compare names when both types are anonymous
            }
            else if (0 != string.CompareOrdinal(left.Name, right.Name))
            {
                return(false);
            }

            // If this is an enum, compare the values
            if (left.Kind == NativeSymbolKind.EnumType)
            {
                NativeEnum leftEnum  = (NativeEnum)left;
                NativeEnum rightEnum = (NativeEnum)right;

                if (rightEnum.Values.Count != leftEnum.Values.Count)
                {
                    return(false);
                }

                for (int i = 0; i <= leftEnum.Values.Count - 1; i++)
                {
                    NativeEnumValue e1 = leftEnum.Values[i];
                    NativeEnumValue e2 = rightEnum.Values[i];

                    if (0 != string.CompareOrdinal(e1.Name, e2.Name) || 0 != string.CompareOrdinal(e1.Value.Expression, e2.Value.Expression))
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
Ejemplo n.º 2
0
 public NativeGlobalSymbol(NativeEnumValue value) : this(value.NativeName, value)
 {
 }
Ejemplo n.º 3
0
        public static bool TryGetEnumByValueName(this INativeSymbolLookup lookup, string enumValueName, out NativeEnum enumeration, out NativeEnumValue value)
        {
            if (!lookup.TryGetGlobalSymbol(new NativeName(enumValueName, NativeNameKind.EnumValue), out value))
            {
                enumeration = null;
                return(false);
            }

            return(lookup.TryGetGlobalSymbol(
                       new NativeName(value.EnumName, NativeNameKind.Enum),
                       out enumeration));
        }