예제 #1
0
        public string GetCollapsedName(bool collapseTypedef = true, bool withConst = true)
        {
            bool   valid = true;
            string result;

            if (ASTTraits.IsBuiltInType(TypeKind))
            {
                result = ASTTraits.ToString(TypeKind);
            }
            else if (ASTTraits.IsObject(TypeKind))
            {
                result = (Type as NativeClass).Name;
            }
            else if (ASTTraits.IsEnum(TypeKind))
            {
                result = (Type as Enumeration).Name;
            }
            else if (ASTTraits.IsPointer(TypeKind))
            {
                result = string.Format("{0} *", (Type as NativeType).CollapsedName);
            }
            else if (ASTTraits.IsLValueReference(TypeKind))
            {
                result = string.Format("{0} &", (Type as NativeType).CollapsedName);
            }
            else if (ASTTraits.IsRValueReference(TypeKind))
            {
                result = string.Format("{0} &&", (Type as NativeType).CollapsedName);
            }
            else if (ASTTraits.IsTypedef(TypeKind))
            {
                Debug.Assert(!IsConst);
                if (collapseTypedef)
                {
                    result = (Type as NativeType).CollapsedName;
                }
                else
                {
                    if (!withConst)
                    {
                        result = StringTools.RemoveFirstOf(TypeName, "const");
                    }
                    else
                    {
                        result = TypeName;
                    }
                }
            }
            else
            {
                valid  = false;
                result = "unknown";
            }

            if (valid && IsConst && withConst)
            {
                result += " const";
            }

            return(result);
        }
예제 #2
0
 public void SetBuiltin(BasicType type)
 {
     Debug.Assert(ASTTraits.IsBuiltInType(type));
     SetType(type, null);
 }