예제 #1
0
        public MacroInfo(Symbol @namespace, LexicalMacroAttribute a, LexicalMacro macro, bool deprecateAllNames = false)
            : base(a.Syntax, a.Description, a.Names)
        {
            DeprecatedNames    = a.DeprecatedNames;
            DeprecationMessage = a.DeprecationMessage;

            if (Names.Length == 0 &&
                (a.DeprecatedNames == null || a.DeprecatedNames.Length == 0) &&
                (a.Mode & (MacroMode.MatchEveryCall | MacroMode.MatchEveryLiteral | MacroMode.MatchEveryIdentifier)) == 0)
            {
                Names = new string[1] {
                    macro.Method.Name
                }
            }
            ;

            if (deprecateAllNames)
            {
                DeprecatedNames = (DeprecatedNames ?? EmptyArray <string> .Value).Union(Names).ToArray();
            }

            CheckParam.IsNotNull("macro", macro);
            Namespace = @namespace;
            Macro     = macro;
            Mode      = a.Mode;
        }
예제 #2
0
		public MacroInfo(Symbol @namespace, LexicalMacroAttribute a, LexicalMacro macro)
			: base(a.Syntax, a.Description, a.Names != null && a.Names.Length > 0 ? a.Names : new[] { macro.Method.Name })
		{
			CheckParam.IsNotNull("macro", macro);
			Namespace = @namespace;
			Macro = macro;
			Mode = a.Mode;
		}
예제 #3
0
 public MacroInfo(Symbol @namespace, Symbol name, LexicalMacro macro, LexicalMacroAttribute info)
 {
     NamespaceSym = @namespace; Name = name; Macro = macro; Info = info;
     Mode         = info.Mode;
     if ((Mode & MacroMode.PriorityMask) == 0)
     {
         Mode |= MacroMode.NormalPriority;
     }
 }
예제 #4
0
파일: AliasMethod.cs 프로젝트: tspring/ioke
        public new static object ActivateFixed(IokeObject self, IokeObject ctx, IokeObject message, object obj)
        {
            AliasMethod am       = (AliasMethod)self.data;
            IokeObject  realSelf = am.realSelf;

            switch (am.realMethod.type)
            {
            case IokeData.TYPE_DEFAULT_METHOD:
                return(DefaultMethod.ActivateFixed(realSelf, ctx, message, obj));

            case IokeData.TYPE_DEFAULT_MACRO:
                return(DefaultMacro.ActivateFixed(realSelf, ctx, message, obj));

            case IokeData.TYPE_DEFAULT_SYNTAX:
                return(DefaultSyntax.ActivateFixed(realSelf, ctx, message, obj));

            case IokeData.TYPE_LEXICAL_MACRO:
                return(LexicalMacro.ActivateFixed(realSelf, ctx, message, obj));

            case IokeData.TYPE_NATIVE_METHOD:
                return(NativeMethod.ActivateFixed(realSelf, ctx, message, obj));

            case IokeData.TYPE_METHOD_PROTOTYPE:
                return(Method.ActivateFixed(realSelf, ctx, message, obj));

            case IokeData.TYPE_LEXICAL_BLOCK:
                return(LexicalBlock.ActivateFixed(realSelf, ctx, message, obj));

            case IokeData.TYPE_ALIAS_METHOD:
                return(AliasMethod.ActivateFixed(realSelf, ctx, message, obj));

            case IokeData.TYPE_NONE:
            default:
                return(IokeData.ActivateFixed(realSelf, ctx, message, obj));
            }
        }
예제 #5
0
 public MacroInfo(Symbol @namespace, string name, LexicalMacro macro)
     : this(@namespace, new LexicalMacroAttribute("", "", name), macro)
 {
 }
예제 #6
0
		public MacroInfo(Symbol @namespace, LexicalMacroAttribute a, LexicalMacro macro)
			: base(a.Syntax, a.Description, a.Names != null && a.Names.Length > 0 ? a.Names : new[] { macro.Method.Name })
		{
			CheckParam.IsNotNull("macro", macro);
			Namespace = @namespace;
			Macro = macro;
			Mode = a.Mode;
		}
예제 #7
0
		public MacroInfo(Symbol @namespace, string name, LexicalMacro macro) : this(@namespace, new LexicalMacroAttribute("", "", name), macro) { }