---
name: "globus_rsl_value_is_variable"
section: "3"
platform: "linux"
package: "libglobus-rsl-doc"
version: "11.4-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/globus_rsl_predicates"
---

# globus\_rsl\_value\_is\_variable(3)

RSL Predicates - RSL Predicates.

Part of [globus\_rsl\_predicates(3)](/globus_rsl_predicates/3.md).

## NAME

globus\_rsl\_predicates - RSL Predicates

 \- RSL Predicates.

## SYNOPSIS

### Functions

int **globus\_rsl\_is\_relation** (globus\_rsl\_t \*ast)\
 RSL relation test.  int **globus\_rsl\_is\_boolean** (globus\_rsl\_t \*ast)\
 RSL boolean test.  int **globus\_rsl\_is\_relation\_eq** (globus\_rsl\_t \*ast)\
 RSL equality operation test.  int **globus\_rsl\_is\_relation\_lessthan** (globus\_rsl\_t \*ast)\
 RSL less than operation test.  int **globus\_rsl\_is\_relation\_attribute\_equal** (globus\_rsl\_t \*ast, char \*attribute)\
 RSL attribute name test.  int **globus\_rsl\_is\_boolean\_and** (globus\_rsl\_t \*ast)\
 RSL boolean and test.  int **globus\_rsl\_is\_boolean\_or** (globus\_rsl\_t \*ast)\
 RSL boolean or test.  int **globus\_rsl\_is\_boolean\_multi** (globus\_rsl\_t \*ast)\
 RSL boolean multi test.  int **globus\_rsl\_value\_is\_literal** (globus\_rsl\_value\_t \*ast)\
 RSL literal string test.  int **globus\_rsl\_value\_is\_sequence** (globus\_rsl\_value\_t \*ast)\
 RSL value sequence test.  int **globus\_rsl\_value\_is\_variable** (globus\_rsl\_value\_t \*ast)\
 RSL value variable test.  int **globus\_rsl\_value\_is\_concatenation** (globus\_rsl\_value\_t \*ast)\
 RSL value concatenation test.

## Detailed Description

RSL Predicates.

The functions in this group return boolean values indicating whether an RSL syntax tree is of a particular type.

## Function Documentation

### int globus\_rsl\_is\_boolean (globus\_rsl\_t \* ast)

RSL boolean test. The **globus\_rsl\_is\_boolean()** function tests whether the the RSL pointed to by the *ast* parameter is a boolean composition of other RSL parse trees. The syntactically understood boolean compositions are '&' (conjunction), '\|' (disjunction), and '+' (multi-request). Some bexamples of RSL booleans are

```
& ( "queue" = "debug") ( "max_time" = "10000")
| ("count" = "1")("count" = "10")
+ ( &("executable" = "1.exe") ) ( & ("executable" = "2.exe" )
```

**Parameters**

*ast* Pointer to an RSL parse tree structure.

**Returns**

The **globus\_rsl\_is\_boolean()** function returns GLOBUS\_TRUE if the RSL parse tree pointed to by *ast* is a boolean composition; otherwise, it returns GLOBUS\_FALSE.

### int globus\_rsl\_is\_boolean\_and (globus\_rsl\_t \* ast)

RSL boolean and test. The **globus\_rsl\_is\_boolean\_and()** function tests whether the the RSL pointed to by the *ast* parameter is a boolean 'and' composition of RSL trees.

An example of a boolean and relation is

```
& ( "queue" = "debug" ) ( "executable" = "a.out" )
```

**Parameters**

*ast* Pointer to an RSL parse tree structure.

**Returns**

The **globus\_rsl\_is\_boolean\_and()** function returns GLOBUS\_TRUE if the RSL parse tree pointed to by *ast* is a boolean and of RSL parse trees; otherwise, it returns GLOBUS\_FALSE.

### int globus\_rsl\_is\_boolean\_multi (globus\_rsl\_t \* ast)

RSL boolean multi test. The **globus\_rsl\_is\_boolean\_multi()** function tests whether the the RSL pointed to by the *ast* parameter is a boolean 'multi-request' composition of RSL trees.

An example of a boolean multie-request relation is

```
+ ( &( "executable" = "exe.1") ( "count" = "2" ) )
  ( &( "executable" =" exe.2") ( "count" = "2" ) )
```

**Parameters**

*ast* Pointer to an RSL parse tree structure.

**Returns**

The **globus\_rsl\_is\_boolean\_multi()** function returns GLOBUS\_TRUE if the RSL parse tree pointed to by *ast* is a boolean multi-request of RSL parse trees; otherwise, it returns GLOBUS\_FALSE.

### int globus\_rsl\_is\_boolean\_or (globus\_rsl\_t \* ast)

RSL boolean or test. The **globus\_rsl\_is\_boolean\_or()** function tests whether the the RSL pointed to by the *ast* parameter is a boolean 'or' composition of RSL trees.

An example of a boolean or relation is

```
| ( "count" = "2" ) ( "count" = "4" )
```

**Parameters**

*ast* Pointer to an RSL parse tree structure.

**Returns**

The **globus\_rsl\_is\_boolean\_or()** function returns GLOBUS\_TRUE if the RSL parse tree pointed to by *ast* is a boolean and of RSL parse trees; otherwise, it returns GLOBUS\_FALSE.

### int globus\_rsl\_is\_relation (globus\_rsl\_t \* ast)

