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

Parameters

Description

Examples

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.

withCodeGeneration:

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.

Translate3xy,language=AddLibraryExample

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:

Translatep,language=AddLibraryExample

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