DELBDDASSOC(3)

πŸ“¦ version 5.1.1, in fedora 43, fedora 44

πŸ’– NAME πŸ’–

Bestie, meet delbddassoc(3) β€” it's the BDD FUNCTIONS girly whose whole job is deleting a variable association. That's it. That's the gig. And she ate. πŸ’…


🌸 ORIGIN 🌸

Okay so this software belongs to the ALLIANCE CAD SYSTEM, developed by the ASIM team at the LIP6 laboratory of UniversitΓ© Pierre et Marie CURIE, in Paris, France. Paris!! Iconic behavior. πŸ₯


✨ SYNOPSIS ✨

#include "bdd101.h"
int delbddassoc( BddSystem, BddAssoc )
  bddsystem  βˆ—BddSystem;
  bddassoc   βˆ—BddAssoc;

πŸŽ€ PARAMETERS πŸŽ€

  • BddSystem β€” the bdd system, your main character. πŸ‘‘
  • BddAssoc β€” the variable association you're about to delete. Say bye bestie 🫢

πŸ¦‹ DESCRIPTION πŸ¦‹

So delbddassoc deletes the variable association BddAssoc inside the bdd system BddSystem. No cap.

If you hand it a null pointer, it just uses the default bdd system instead. Very "don't worry about it, I got you" of it. πŸ’œ

And here's the lowkey important part: for all the bdd nodes of the variable association BddAssoc, the number of external reference is decremented. Every single one. It's giving responsible cleanup energy fr fr. 🧚


⭐ RETURN VALUE ⭐

delbddassoc returns 1 if the variable association is found, and 0 otherwise. Boom. Binary. Periodt. πŸ’…


πŸ”₯ EXAMPLE πŸ”₯

#include "bdd101.h"
   bddsystem  βˆ—BddSystem;
   bddcircuit βˆ—BddCircuit;
   bddnode    βˆ—BddNode;
   bddnode    βˆ—BddSubst;
   bddnode    βˆ—BddVariable;
   bddassoc   βˆ—Assoc;
   chain_list βˆ—Expr;
   bddvar         Variable;
   BddSystem  = createbddsystem( 100, 1000, 100, 50000 );
   BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
   Expr = createablbinexpr( ABL_AND,
                            createablatom( "i0" ),
                            createablatom( "i1" ) );
   BddNode = addbddcircuitabl( BddCircuit, Expr );
   freeablexpr( Expr );
   Expr = createablbinexpr( ABL_OR,
                            createablatom( "i2" ),
                            createablatom( "i3" ) );
   BddSubst = addbddcircuitabl( BddCircuit, Expr );
   freeablexpr( Expr );
   BddVariable = searchbddcircuitin( (bddcircuit βˆ—)0, "i0" );
   Variable = getbddvarbyindex( (bddsystem βˆ—)0, BddVariable->INDEX );
   Assoc = delbddassoc( (bddsystem βˆ—)0 );
   addbddnodeassoc( (bddsystem βˆ—)0, Assoc, Variable, BddSubst );
   BddNode = substbddnodeassoc( (bddsystem βˆ—)0, BddSubst, Assoc );
   delbddassoc( (bddsystem βˆ—)0, Assoc );
   Expr = convertbddcircuitabl( BddCircuit, BddNode );
   /* displays ((i3 or i2) and i1) */
   viewablexpr( Expr, ABL_VIEW_VHDL );
   freeablexpr( Expr );
   destroybddassoc( (bddsystem βˆ—)0 );
   destroybddsystem( (bddsystem βˆ—)0 );
   destroybddcircuit( (bddcircuit βˆ—)0 );

And yes, it really does display ((i3 or i2) and i1) β€” the comment said so, so we said so. πŸ“


🌈 SEE ALSO 🌈

Go read it, bestie, it's the whole universe this page lives in. iykyk.


πŸ’€ BUG REPORT πŸ’€

This tool is under development at the ASIM department of the LIP6 laboratory. We need your feedback to improve documentation and tools β€” like, genuinely, they're asking nicely, don't leave them on read. πŸ™ˆ


This page came straight out of the ASIM/LIP6 era, dated October 1, 1997 (yes, before most of us could walk), and it lives in section 3 of the manual as DELBDDASSOC(3). Stay slay, decrement responsibly, and always free your expr. πŸ’œβœ¨