AddLibrary - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

# Online Help

###### All Products    Maple    MapleSim

Printer

 AddLibrary
 declare that library is used by generated code

 Calling Sequence Printer:-AddLibrary(libraryname)

Parameters

 Printer - Printer module libraryname - string; name of library

Description

 • When called during the printing of intermediate code, the AddLibrary command declares that the library libraryname is used by the generated code.
 • Many programming languages rely on external archives or libraries to supply functions for specialized tasks.  Several CodeGeneration translators produce code that relies on such libraries.
 • To enable the printing of these inclusion statements in your custom translator, call AddLibrary from within the handler procedure in which the code using this library is printed.

Examples

Define an extension of C that uses custom functions from some library custom_lib addition, negation, multiplication, and inversion.

 > $\mathrm{with}\left(\mathrm{CodeGeneration}\right):$
 > LanguageDefinition[Define]("AddLibraryExample", extend="C",      AddPrintHandler(          Names:-Inverse = proc(x)             Printer:-Print( "custom_inv(", x, ")");             Printer:-AddLibrary( "custom_lib");          end proc,          Names:-Negation = proc(x)             Printer:-Print( "custom_neg(", x, ")");             Printer:-AddLibrary( "custom_lib");          end proc,          Names:-Product = proc()             Printer:-Print( "custom_mult(" );             Printer:-PrintDelimitedList( [args], ", ");             Printer:-Print(")");             Printer:-AddLibrary( "custom_lib");          end proc,          Names:-Sum = proc()             Printer:-Print( "custom_add(" );             Printer:-PrintDelimitedList( [args], ", ");             Printer:-Print(")");             Printer:-AddLibrary( "custom_lib");          end proc      ) );

Observe that in both cases the custom functions are printed instead of the usual binary operators +,-,*,/, and that in the second case custom_lib is explicitly included.

 > $\mathrm{Translate}\left(3x-y,\mathrm{language}="AddLibraryExample"\right)$
 cg = custom_add(custom_mult(3, x), custom_neg(y));
 > p := proc(x,y)    local z;    z := (sin(x)*y+1)*Pi;    printf("%f", z); end proc:
 > $\mathrm{Translate}\left(p,\mathrm{language}="AddLibraryExample"\right)$
 void p (double x, double y) {   double z;   z = custom_mult(custom_add(custom_mult(sin(x), y), 0.1e1), 0.3141592654e1);   printf("%f", z); }

 See Also