public override bool VisitStmtPreDefineAbsolute([NotNull] GamaPreprocessorParser.StmtPreDefineAbsoluteContext context)
        {
            var name = context.Symbol().GetText();

            if (Defines.ContainsKey(name))
            {
                return(false);
            }
            Defines.Add(name, context.NonNewlineString().GetText());
            return(true);
        }
        public override bool VisitStmtPreDefineBool([NotNull] GamaPreprocessorParser.StmtPreDefineBoolContext context)
        {
            var name = context.Symbol().GetText();

            if (Defines.ContainsKey(name))
            {
                return(false);
            }
            Defines.Add(name, "");
            return(true);
        }
        public override bool VisitPreprocessorUndefStmt([NotNull] GamaPreprocessorParser.PreprocessorUndefStmtContext context)
        {
            var undef = context.preUndef();
            var name  = undef.Symbol().GetText();

            if (!Defines.ContainsKey(name))
            {
                return(false);
            }
            Defines.Remove(name);
            return(true);
        }
Example #4
0
        public void UnsetCppDefine(String undefineString)
        {
            if (!Defines.ContainsKey(undefineString))
            {
                return;
            }

            Define defineForRemoval = Defines[undefineString];

            SetOfDefines.Remove(defineForRemoval);
            Defines.Remove(undefineString);
        }
Example #5
0
        /// <summary>
        /// Apply a preprocessor define to a single source file.
        /// </summary>
        /// <param name="defineString">The whole define string without "-D",
        /// for instance, "_FORTIFY_SOURCE=2" or "FEATURE_WANTED".</param>
        public void SetCppDefine(String defineString)
        {
            Define newDefine = new Define(defineString);

            if (Defines.ContainsKey(newDefine.Name))
            {
                Define oldDefine = Defines[newDefine.Name];
                if (oldDefine.Value != newDefine.Value)
                {
                    Logger.WriteLine(LogLevel.Warning, $"'{newDefine.Name}' redefined from '' to '{newDefine.Value}'");
                }
                SetOfDefines.Remove(oldDefine);
            }

            Defines[newDefine.Name] = newDefine;
            SetOfDefines.Add(newDefine);
        }