Example #1
0
 public OperatorData(
     string name,
     string group,
     string description,
     IClientData clientData,
     string typeName,
     Lexeme lexeme,
     int operands,
     TypeList types,
     OperatorFlags flags,
     IPlugin plugin,
     long token
     )
 {
     this.kind        = IdentifierKind.OperatorData;
     this.id          = AttributeOps.GetObjectId(this);
     this.name        = name;
     this.group       = group;
     this.description = description;
     this.clientData  = clientData;
     this.typeName    = typeName;
     this.lexeme      = lexeme;
     this.operands    = operands;
     this.types       = types;
     this.flags       = flags;
     this.plugin      = plugin;
     this.token       = token;
 }
Example #2
0
 public static bool Matches(this ExpressionType expressionType, OperatorFlags flags)
 {
     return((((flags & OperatorFlags.Addition) != 0) && expressionType.IsAddition()) ||
            (((flags & OperatorFlags.Arithmetic) != 0) && expressionType.IsArithmetic()) ||
            (((flags & OperatorFlags.Bitwise) != 0) && expressionType.IsBitwise()) ||
            (((flags & OperatorFlags.Comparison) != 0) && expressionType.IsComparison()) ||
            (((flags & OperatorFlags.Equality) != 0) && expressionType.IsEquality()) ||
            (((flags & OperatorFlags.Logical) != 0) && expressionType.IsLogical()) ||
            (((flags & OperatorFlags.Relational) != 0) && expressionType.IsRelational()) ||
            (((flags & OperatorFlags.Shift) != 0) && expressionType.IsShift()) ||
            (((flags & OperatorFlags.Subtraction) != 0) && expressionType.IsSubtraction()));
 }
Example #3
0
        ///////////////////////////////////////////////////////////////////////

        public static bool HasFlags(
            OperatorFlags flags,
            OperatorFlags hasFlags,
            bool all
            )
        {
            if (all)
            {
                return((flags & hasFlags) == hasFlags);
            }
            else
            {
                return((flags & hasFlags) != OperatorFlags.None);
            }
        }
Example #4
0
 public OperatorFlagsAttribute(OperatorFlags flags)
 {
     this.flags = flags;
 }
        ///////////////////////////////////////////////////////////////////////

        public ReturnCode ToList(
            OperatorFlags hasFlags,
            OperatorFlags notHasFlags,
            bool hasAll,
            bool notHasAll,
            string pattern,
            bool noCase,
            ref StringList list,
            ref Result error
            )
        {
            StringList inputList;

            //
            // NOTE: If no flags were supplied, we do not bother filtering on
            //       them.
            //
            if ((hasFlags == OperatorFlags.None) &&
                (notHasFlags == OperatorFlags.None))
            {
                inputList = new StringList();

                foreach (KeyValuePair <string, _Wrappers.Operator> pair in this)
                {
                    _Wrappers.Operator @operator = pair.Value;

                    if (@operator != null)
                    {
                        inputList.Add(StringList.MakeList(
                                          @operator.Lexeme.ToString(),
                                          @operator.Operands.ToString(),
                                          @operator.Flags.ToString(),
                                          pair.Key));
                    }
                }
            }
            else
            {
                inputList = new StringList();

                foreach (KeyValuePair <string, _Wrappers.Operator> pair in this)
                {
                    _Wrappers.Operator @operator = pair.Value;

                    if (@operator != null)
                    {
                        if (((hasFlags == OperatorFlags.None) ||
                             FlagOps.HasFlags(@operator.Flags,
                                              hasFlags, hasAll)) &&
                            ((notHasFlags == OperatorFlags.None) ||
                             !FlagOps.HasFlags(@operator.Flags,
                                               notHasFlags, notHasAll)))
                        {
                            inputList.Add(StringList.MakeList(
                                              @operator.Lexeme.ToString(),
                                              @operator.Operands.ToString(),
                                              @operator.Flags.ToString(),
                                              pair.Key));
                        }
                    }
                }
            }

            if (list == null)
            {
                list = new StringList();
            }

            return(GenericOps <string> .FilterList(
                       inputList, list, Index.Invalid, Index.Invalid,
                       ToStringFlags.None, pattern, noCase, ref error));
        }