RSL relation test. The **globus\_rsl\_is\_relation()** function tests whether the the RSL pointed to by the *ast* parameter is a relation. The RSL syntax supports the following relation operations:

- **=**

  Equal

- **!=**

  Not Equal

- **\>**

  Greater Than

- **\>=**

  Greater Than or Equal

- **\<**

  Less Than

- **\<=**

  Less Than or Equal

- **\<=**

  Less Than or Equal

Some examples of RSL relations are

```
"queue" = "debug"
"queue" != "slow"
"min_memory" > "1000"
"max_wall_time" >= "60"
"count < "10"
"host_count" <= "5"
```

**Note**

GRAM only supports equality relations.

**Parameters**

*ast* Pointer to an RSL parse tree structure.

**Returns**

The **globus\_rsl\_is\_relation()** function returns GLOBUS\_TRUE if the RSL parse tree pointed to by *ast* is a relation; otherwise, it returns GLOBUS\_FALSE.

### int globus\_rsl\_is\_relation\_attribute\_equal (globus\_rsl\_t \* ast, char \* attribute)

RSL attribute name test. The **globus\_rsl\_is\_relation\_attribute\_equal()** function tests whether the the RSL pointed to by the *ast* parameter is a relation with the attribute name which matches the string pointed to by the *attribute* parameter. This attribute name comparison is case-insensitive.

**Parameters**

*ast* Pointer to an RSL parse tree structure. \
 *attribute* Name of the attribute to test

**Returns**

The **globus\_rsl\_is\_relation\_attribute\_equal()** function returns GLOBUS\_TRUE if the RSL parse tree pointed to by *ast* is a relation and its attribute name matches the *attribute* parameter; otherwise, it returns GLOBUS\_FALSE.

### int globus\_rsl\_is\_relation\_eq (globus\_rsl\_t \* ast)

RSL equality operation test. The **globus\_rsl\_is\_relation\_eq()** function tests whether the the RSL pointed to by the *ast* parameter is an equality relation. An example of an equality relation is

```
"queue" = "debug"
```

**Parameters**

*ast* Pointer to an RSL parse tree structure.

**Returns**

The **globus\_rsl\_is\_relation\_eq()** function returns GLOBUS\_TRUE if the RSL parse tree pointed to by *ast* is an equality relation; otherwise, it returns GLOBUS\_FALSE.

### int globus\_rsl\_is\_relation\_lessthan (globus\_rsl\_t \* ast)

RSL less than operation test. The **globus\_rsl\_is\_relation\_lessthan()** function tests whether the the RSL pointed to by the *ast* parameter is a less-than relation. An example of a less-than relation is

```
"count" = "10"
```

**Parameters**

*ast* Pointer to an RSL parse tree structure.

**Returns**

The **globus\_rsl\_is\_relation\_lessthan()** function returns GLOBUS\_TRUE if the RSL parse tree pointed to by *ast* is a less-than relation; otherwise, it returns GLOBUS\_FALSE.

### int globus\_rsl\_value\_is\_concatenation (globus\_rsl\_value\_t \* ast)

RSL value concatenation test. The **globus\_rsl\_value\_is\_concatenation()** function tests whether the the RSL value pointed to by the *ast* parameter is a concatenation of RSL values. An example of an RSL value concatenation is

```
$( "GLOBUSRUN_GASS_URL" ) # "/input"
```

**Parameters**

*ast* Pointer to an RSL value structure.

**Returns**

The **globus\_rsl\_value\_is\_concatenation()** function returns GLOBUS\_TRUE if the RSL value pointed to by *ast* is a value concatenation; otherwise, it returns GLOBUS\_FALSE.

### int globus\_rsl\_value\_is\_literal (globus\_rsl\_value\_t \* ast)

RSL literal string test. The **globus\_rsl\_value\_is\_literal()** function tests whether the the RSL value pointed to by the *ast* parameter is a literal string value.

An example of a literal string is

```
"count"
```

**Parameters**

*ast* Pointer to an RSL value structure.

**Returns**

The **globus\_rsl\_value\_is\_literal()** function returns GLOBUS\_TRUE if the RSL value pointed to by *ast* is a literal string value; otherwise, it returns GLOBUS\_FALSE.

### int globus\_rsl\_value\_is\_sequence (globus\_rsl\_value\_t \* ast)

RSL value sequence test. The **globus\_rsl\_value\_is\_sequence()** function tests whether the the RSL value pointed to by the *ast* parameter is a sequence of RSL values. An example of a sequence of values is

```
"1" "2" "3"
```

**Parameters**

*ast* Pointer to an RSL value structure.

**Returns**

The **globus\_rsl\_value\_is\_sequence()** function returns GLOBUS\_TRUE if the RSL value pointed to by *ast* is a value sequnce; otherwise, it returns GLOBUS\_FALSE.

### int globus\_rsl\_value\_is\_variable (globus\_rsl\_value\_t \* ast)

RSL value variable test. The **globus\_rsl\_value\_is\_variable()** function tests whether the the RSL value pointed to by the *ast* parameter is a variable reference. RSL values. An example of a variable reference is

```
$( "GLOBUSRUN_GASS_URL" )
```

**Parameters**

*ast* Pointer to an RSL value structure.

**Returns**

The **globus\_rsl\_value\_is\_sequence()** function returns GLOBUS\_TRUE if the RSL value pointed to by *ast* is a value sequnce; otherwise, it returns GLOBUS\_FALSE.

## Author

Generated automatically by Doxygen for globus\_rsl from the source code.
