mozilla
Your Search Results

    Dehydra Object Reference

    Introduction

    Dehydra represents C++ types and variables as JavaScript objects. The objects are designed to distill that type system to the minimum such that it can be easy to match on.

    Often, the best way to become familiar with the Dehydra objects is to print out the objects:

    Understanding Properties

    Dehydra only sets properties that are applicable. For example, class types and typedefs are declared and will have a .loc property. Intrinsic types such as "int" are not declared and will not have a .loc.

    Dehydra only sets boolean flags when they are true. For example, a pointer type will have .isPointer == true, but a class type will not have an .isPointer property.

    Common Properties

    Property Type Description
    .loc location object
    Source location of a type or declaration.
    .attributes array of objects
    Attributes of the type or declaration. Each member of the array has the following properties:
    {
      name: string,
      value: string or number, if applicable
    }
    
    See an example on enforcing final classes. Code can be annotated with arbitrary user attributes: __attribute__((user("customstring"))).

    Variable Objects

    Dehydra presents AST nodes as variables. These types are used to represent variables, functions, assignments, etc. The following properties are usually available:

    Property Type Description
    .name string
    The function or variable name.
    .type type object
    The type of this function or variable.
    .isStatic boolean flag
     
    .isReturn boolean flag The variable is being returned.
    .isDecl boolean flag
    The variable is being declared (local variables only).
    .assign array of variable objects
    This variable is the LHS of an assignment. The value is an array of values that were assigned.
    .isFcall boolean flag
    The variable is being used as a function call.
    .arguments array of variable objects
    Arguments used to make a function call.
    .parameters array of variable objects
    A function definition's parameter names and types
    .memberOf aggregate type object
    Indicates the aggregate type(class/struct) in the type system that this variable is a member of.
    .fieldOf variable object
    Provides the object being dereferenced, in the AST system. Applicable when accessing member variables or nonstatic member functions of aggregate types, e.g. the "foo" variable would be a .fieldOf memberVar/Fn in foo->memberVar or foo->memberFn(). Note that when constructing the return value of a function (e.g. return T();), no container variable is available; in this case, .isReturn will be true (see Function Variable).

    Variables can identified by their DehydraDecl() prototype.

    Function Variable

    Function objects are an extension of Variable Objects. The following additional properties are available on functions:

    Property Type Description
    .isVirtual true or "pure"
    true for virtual methods, or "pure" for pure virtuals (e.g. virtual void foo() = 0;).
    .isConstructor boolean flag
    Constructors generally have a .fieldOf attribute (see Variable Objects).
    .isFunction boolean flag true for function variables.

    Type Objects

    Dehydra provides detailed type objects. Dehydra Type objects use the DehydraType() prototype.

    Common Type Properties

    Property Type Description
    .name string
    If applicable, the name of of the type. For typedefs and classes, this is the declared name. For built-in types this is the standard name such as "int". Some types such as bitfields may not have names.
    .typedef
    type object
    If this is a typedef, the original type.
    .isConst
    boolean flag
     
    .isVolatile
    boolean flag
     
    .variantOf
    type object
    "const int" and "int" are separate types in GCC; the const version is considered a variant of the normal version. The variantOf property allows access to the original type object.
    .hasDefault
    boolean flag
    Applicable to function parameters only. Indicates whether the parameter has a default value, e.g. void foo(int i = 42).

    Aggregate Types (class/struct/union/enum)

    This type object represents aggregate types in GCC.

    Property Type Description
    .kind string
    One of "class", "struct", "union", or "enum".
    .isIncomplete boolean flag
    the type was forward-declared and the full declaration has not been processed.
    .bases array of objects
    Inheritance information about the class. Each member of the array has the following properties:
    {
      access: 'public' | 'protected' | 'private',
      type: type object representing the base class
    }
    
    .members array of variable objects
    An array containing all the member variables and methods. Note: the .members will not include static member functions.
    .template template object
    The template from which this class was instantiated, if applicable.

    Pointer and Reference Types

    Property Type Description
    .isPointer boolean flag
     
    .isReference boolean flag
     
    .type type object
    The type this points to or references

    Array Type

    Property Type Description
    .isArray boolean flag
     
    .max integer
    or normal fixed-size arrays, the index of the largest element of the array. For example, an int[10] would have .max = 9
    .variableLength boolean flag
    true if the type represents a C99 variable-length array type

    Number Type

    Property Type Description
    .precision integer
    for floating-point types, the precision of the type
    .min integer
    for integer types, the minimum value capable of being stored
    .max integer
    for integer types, the maximum value capable of being stored
    .isSigned boolean flag
    for integer types, true if the type stores signed values
    .isUnsigned boolean flag
    for integer types, true if the type stores unsigned values
    .bitfieldBits integer
    if the type represents a bitfield, the number of bits used by the bitfield
    .bitfieldOf number type object
    if the type represents a bitfield, the base type of the bitfield.

    Function Type

    These represent the types functions and methods in the type system:

    Property Type Description
    .type type object
    the function return type.
    .parameters array of type objects
    the parameter types for the function.
    .isExplicit boolean flag true for constructors declared using the C++ explicit keyword

    Template Objects

    Property Type Description
    .name string
    the name of the template, for example "nsCOMPtr".
    .arguments array
    an array where arguments are either strings representing C++ constants or type objects.

    Location Objects

    Location objects are passed to builtin functions such as warning() and error() to specify the location of the message. They convert to a string of the form "file:line:column". They have the following properties:

    Property Type
    .file string
    .line integer
    .column integer (optional)

    Document Tags and Contributors

    Last updated by: Sheppy,
    Hide Sidebar