====== MANET Join Points ====== This page presents the join point hierarchy that is available through MANET. With this information, we know what chains of join points we can select in order to target specific points of interest in our programs. Any join point types that appear on the **Child Join Point** column but not on the **Join Point** column have their own join point type and cannot select any other join points. Any join point on the first column that has another join point underneath and between parentheses extends that join point. This means that it inherits all of its child join points, attributes and actions. For instance, //arrayAccess// extends //expression//. ^Join Point ^Child Join Point ^Alias ^Description ^ |program |file | | All files inside a program. | |file |pragma | | All pragmas inside a file. | |::: |header |first_header |The first header inclusion. | |::: |function | |All function inside the file. | |var |expression |index |All the expressions used as indeces if this variable use is a part of an array access. If it is not, then an empty list is returned. | |function |prototype |All declarations of this function. | |::: |declaration |param |All parameters of this function. | |::: |body | |The body of this function. This is everything enclosed by the function brackets ''{}''. | |prototype |declaration |param |All parameters of the declaration. | |body |declaration |first_decl |The first declaration found on the body. | |::: |declaration |decl |All declarations of the body. | |::: |declaration |last_decl |The last declaration found on the body. | |::: |statement |first_stmt |The first statement found on the body. | |::: |statement |stmt |All statements of the body. | |::: |statement |last_stmt |The last statement found on the body. | |::: |return | |All return statements of the body. | |::: |var | |All variable uses of the body. | |::: |loop | |All loops of the body. | |::: |assignment | |All assignments of the body. | |::: |call | |All calls of the body. | |::: |pragma | |All pragmas of the body. | |::: |if | |All //IF// statements of the body. | |::: |arrayAccess | |All array accesses of the body. | |loop |statement |init |The initial statement of the loop. | |::: |expression |cond |The stopping condition of the loop. | |::: |expression |step |The step expression that changes the control variable of the loop. | |::: |body | |The body of this loop. This is everything enclosed by the loop brackets ''{}''. | |assignment \\ (expression) |expression |lhs |The left hand side of the assignment. | |::: |expression |rhs |The right hand side of the assignment. | |call \\ (expression) |expression |arg |All the arguments of the function call. | |if |expression |cond |The condition of the //IF// statement. | |::: |body |then |The body of the //THEN// block. | |::: |body |else |The body of the //ELSE// block. | |statement |var | |All variable uses inside the statement. | |expression |var | |All variable uses inside the expression. | |::: |call | |All function calls inside the expression. | |binaryExpression \\ (expression) |expression |lhs |The left hand side of the binary expression. | |::: |expression |rhs |The right hand side of the binary expression. | |arrayAccess \\ (expression) |expression |index |All the expressions used as indices on the array access. |