| |||||||||||||||||
| |||||||||||||||||
|
Working with models and accessing dynamic libraries in Mosel Description mmexlib.java: Working with models and accessing dynamic libraries in Mosel
(requires burglari.bim, chess2.bim, trans.bim)
Further explanation of this example: 'Mosel Library Reference javadoc'
Source Files By clicking on a file name, a preview is opened at the bottom of this page.
Data Files mmdispdso.java
/********************************************************/
/* Mosel Library Examples */
/* ====================== */
/* */
/* file mmdispdso.java */
/* ``````````````````` */
/* Example for the use of the Mosel libraries */
/* (display the contents of a module) */
/* */
/* (c) 2008 Fair Isaac Corporation */
/* author: Y. Colombani, 2004 */
/********************************************************/
import com.dashoptimization.*;
public class mmdispdso
{
public static void main(String[] args) throws Exception
{
XPRM mosel;
XPRMModule module;
if(args.length!=1)
{
System.out.println("Usage: mmdispdso modulename");
}
else
{
mosel=new XPRM(); // Initialize Mosel
module=mosel.loadModule(args[0]);
System.out.print("Module `" + module.getName() +
"' version "+ module.getVersion());
if(module.getCertificate()!=null)
System.out.println(" (" + module.getCertificate() +")");
else
System.out.println();
System.out.println("File: "+ module.getPath() +"/"+ module.getName() +".dso");
System.out.println("Priority: "+ module.getPriority());
System.out.println("Constants:"); // List of constants
for(XPRMConstants par=module.constants(); par.hasNext();)
{
XPRMConstant p=(XPRMConstant)par.next();
System.out.println(" "+p.getName()+"="+p);
}
System.out.println();
System.out.println("Types:"); // List of types
for(XPRMNativeTypes par=module.types(); par.hasNext();)
{
XPRMNativeType p=(XPRMNativeType)par.next();
System.out.print(" "+p.getName()+" (");
if(p.hasCreate()) System.out.print("create");
if(p.hasDelete()) System.out.print(",delete");
if(p.isProblem()) System.out.print(",problem");
if(p.hasRefCount()) System.out.print(",refcnt");
if(p.hasToString()) System.out.print(",tostring");
if(p.hasPRTBL()) System.out.print("+");
if(p.hasFromString()) System.out.print(",fromstring");
if(p.hasBinary()) System.out.print(",bin");
if(p.hasShare()) System.out.print(",share");
if(p.isOrdered()) System.out.print(",ord");
if(p.hasConst()) System.out.print(",const");
if(p.hasResetOnly()) System.out.print(",reset");
if(p.hasCopy()) System.out.print(",copy");
if(p.hasAppend()) System.out.print("+");
System.out.println(")");
}
System.out.println();
System.out.println("Control Parameters:"); // List of control parameters
for(XPRMParameters par=module.parameters(); par.hasNext();)
{
XPRMParameter p=(XPRMParameter)par.next();
System.out.print(" "+p.getName()+": "+p.getTypeName()+" (");
if(p.getDescription()!=null)
System.out.print(p.getDescription()+",");
System.out.println(rwstatus(p)+")");
}
System.out.println();
// Subroutines: show the prototype
System.out.println("Procedure and functions:");
for(XPRMProcedures par=module.procedures(); par.hasNext();)
{
dispprocfct((XPRMProcedure)par.next());
}
System.out.println();
System.out.println("I/O drivers:"); // IO drivers
for(XPRMIODrivers ids=module.IODrivers(); ids.hasNext();)
{
XPRMIODriver p=(XPRMIODriver)ids.next();
System.out.println(" "+p.getName()+":"+(p.getInfo()!=null?p.getInfo():""));
}
}
}
/************************************************/
/* Return the r/w status of a control parameter */
/************************************************/
static String rwstatus(XPRMParameter p)
{
if(p.isReadable())
if(p.isWriteable())
return "r/w";
else
return "r";
else
if(p.isWriteable())
return "w";
else
return "?";
}
/***************************************/
/* Diplay a prototype from a signature */
/***************************************/
static void dispprocfct(XPRMProcedure proc)
{
char[] parms;
int i;
if(proc.getTypeCode()!=proc.TYP_NOT)
System.out.print(" function "+proc.getName());
else
System.out.print(" procedure "+proc.getName());
if(proc.getNbParameters()>0)
{
System.out.print("(");
parms=proc.getParameterTypes().toCharArray();
i=0;
while(i<parms.length)
{
if(i>0) System.out.print(",");
i=disptyp(i,parms)+1;
}
System.out.print(")");
}
if(proc.getTypeCode()!=proc.TYP_NOT)
System.out.println(":"+proc.getTypeName());
else
System.out.println();
}
/****************************************/
/* Display a type name from a signature */
/****************************************/
static int disptyp(int i, char[] parms)
{
int j;
switch(parms[i])
{
case 'i': System.out.print("integer");break;
case 'r': System.out.print("real");break;
case 'S':
case 's': System.out.print("string");break;
case 'b': System.out.print("boolean");break;
case 'v': System.out.print("mpvar");break;
case 'c': System.out.print("linctr");break;
case 'I': System.out.print("range");break;
case 'a': System.out.print("array");break;
case 'e': System.out.print("set");break;
case 'l': System.out.print("list");break;
case '|':
i++;
do
{
System.out.print(parms[i++]);
} while(parms[i]!='|');
break;
case '!':
i++;
do
{
System.out.print(parms[i++]);
} while(parms[i]!='!');
break;
case 'A':
System.out.print("array (");
j=++i;
while(parms[i]!='.')
{
if(j!=i) System.out.print(",");
i=disptyp(i,parms)+1;
}
System.out.print(") of ");
i=disptyp(++i,parms);
break;
case 'E':
System.out.print("set of ");
i=disptyp(++i,parms);
break;
case 'L':
System.out.print("list of ");
i=disptyp(++i,parms);
break;
case '*':
System.out.print("...");
break;
default: System.out.print("?");
}
return i;
}
}
| |||||||||||||||||
| © Copyright 2025 Fair Isaac Corporation. |