---
name: "mapabloperexpr"
section: "3"
platform: "linux"
package: "alliance"
version: "5.1.1-3"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/mapabloperexpr"
---

# mapabloperexpr(3)

applies a function to all operands.

## NAME

mapabloperexpr - applies a function to all operands.

## SYNOPSYS

```
#include "abl101.h"
chain_list ∗mapabloperexpr( Function, Oper, Expr )
  chain_list ∗ (∗Function)();
  long       Oper;
  chain_list ∗Expr;
```

## PARAMETERS

-

  - *Function*

  Function name to apply to all operands.

- *Oper*

  Operator number.

- *Expr*

  Expression to scan.

## DESCRIPTION

**mapabloperexpr** applies *Function* to all operands of *Expr*. **mapabloperexpr** creates a head of an operator expression having *Oper* as operator and adds the arguments calculated by applying *Function* to each arguments of *Expr*. *Function* must return an expression and must have a  unique expression as argument.\

## RETURN VALUE

**mapabloperexpr** returns a new expression by applying *Function* to all the arguments of the operator expression *Expr*.

## EXAMPLE

```
#include "abl101.h"
   chain_list ∗MapFunction( MapExpr )
      chain_list ∗MapExpr;
   {
     return( createablnotexpr( dupablexpr( MapExpr ) ) );
   }
   chain_list ∗Expr;
   chain_list ∗Expr1;
   Expr = createablbinexpr( ABL_NOR,
                            createablatom( "a" ),
                            createablatom( "b" ) );
   Expr1 = mapabloperexpr( MapFunction, ABL_AND, Expr );
   /* displays ((not a) and (not b))  */
   viewablexpr( Expr1, ABL_VIEW_VHDL );
```

## SEE ALSO

[**abl**(1)](/abl/1.md)
