00001
00002 #include <string.h>
00003 #include "stack-c.h"
00004 #include "machine.h"
00005
00006
00007 int connection(int* path_out,int* path_in);
00008 int badconnection(int* path_out,int prt_out,int nout,int* path_in,int prt_in,int nin);
00009 int Message(char* code);
00010
00011
00012 int connection(int* path_out,int* path_in)
00013 {
00014 int mlhs,mrhs,ibegin,i;
00015 static int l1, m1, n1, m2, n2, l2, il, l, l5,ninnout;
00016 static char name[] = "under_connection" ;
00017
00018 m1=path_out[0];
00019 n1=n2=1;
00020 m2=path_in[0];
00021
00022 CreateVar(1, "i", &n1, &m1, &l1);
00023 for (i=1; i<=m1; i++)
00024 *istk(l1+i-1)=path_out[i];
00025 CreateVar(2, "i", &n2, &m2, &l2);
00026 for (i=1; i<=m2; i++)
00027 *istk(l2+i-1)=path_in[i];
00028
00029 Convert2Sci(1);
00030 Convert2Sci(2);
00031
00032 ibegin=1; mlhs=1; mrhs=2 ;
00033 SciString(&ibegin,name,&mlhs,&mrhs);
00034 l5=Top - Rhs + ibegin;
00035 il=iadr(*Lstk(l5));
00036 l=sadr(il+4);
00037 ninnout=(int) *stk(l);
00038 return ninnout;
00039 }
00040 int badconnection(int* path_out,int prt_out, int nout,int* path_in,int prt_in,int nin)
00041 {
00042 int mlhs,mrhs,ibegin,i;
00043 static int l1, m1, n1, m2, l2, l3, l4, l6, l5;
00044 static char name[] = "bad_connection" ;
00045
00046 m1=path_out[0];
00047 n1=1;
00048 m2=path_in[0];
00049
00050 CreateVar(1, "i", &n1, &m1, &l1);
00051 for (i=1; i<=m1; i++)
00052 *istk(l1+i-1)=path_out[i];
00053 CreateVar(2, "i", &n1, &n1, &l2);
00054 *istk(l2)=prt_out;
00055 CreateVar(3, "i", &n1, &n1, &l3);
00056 *istk(l3)=nout;
00057 CreateVar(4, "i", &n1, &m2, &l4);
00058 for (i=1; i<=m2; i++)
00059 *istk(l4+i-1)=path_in[i];
00060 CreateVar(5, "i", &n1, &n1, &l5);
00061 *istk(l5)=prt_in;
00062 CreateVar(6, "i", &n1, &n1, &l6);
00063 *istk(l6)=nin;
00064
00065 Convert2Sci(1);
00066 Convert2Sci(2);
00067 Convert2Sci(3);
00068 Convert2Sci(4);
00069 Convert2Sci(5);
00070 Convert2Sci(6);
00071
00072 ibegin=1; mlhs=0; mrhs=6 ;
00073 SciString(&ibegin,name,&mlhs,&mrhs);
00074
00075 return 0;
00076 }
00077
00078 int Message(char* code)
00079 {
00080 int mlhs=0,mrhs=1,ibegin=1;
00081 int l1, m1=(int)strlen(code), n1=1;
00082 static char name[] = "x_message" ;
00083 CreateVar(1, "c", &m1, &n1, &l1);
00084 strcpy(cstk(l1),code);
00085 Convert2Sci(1);
00086 SciString(&ibegin,name,&mlhs,&mrhs);
00087 return 0;
00088 }
00089
00090
00091
00092