de.fosd.typechef.typesystem

CType

case class CType(atype: AType, isObject: Boolean, isVolatile: Boolean, isConstant: Boolean) extends Product with Serializable

Missing from used formalization:

We omit the following features of C's type system: enumeration types, the type qualifiers const and volatile, bit-elds, and union types. Furthermore we do not allow functions to take variable numbers of arguments, and we also gloss over the typedef construct, assuming that this last facility is compiled out in such a way that occurrences of type identifiers are replaced with the type that they abbreviate.

Our treatment of functions and array types as function parameters is different from that in the standard. In the case of functions, the standard makes use of what it terms “pointers to functions”. These are essentially variables that can contain references to functions, where possible values are all of the program's dened functions. This is how we shall treat func tion references henceforth, stripping them of the confusing semantic baggage associated with pointers. (The language in the standard is continually having to make exceptions for pointers to functions in its description of operations on pointers. It is not possible to perform pointer arithmetic on function references, and dereferencing of function “pointers” is an idempotent operation.) This clarity of exposition will also be evident in the discussion of the dynamic semantics. We will discuss the nature of array types, and how our denition differs from that given in the standard in section 2.3 below.

Linear Supertypes
Serializable, Serializable, Product, Equals, AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. CType
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Instance Constructors

  1. new CType(atype: AType, isObject: Boolean, isVolatile: Boolean, isConstant: Boolean)

Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. def <(that: CType): Boolean

  5. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  6. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  7. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  8. val atype: AType

  9. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  10. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  11. def equals(that: Any): Boolean

    by default equals between two CTypes will only compare their ATypes (including the ATypes of nested CTypes)

    by default equals between two CTypes will only compare their ATypes (including the ATypes of nested CTypes)

    that is, equality checking does not care about const, volatile, and object. to check equality of two CTypes including these parameters use equalsCType

    Definition Classes
    CType → Equals → AnyRef → Any
  12. def equalsCType(that: CType): Boolean

    note, this check currently only checks the top-level CTypes for equality, but uses the AType equality for nested structures in CAnonymousStruct and CFunction

  13. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  14. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  15. def hashCode(): Int

    Definition Classes
    CType → AnyRef → Any
  16. val isConstant: Boolean

  17. def isFunction: Boolean

  18. def isIgnore: Boolean

  19. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  20. val isObject: Boolean

  21. def isUnknown: Boolean

  22. val isVolatile: Boolean

  23. def map(f: (AType) ⇒ AType): CType

  24. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  25. final def notify(): Unit

    Definition Classes
    AnyRef
  26. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  27. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  28. def toConst(newVal: Boolean = true): CType

  29. def toObj: CType

  30. def toText: String

  31. def toValue: CType

  32. def toValueLinker: CType

  33. def toVolatile(newVal: Boolean = true): CType

  34. def toXML: Elem

  35. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  36. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  37. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Serializable

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Ungrouped