version 1.24, 2000/01/20 18:14:32 |
version 1.31, 2000/03/14 04:44:17 |
|
|
/** |
/** |
* $OpenXM: OpenXM/src/OpenMath/OMproxy.java,v 1.23 2000/01/20 16:40:13 tam Exp $ |
* $OpenXM: OpenXM/src/OpenMath/OMproxy.java,v 1.30 2000/03/12 14:24:21 tam Exp $ |
*/ |
*/ |
|
|
import JP.ac.kobe_u.math.tam.OpenXM.*; |
import JP.ac.kobe_u.math.tam.OpenXM.*; |
Line 20 class OMproxy implements Runnable{ |
|
Line 20 class OMproxy implements Runnable{ |
|
OM2OXM P = new OM2OXM(); |
OM2OXM P = new OM2OXM(); |
|
|
debug("OMproxy started."); |
debug("OMproxy started."); |
while(true){ |
try{ |
try{ |
while(true){ |
int ox_tag = ox.receiveOXtag(); |
try{ |
|
int ox_tag = ox.receiveOXtag(); |
|
|
switch(ox_tag){ |
switch(ox_tag){ |
case OpenXM.OX_COMMAND: |
case OpenXM.OX_COMMAND: |
StackMachine(ox.receiveSM()); |
StackMachine(ox.receiveSM()); |
break; |
break; |
|
|
case OpenXM.OX_DATA: |
case OpenXM.OX_DATA: |
stack.push(ox.receiveCMO()); |
stack.push(ox.receiveCMO()); |
debug("push: "+ stack.peek()); |
debug("push: "+ stack.peek()); |
break; |
break; |
|
} |
|
}catch(RuntimeException e){ |
|
System.err.println(e.getMessage()); |
|
e.printStackTrace(); |
|
debug("error occured. stack was cleared."); |
} |
} |
}catch(Throwable e){ |
|
System.err.println(e.getMessage()); |
|
e.printStackTrace(); |
|
debug("error occured. stack was cleared."); |
|
} |
} |
|
}catch(IOException e){ |
|
System.err.println(e.getMessage()); |
|
e.printStackTrace(); |
|
System.err.println("error occured, and recovering processes seems to be impossible."); |
|
}finally{ |
|
System.out.println("breaking..."); |
} |
} |
//System.out.println("breaking..."); |
|
} |
} |
|
|
/* |
/* |
Line 65 class OMproxy implements Runnable{ |
|
Line 72 class OMproxy implements Runnable{ |
|
ox.send(stack.pop()); |
ox.send(stack.pop()); |
} |
} |
}catch(MathcapViolation e){ |
}catch(MathcapViolation e){ |
stack.push(new CMO_STRING(e.getMessage())); |
try{ |
|
ox.send(new CMO_ERROR2(new CMO_STRING("MathcapViolation: "+ |
|
e.getMessage()))); |
|
}catch(MathcapViolation tmp){} |
} |
} |
} |
} |
|
|
private void SM_executeFunction() throws java.io.IOException{ |
private void SM_executeFunction() throws java.io.IOException{ |
String function_name; |
String function_name; |
CMO[] argv; |
CMO[] argv; |
int argc = 1; |
int argc; |
|
|
if(!(stack.peek() instanceof CMO_STRING)){ |
if(!(stack.peek() instanceof CMO_STRING)){ |
stack.push(new CMO_ERROR2()); |
stack.push(new CMO_ERROR2(new CMO_NULL())); |
return; |
return; |
} |
} |
function_name = ((CMO_STRING)stack.pop()).getString(); |
function_name = ((CMO_STRING)stack.pop()).getString(); |
//argc = ((CMO_INT32)stack.pop()).intValue(); |
argc = ((CMO_INT32)stack.pop()).intValue(); |
argv = new CMO[argc]; |
argv = new CMO[argc]; |
for(int i=0;i<argc;i++){ |
for(int i=0;i<argc;i++){ |
argv[i] = (CMO)stack.pop(); |
argv[i] = (CMO)stack.pop(); |
} |
} |
|
|
if(argc != 1){ |
if(argc != 1){ |
stack.push(new CMO_ERROR2()); |
stack.push(new CMO_ERROR2(new CMO_NULL())); |
return; |
return; |
} |
} |
|
|
Line 98 class OMproxy implements Runnable{ |
|
Line 108 class OMproxy implements Runnable{ |
|
return; |
return; |
} |
} |
|
|
stack.push(new CMO_ERROR2()); |
stack.push(new CMO_ERROR2(new CMO_NULL())); |
return; |
return; |
} |
} |
|
|
Line 124 class OMproxy implements Runnable{ |
|
Line 134 class OMproxy implements Runnable{ |
|
} |
} |
|
|
{ |
{ |
CMO[] CMOFormat = {new CMO_INT32(CMO.CMO_NULL), |
CMO[] CMOFormat = {new CMO_INT32(CMO.NULL), |
new CMO_INT32(CMO.CMO_INT32), |
new CMO_INT32(CMO.INT32), |
new CMO_INT32(CMO.CMO_STRING), |
new CMO_INT32(CMO.CMO_STRING), |
new CMO_INT32(CMO.CMO_LIST), |
new CMO_INT32(CMO.CMO_LIST), |
new CMO_INT32(CMO.CMO_MONOMIAL32), |
new CMO_INT32(CMO.CMO_MONOMIAL32), |
Line 135 class OMproxy implements Runnable{ |
|
Line 145 class OMproxy implements Runnable{ |
|
new CMO_INT32(CMO.CMO_DMS_GENERIC), |
new CMO_INT32(CMO.CMO_DMS_GENERIC), |
new CMO_INT32(CMO.CMO_RECURSIVE_POLYNOMIAL), |
new CMO_INT32(CMO.CMO_RECURSIVE_POLYNOMIAL), |
new CMO_INT32(CMO.CMO_DISTRIBUTED_POLYNOMIAL), |
new CMO_INT32(CMO.CMO_DISTRIBUTED_POLYNOMIAL), |
new CMO_INT32(CMO.CMO_POLYNOMIAL_IN_ONE_VARIABLE), |
new CMO_INT32(CMO.POLYNOMIAL_IN_ONE_VARIABLE), |
new CMO_INT32(CMO.CMO_BIGFLOAT), |
new CMO_INT32(CMO.CMO_BIGFLOAT), |
new CMO_INT32(CMO.CMO_INDETERMINATE), |
new CMO_INT32(CMO.CMO_INDETERMINATE), |
new CMO_INT32(CMO.CMO_TREE)}; |
new CMO_INT32(CMO.CMO_TREE)}; |
Line 150 class OMproxy implements Runnable{ |
|
Line 160 class OMproxy implements Runnable{ |
|
debug("push: "+ stack.peek()); |
debug("push: "+ stack.peek()); |
} |
} |
|
|
|
private void SM_setMathCap() throws java.io.IOException{ |
|
Object mathcap = stack.pop(); |
|
|
|
if(mathcap instanceof CMO_MATHCAP){ |
|
stack.push(new CMO_ERROR2(new CMO_NULL())); |
|
} |
|
ox.setMathCap((CMO_MATHCAP)mathcap); |
|
} |
|
|
private void StackMachine(SM mesg) throws java.io.IOException{ |
private void StackMachine(SM mesg) throws java.io.IOException{ |
debug("receive: "+mesg); |
debug("receive: "+mesg); |
|
|
Line 164 class OMproxy implements Runnable{ |
|
Line 183 class OMproxy implements Runnable{ |
|
|
|
case SM.SM_mathcap: |
case SM.SM_mathcap: |
SM_mathcap(); |
SM_mathcap(); |
|
break; |
|
|
|
case SM.SM_setMathCap: |
|
SM_setMathCap(); |
break; |
break; |
|
|
default: |
default: |