Maple Professional
Maple Academic
Maple Student Edition
Maple Personal Edition
Maple Player
Maple Player for iPad
MapleSim Professional
MapleSim Academic
Maple T.A. - Testing & Assessment
Maple T.A. MAA Placement Test Suite
Möbius - Online Courseware
Machine Design / Industrial Automation
Aerospace
Vehicle Engineering
Robotics
Power Industries
System Simulation and Analysis
Model development for HIL
Plant Modeling for Control Design
Robotics/Motion Control/Mechatronics
Other Application Areas
Mathematics Education
Engineering Education
High Schools & Two-Year Colleges
Testing & Assessment
Students
Financial Modeling
Operations Research
High Performance Computing
Physics
Live Webinars
Recorded Webinars
Upcoming Events
MaplePrimes
Maplesoft Blog
Maplesoft Membership
Maple Ambassador Program
MapleCloud
Technical Whitepapers
E-Mail Newsletters
Maple Books
Math Matters
Application Center
MapleSim Model Gallery
User Case Studies
Exploring Engineering Fundamentals
Teaching Concepts with Maple
Maplesoft Welcome Center
Teacher Resource Center
Student Help Center
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.
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.
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.
www.mathresources.com