예제 #1
0
        public void PrintQuals(OutputStream sb)
        {
            if (quals.HasFlag(Qualifiers.Const))
            {
                sb.Append(" const");
            }

            if (quals.HasFlag(Qualifiers.Volatile))
            {
                sb.Append(" volatile");
            }

            if (quals.HasFlag(Qualifiers.Restrict))
            {
                sb.Append(" restrict");
            }
        }
예제 #2
0
        public override void PrintRight(OutputStream sb)
        {
            sb.Append('(');
            fparams.PrintWithComma(sb);
            sb.Append(')');

            ret.PrintRight(sb);

            if (cvQuals.HasFlag(Qualifiers.Const))
            {
                sb.Append(" const");
            }

            if (cvQuals.HasFlag(Qualifiers.Volatile))
            {
                sb.Append(" volatile");
            }

            if (cvQuals.HasFlag(Qualifiers.Restrict))
            {
                sb.Append(" restrict");
            }

            switch (refQual)
            {
            case FunctionRefQual.LValue:
                sb.Append(" &");
                break;

            case FunctionRefQual.RValue:
                sb.Append(" &&");
                break;
            }

            if (exceptionSpec != null)
            {
                sb.Append(' ');
                exceptionSpec.Print(sb);
            }
        }
예제 #3
0
        public override void PrintRight(OutputStream sb)
        {
            sb.Append('(');
            Params.PrintWithComma(sb);
            sb.Append(')');
            if (ReturnType != null)
            {
                ReturnType.PrintRight(sb);
            }

            if (CVQuals.HasFlag(Qualifiers.Const))
            {
                sb.Append(" const");
            }
            if (CVQuals.HasFlag(Qualifiers.Volatile))
            {
                sb.Append(" volatile");
            }
            if (CVQuals.HasFlag(Qualifiers.Restrict))
            {
                sb.Append(" restrict");
            }

            if (RefQual.HasFlag(FunctionRefQual.LValue))
            {
                sb.Append(" &");
            }
            else if (RefQual.HasFlag(FunctionRefQual.RValue))
            {
                sb.Append(" &&");
            }

            if (attrs != null)
            {
                attrs.Print(sb);
            }
        }
예제 #4
0
        public bool OutputQualifierIfPresent(OutputStream os, Qualifiers Q, Qualifiers Mask, bool needSpace)
        {
            if (!(Q.HasFlag(Mask)))
            {
                return(needSpace);
            }

            if (needSpace)
            {
                os.Append(' ');
            }

            OutputSingleQualifier(os, Mask);
            return(true);
        }