diff --git a/Clava-JS/src-api/Joinpoints.ts b/Clava-JS/src-api/Joinpoints.ts index ca3c4e9b0..a56bd50da 100644 --- a/Clava-JS/src-api/Joinpoints.ts +++ b/Clava-JS/src-api/Joinpoints.ts @@ -2077,6 +2077,7 @@ export class LabelDecl extends NamedDecl { static readonly _defaultAttributeInfo: {readonly map?: DefaultAttributeMap, readonly name: string | null, readonly type?: PrivateMapper, readonly jpMapper?: typeof JoinpointMapper} = { name: "name", }; + get labelStmt(): LabelStmt { return wrapJoinPoint(this._javaObject.getLabelStmt()) } } export class LabelStmt extends Statement { diff --git a/ClavaWeaver/resources/clava/weaverspecs/artifacts.xml b/ClavaWeaver/resources/clava/weaverspecs/artifacts.xml index 202de745d..8ef4655bc 100644 --- a/ClavaWeaver/resources/clava/weaverspecs/artifacts.xml +++ b/ClavaWeaver/resources/clava/weaverspecs/artifacts.xml @@ -9,169 +9,169 @@ https://docs.google.com/document/d/1uPrvuVBXHSbjDTfehpEeLDz9hgIr8EuJJJvBc5A70rs/ + tooltip="Returns the 'program' joinpoint"/> + tooltip="Returns the parent node in the AST, or undefined if it is the root node"/> - + tooltip="Looks for an ancestor joinpoint name, walking back on the AST"> + + tooltip="Retrieves all descendants of the join point"/> - + tooltip="Retrieves the descendants of the given type"> + - + tooltip="Retrieves the descendants of the given type, including the node itself"> + - + tooltip="Looks for an ancestor joinpoint name, walking back on the joinpoint chain"> + - + tooltip="[DEPRECATED: Looks for an ancestor AST name, walking back on the AST]"> + - + tooltip="true if the given node is a descendant of this node"> + - + - + tooltip="Looks in the descendants for the first node of the given type"> + + tooltip="The starting line of the current node in the original code"/> + tooltip="The starting column of the current node in the original code"/> + tooltip="The ending line of the current node in the original code"/> + tooltip="The ending column of the current node in the original code"/> + tooltip="A string with information about the file and code position of this node, if available"/> + tooltip="The name of the file where the code of this node is located, if available"/> - + tooltip="the complete path to the file where the code of this node comes from"/> + - + tooltip="String with a dump of the AST representation starting from this node. This representation corresponds to the internal Java representation of the ClavaAst, where the node names correspond to Java classes. To get an equivalent representation with join point names, use the attribute 'dump'"/> + - + - + + tooltip="The bit width of the type returned by this join point, in relation to the definitions of its Translation Unit, or undefined if there is no type or bitwidth defined, or if the join point is not in a TranslationUnit"/> + tooltip="The name of the Java class of this node, which is similar to the equivalent node in Clang AST"/> + tooltip="Returns the number of children of the node, considering null nodes"/> + tooltip="Returns an array with the children of the node, considering null nodes"/> - + tooltip="Returns the child of the node at the given index, considering null nodes"> + + tooltip="Returns the number of children of the node, ignoring null nodes"/> + tooltip="Returns an array with the children of the node, ignoring null nodes"/> - + tooltip="Returns the child of the node at the given index, ignoring null nodes"> + + tooltip="Returns an array with the siblings that came before this node"/> + tooltip="Returns an array with the siblings that come after this node"/> + tooltip="Returns the node that came before this node, or undefined if there is none"/> + tooltip="Returns the node that comes after this node, or undefined if there is none"/> - + tooltip="true, if this node is a Java instance of the given name, which corresponds to a simple Java class name of an AST node. For an equivalent function for join point names, use 'instanceOf(joinPointName)'"> + - + tooltip="true, if the given join point or AST node is the same (== test) as the current join point AST node"> + + tooltip="String list of the names of the join points that form a path from the root to this node"/> + tooltip="[DEPRECATED: used attribute 'keys' instead, together with 'getValue'] The names of the Java fields of this node. Can be used as key of the attribute 'javaValue'"/> - + tooltip="String with the full Java class name of the type of the Java field with the provided name"> + + tooltip="true, if the join point is inside a loop header (e.g., for, while)"/> + tooltip="true, if the join point is inside a header (e.g., if condition, for, while)"/> + tooltip="true, if the join point is part of a system header file"/> - + tooltip="Retrives values that have been associated to nodes of the AST with 'setUserField'"> + + tooltip="Returns the node that declares the scope that is a parent of the scope of this node"/> - + tooltip="Returns the node that declares the scope of this node"/> + - + tooltip="JS object associated with this node, containing parsed data of #pragma clava data when the node can be a target of pragmas. This is a special object, managed internally, and cannot be reassigned, to change its contents requires using key-value pairs. If the node can be the target of a pragma, the information stored in this object is persisted between rebuilds."> + - - + tooltip="A list of the properties currently supported by this node. Can be used as parameter of the attribute 'getValue'"/> + + - + tooltip="Java Class instance with the type of the given key"> + + tooltip="true if any descendant or the node itself was defined as a macro"> - + tooltip="Returns the first child of this node, or undefined if it has no child"> + - + tooltip="Returns the last child of this node, or undefined if it has no child"> + + tooltip="true if the node has children, false otherwise"> + tooltip="true if this is a Cilk node (i.e., cilk_spawn, cilk_sync or cilk_for)"> + tooltip="the depth of this join point in the AST. If it is the root join point returns 0, if it is a child of the root node returns 1, etc."> + tooltip="Id that is based on the position of the node in the code, and should remain stable between compilations (warning: only a few nodes - file, function, loop - currently support it)"> + tooltip="the nodes of the scope of the current join point. If this node has a body (e.g., loop, function) corresponds to the children of the body. Otherwise, returns an empty array"> + tooltip="Converts this join point to a statement, or returns undefined if it was not possible"/> + tooltip="Returns comments that are not explicitly in the AST, but embedded in other nodes"> - - + + @@ -181,82 +181,82 @@ https://docs.google.com/document/d/1uPrvuVBXHSbjDTfehpEeLDz9hgIr8EuJJJvBc5A70rs/ - - - + + + - + + tooltip="true if the program was compiled with a C++ standard"/> + tooltip="The name of the standard (e.g., c99, c++11)"/> - - - - - + tooltip="The flag of the standard (e.g., -std=c++11)"/> + + + + + + tooltip="paths to sources that the current program depends on"/> + tooltip="paths to includes that the current program depends on"/> + tooltip="paths to folders of projects that the current program depends on"/> + tooltip="link libraries of external projects the current program depends on"/> - + tooltip="a function join point with the main function of the program, if one is available"/> + - + + tooltip="a Java file to the file that originated this translation unit"/> + tooltip="true if this file contains a 'main' method"/> - + + tooltip="the path to the file relative to the base source path"/> - + tooltip="the path to the folder of the source file relative to the base source path"> + - + tooltip="the path to the source folder that was given as the base folder of this file"/> + - + tooltip="true if this file is considered a header file"/> + - + tooltip="the complete path to the file that will be generated by the weaver, given a destination folder"> + + tooltip="the name of the source folder of this file, or undefined if it has none"/> + tooltip="true if there were errors during parsing"/> - + tooltip="the output of the parser if there were errors during parsing"/> + - + + tooltip="true if this is an angled include (i.e., system include)"/> + tooltip="the path to the folder of the source file of the include, relative to the name of the include"/> @@ -266,42 +266,42 @@ https://docs.google.com/document/d/1uPrvuVBXHSbjDTfehpEeLDz9hgIr8EuJJJvBc5A70rs/ --> - + - - + + + tooltip="true if this particular join point is an implementation (i.e. has its body fully specified), false otherwise"/> + tooltip="true if this particular join point is a prototype (i.e. does not have its body fully specified), false otherwise"/> - + + tooltip="The classes this class directly inherits from"/> - + tooltip="All the methods of this class, including inherited ones"/> + - + tooltip="True, if contains at least one pure function"/> + + tooltip="The prototypes (or declarations) of this class present in the AST, if any"/> + tooltip="The implementation (or definition) of this class present in the AST, or undefined if none is found"/> + tooltip="Class join points can either represent declarations or definitions, returns the definition of this class, if present, or the first declaration, if only declarations are present"/> + tooltip="true if this is the class returned by the 'canonical' attribute"/> - + + tooltip="The attributes (e.g. Pure, CUDAGlobal) associated to this decl"/> - + - + - + - + @@ -337,48 +337,52 @@ https://docs.google.com/document/d/1uPrvuVBXHSbjDTfehpEeLDz9hgIr8EuJJJvBc5A70rs/ - + + + + + - - - - - - - + + + + + + + - - + + - - + + - + tooltip="Tests whether the loops are interchangeable. This is a conservative test."> + - + - + tooltip="The expression of the first value of the control variable (e.g. '0' in 'size_t i = 0;')"> + - - + + - + tooltip="The expression of the last value of the control variable (e.g. 'length' in 'i < length;')"/> + + tooltip="True if the condition of the loop in the canonical format, and is one of: <, <=, >, >="/> - + - + @@ -386,32 +390,32 @@ https://docs.google.com/document/d/1uPrvuVBXHSbjDTfehpEeLDz9hgIr8EuJJJvBc5A70rs/ - + tooltip="The number of statements in the scope, including the statements inside the declaration and bodies of structures such as ifs and loops, and not considering comments and pragmas. If flat is true, does not consider the statements inside structures such as ifs and loops (e.g., a loop counts as one statement)"> + - + tooltip="true if the scope does not have curly braces"> + + tooltip="Returns the direct (children) statements of this scope"/> - - + tooltip="Returns the descendant statements of this scope, excluding other scopes, loops, ifs and wrapper statements"/> + + + tooltip="The statement that owns the scope (e.g., function, loop...)"/> + tooltip="The expression join point associated to this exprStmt"/> - + @@ -423,59 +427,59 @@ https://docs.google.com/document/d/1uPrvuVBXHSbjDTfehpEeLDz9hgIr8EuJJJvBc5A70rs/ - - + tooltip="a 'decl' join point that represents the declaration associated with this expression, or undefined if there is none"/> + + + tooltip="true if the expression is part of an argument of a function call"/> + tooltip="returns a cast joinpoint if this expression has an associated implicit cast, undefined otherwise"/> - + - - + + + tooltip="a 'function' join point that represents the function of the call that was found, it can return either an implementation or a function prototype; 'undefined' if no declaration was found"/> - - + tooltip="a 'function' join point that represents the function definition of the call; 'undefined' if no definition was found"/> + + - + - + - - - + tooltip="the function type of the call, which includes the return type and the types of the parameters"/> + + + + tooltip="a function join point associated with this call. If a definition is present, it is given priority over returning a declaration. If only declarations are present, returns a declaration"/> + tooltip="similar to $function.signature, but if no function decl could be found (e.g., function from system include), returns a signature based on just the name of the function"/> + tooltip="a function join point that represents the 'raw' function of the call (e.g. if this is a call to a templated function, returns a declaration representing the template specialization, instead of the original function)"/> - - + + - + @@ -483,194 +487,195 @@ https://docs.google.com/document/d/1uPrvuVBXHSbjDTfehpEeLDz9hgIr8EuJJJvBc5A70rs/ + tooltip="true, if vardecl has an initialization value"/> + tooltip="If vardecl has an initialization value, returns an expression with that value"/> - + tooltip="The initialization style of this vardecl, which can be no_init, cinit, callinit, listinit"/> + - + tooltip="Storage class specifier, which can be none, extern, static, __private_extern__, auto, register"> + + tooltip="true, if this variable does not have local storage. This includes all global variables as well as static variables declared within a function."/> + tooltip="The vardecl corresponding to the actual definition. For global variables, returns the vardecl of the file where it is actually defined (instead of the vardecl that defines an external link to the variable)"/> + tooltip="the type of specifier. Can return 'public', 'protected', 'private' or 'none'"/> - + - + + tooltip="expression from where the attribute 'use' is calculated. In certain cases (e.g., array access, pointer dereference) the 'use' attribute is not calculated on the node itself, but on an ancestor of the node. This attribute returns that node"/> - + tooltip="true if this varref represents a function call"/> + + tooltip="if this variable reference has a MS-style property, returns the property name. Returns undefined otherwise"/> + tooltip="true if this variable reference has a MS-style property, false otherwise"/> - + - - - - + + + + + tooltip="[DEPRECATED: Use .isImplementation instead] True if this particular function join point has a body, false otherwise"/> + tooltip="true if this particular function join point is an implementation (i.e. has a body), false otherwise"/> + tooltip="true if this particular function join point is a prototype (i.e. does not have a body), false otherwise"/> - + tooltip="the type of the call, which includes the return type and the types of the parameters"> + + tooltip="Returns the first prototype of this function that could be found, or undefined if there is none"/> + tooltip="Returns the prototypes of this function that are present in the code. If there are none, returns an empty array"/> + tooltip="Returns the implementation of this function if there is one, or undefined otherwise"/> - + - + - + - - - - - - - - - - - + + + + + + + + + + + + tooltip="a string with the signature of this function (e.g., name of the function, plus the parameters types)"/> - + - + + tooltip="Function join points can either represent declarations or definitions, returns the definition of this function, if present, or the first declaration, if only declarations are present"/> + tooltip="true, if this is the function returned by the 'canonical' attribute"/> - + - + - + - + - + - + + tooltip="The enclosing statement related to this break. It should be either a loop or a switch statement."/> + tooltip="true if there is a default case in this switch statement, false otherwise"/> - + tooltip="the default case statement of this switch statement or undefined if it does not have a default case"/> + + tooltip="the condition of this switch statement"/> + tooltip="true if this is a default case, false otherwise"/> + tooltip="true if this case does not contain instructions (i.e., it is directly above another case), false otherwise"/> + tooltip="the first statement that is not a case that will be executed by this case statement"/> + tooltip="the instructions that are associated with this case in the source code. This does not represent what instructions are actually executed (e.g., if a case does not have a break, does not show instructions of the next case)"/> + tooltip="the case statement that comes after this case, or undefined if there are no more case statements"/> + tooltip="the values that the case statement will match. It can return zero (e.g., 'default:'), one (e.g., 'case 1:') or two (e.g., 'case 2...4:') expressions, depending on the format of the case"/> - - + + - - + + + tooltip="The name of the pragma. E.g. for #pragma foo bar, returns 'foo'"/> + tooltip="The first node below the pragma that is not a comment or another pragma. Example of pragma targets are statements and declarations"/> + tooltip="Everything that is after the name of the pragma"/> - + tooltip="All the nodes below the target node, including the target node, up until a pragma with the name given by argument 'endPragma'. If no end pragma is found, returns the same result as if not providing the argument"> + @@ -683,53 +688,53 @@ https://docs.google.com/document/d/1uPrvuVBXHSbjDTfehpEeLDz9hgIr8EuJJJvBc5A70rs/ - + + tooltip="A scope, associated with this marker"/> - + - + - + tooltip="The kind of the operator. If it is a binary operator, can be one of: ptr_mem_d, ptr_mem_i, mul, div, rem, add, sub, shl, shr, cmp, lt, gt, le, ge, eq, ne, and, xor, or, l_and, l_or, assign, mul_assign, div_assign, rem_assign, add_assign, sub_assign, shl_assign, shr_assign, and_assign, xor_assign, or_assign, comma. If it is a unary operator, can be one of: post_inc, post_dec, pre_inc, pre_dec, addr_of, deref, plus, minus, not, l_not, real, imag, extension, cowait."/> + - + - + - + - - + + - + - + - + @@ -737,56 +742,56 @@ https://docs.google.com/document/d/1uPrvuVBXHSbjDTfehpEeLDz9hgIr8EuJJJvBc5A70rs/ - - - + tooltip="[DEPRECATED: Use expr.implicitCast instead]"/> + + + + tooltip="Returns the expression inside this parenthesis expression"/> + tooltip="expression representing the variable of the array access (can be a varref, memberAccess...)"/> + tooltip="expression of the array access subscript"/> + tooltip="A view of the current arrayAccess without the last subscript, or undefined if this arrayAccess only has one subscript"/> + tooltip="The number of subscripts of this array access"/> + tooltip="If the array access is done over a variable, returns the name of the variable. Equivalent to $arrayAccess.arrayVar.name"/> - - - + + + + tooltip="expression of the base of this member access"/> - + tooltip="true if this is a member access that uses arrow (i.e., foo->bar), false if uses dot (i.e., foo.bar)"> + - - - + + + - + - + @@ -796,29 +801,29 @@ https://docs.google.com/document/d/1uPrvuVBXHSbjDTfehpEeLDz9hgIr8EuJJJvBc5A70rs/ - + - + - + - + - + @@ -826,138 +831,138 @@ https://docs.google.com/document/d/1uPrvuVBXHSbjDTfehpEeLDz9hgIr8EuJJJvBc5A70rs/ - - - - + + + + - - + tooltip="True if this is a type declared with the 'auto' keyword"/> + + - - + + - + - + - + tooltip="Single-step desugar. Returns the type itself if it does not have sugar"> + - - - + + + - + tooltip="If the type encapsulates another type, returns the encapsulated type"/> + + tooltip="Maps names of join point fields that represent type join points, to their respective values"/> + tooltip="A tree representation of the fields of this type"/> - + + tooltip="Number of pointer levels from this pointer"/> - + - + - + + tooltip="a 'decl' join point that represents the declaration of this tag type"/> - + - - - - + + + + - + - + - - + + - - + + - + tooltip="true, if ot is a floating type (e.g., float, double)"/> + - + tooltip="true, if it is an unsigned integer type"/> + - + - + + tooltip="the keyword of this elaborated type, if present. Can be one of: struct, interface, union, class, enum, typename"/> + tooltip="the qualifier of this elaborated type, if present (e.g., A::)"/> + tooltip="the type that is being prefixed with the qualifier"/> - + tooltip="the typedef declaration associated with this typedef type"/> + @@ -965,74 +970,74 @@ https://docs.google.com/document/d/1uPrvuVBXHSbjDTfehpEeLDz9hgIr8EuJJJvBc5A70rs/ - + - + tooltip="An integer expression, or undefined if no 'num_threads' clause is defined"> + - + tooltip="One of 'master', 'close' or 'spread', or undefined if no 'proc_bind' clause is defined"> + + tooltip="The variable names of all private clauses, or empty array if no private clause is defined"/> - + tooltip="True if the directive has at least one clause of the given clause kind, false otherwise"> + - + tooltip="True if it is legal to use the given clause kind in this directive, false otherwise"> + + tooltip="The names of the kinds of all clauses in the pragma, or empty array if no clause is defined"/> - + tooltip="The variable names for the given reduction kind, or empty array if no reduction of that kind is defined"> + + tooltip="The reduction kinds in the reductions clauses of the this pragma, or empty array if no reduction is defined"/> + tooltip="One of 'shared' or 'none', or undefined if no 'default' clause is defined"/> + tooltip="The variable names of all firstprivate clauses, or empty array if no firstprivate clause is defined"/> + tooltip="The variable names of all lastprivate clauses, or empty array if no lastprivate clause is defined"/> + tooltip="The variable names of all shared clauses, or empty array if no shared clause is defined"/> + tooltip="The variable names of all copyin clauses, or empty array if no copyin clause is defined"/> + tooltip="One of 'static', 'dynamic', 'guided', 'auto' or 'runtime', or undefined if no 'schedule' clause is defined"/> + tooltip="An integer expression, or undefined if no 'schedule' clause with chunk size is defined"/> + tooltip="A list with possible values of 'monotonic', 'nonmonotonic' or 'simd', or undefined if no 'schedule' clause with modifiers is defined"/> + tooltip="An integer expression, or undefined if no 'collapse' clause is defined"/> + tooltip="An integer expression, or undefined if no 'ordered' clause with a parameter is defined"/> - - - - - - + + + + + + - - - - - - + + + + + +