/* INFO (STD) -- Info */ /* INFO (STD) -- Info */ /* // Copyright (c) 1997-2012 Oliver Bartels F+E, Muenchen // Author: Manfred Baumeister // Changes History: // rl (120427) RELEASED FOR BAE V7.8. // rl (101019) RELEASED FOR BAE V7.6. // rl (100310) ENHANCEMENT: // Added global variable list option // rl (091021) RELEASED FOR BAE V7.4. // rl (081014) RELEASED FOR BAE V7.2. // rl (071029) RELEASED FOR BAE V7.0. // rl (060829) RELEASED FOR BAE V6.8. // rl (050906) RELEASED FOR BAE V6.6. // rl (040811) RELEASED FOR BAE V6.4. // rl (030904) RELEASED FOR BAE V6.2. // rl (021209) RELEASED FOR BAE V6.0. // rl (020618) RELEASED FOR BAE V5.4. // rl (010625) RELEASED FOR BAE V5.0. // rl (000509) RELEASED FOR BAE V4.6. // rl (990625) RELEASED FOR BAE V4.4. // rl (980910) RELEASED FOR BAE V4.2. // rl (970929) RELEASED FOR BAE V4.0. // mb (970703) ORIGINAL CODING: // // DESCRIPTION // // The info User Language program provides a common interface // to frequently used environment-specific report functions. // info designates the currently active environment and starts // a specific User Language report program or help utility (i.e. // SCMPCR within the Schematic Editor, LAYPCR within the Layout // System, HLPPROD if no element loaded, etc.). */ // Includes #include "pop.ulh" // User Language popup utilities // Disable undo state request #pragma ULCALLERNOUNDO // User Language program names #define UL_HLPPROD "hlpprod" // ULP: Online Help - Product Info #define UL_ICDPCR "icdpcr" // ULP: IC Layout Report #define UL_LAYPCR "laypcr" // ULP: Layout Report #define UL_SCMPCR "scmpcr" // ULP: SCM Report // Main program void main() { string progname /* Program name buffer */; // Swallow right mouse button activation notification if (bae_peekiact()) if ((progname=askstr("",1024))=="var") { listvars(); exit(0); } // Provide help only if no element loaded if (bae_planddbclass()==DDBCLUNDEF) // Run the help program runulprogexit(UL_HLPPROD); // Get the program to be started switch (uliptype()) { // SCM case ULIPSCM : progname=UL_SCMPCR; break; // Layout case ULIPGED : case ULIPAR : case ULIPCAM : progname=UL_LAYPCR; break; // IC Layout case ULIPCED : progname=UL_ICDPCR; break; // Provide product info on default default : progname=UL_HLPPROD; break; } // Run the designated UL program runulprogexit(progname); } void listvars() { index GLOBALVAR gvar /* Global variable index */; int intbuf /* Integer value buffer */; double dblbuf /* Float value buffer */; char chrbuf /* Character value buffer */; string strbuf /* String value buffer */; string valbuf /* Value display buffer */; STRINGS headl /* Header list */; int headn = 2 /* Header count */; STRINGS msgl /* Message list */; int msgn = 0 /* Message count */; int popcols = 40 /* Popup columns count */; int i /* Loop control variable */; // Loop for all global variables forall (gvar) { // Check variable type switch (gvar.TYP) { // Integer case 1 : varget(gvar.NAME,intbuf); sprintf(valbuf,"%d",intbuf); break; // Double case 2 : varget(gvar.NAME,dblbuf); sprintf(valbuf,"%f",dblbuf); break; // Character case 3 : varget(gvar.NAME,chrbuf); sprintf(valbuf,"'%c'",chrbuf); break; // String case 4 : varget(gvar.NAME,strbuf); sprintf(valbuf,"\"%s\"",strbuf); break; // Unknown default : sprintf(valbuf,"--UNKNOWN-- TYPE"); } // Build list entry sprintf(msgl[msgn]," NAME='%s'\tTYP=%d\tVALUE=%s", gvar.NAME,gvar.TYP,valbuf); msgn++; } // Get the popup columns count for (i=0;i