polardupablexpr(3) duplicates an expression and moves down the inverters.

SYNOPSYS

#include "abl101.h"
chain_list *polardupablexpr( Expr, Polar )
  chain_list *Expr;
  int         Polar;

PARAMETERS

Expr
Expression to modify.
Polar
Expression polarity.

DESCRIPTION

polardupablexpr modifies Expr by moving down the inverters to the atomic level. polardupablexpr applies the Morgan's laws. If Polar is equal to ABL_POLAR_NEGATIVE the function returns the modified expression after having complemented it.

RETURN VALUE

polardupablexpr returns the modified expression.

EXAMPLE

#include "abl101.h"
  chain_list *Expr1;
  chain_list *Expr2;
  Expr1 = createabloper( ABL_NOT );
  Expr2 = createabloper( ABL_NOT );
  addablhexpr( Expr1, createablatom( "a" ) );
  addablhexpr( Expr2, Expr1 );
  Expr1 = polardupablexpr( Expr2, ABL_POLAR_POSITIVE );
  /* displays  a */
  viewablexpr( Expr1, ABL_VIEW_VHDL );