declare that library is used by generated code - Maple Help

Online Help

All Products    Maple    MapleSim

Home : Support : Online Help : Programming : Code Generation Package : Language Definition : Printer : CodeGeneration/LanguageDefinition/Printer/AddLibrary

Printer:-AddLibrary - declare that library is used by generated code

Calling Sequence





Printer module



string; name of library



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.


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


LanguageDefinition[Define]("AddLibraryExample", extend="C",
         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:-AddLibrary( "custom_lib");
         end proc,
         Names:-Sum = proc()
            Printer:-Print( "custom_add(" );
            Printer:-PrintDelimitedList( [args], ", ");
            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.


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:


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

AddFunction, GetIncludes, Printer

Download Help Document

Copyright © MathResources Inc. All Rights Reserved.

Was this information helpful?

Please add your Comment (Optional)
E-mail Address (Optional)
What is ? This question helps us to combat spam