893 | 893 |
return(rv);
|
894 | 894 |
}
|
895 | 895 |
|
|
896 |
|
|
897 |
static const unsigned char cvt_table[] = {
|
|
898 |
AN_0 /* . */, AN_X /* . */, AN_Z /* . */, AN_1 /* . */, AN_H /* . */, AN_U /* . */, AN_W /* . */, AN_L /* . */,
|
|
899 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
900 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
901 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
902 |
AN_DASH /* */, AN_DASH /* ! */, AN_DASH /* " */, AN_DASH /* # */, AN_DASH /* $ */, AN_DASH /* % */, AN_DASH /* & */, AN_DASH /* ' */,
|
|
903 |
AN_DASH /* ( */, AN_DASH /* ) */, AN_DASH /* * */, AN_DASH /* + */, AN_DASH /* , */, AN_DASH /* - */, AN_DASH /* . */, AN_DASH /* / */,
|
|
904 |
AN_0 /* 0 */, AN_1 /* 1 */, AN_DASH /* 2 */, AN_DASH /* 3 */, AN_DASH /* 4 */, AN_DASH /* 5 */, AN_DASH /* 6 */, AN_DASH /* 7 */,
|
|
905 |
AN_DASH /* 8 */, AN_DASH /* 9 */, AN_DASH /* : */, AN_DASH /* ; */, AN_DASH /* < */, AN_DASH /* = */, AN_DASH /* > */, AN_DASH /* ? */,
|
|
906 |
AN_DASH /* @ */, AN_DASH /* A */, AN_DASH /* B */, AN_DASH /* C */, AN_DASH /* D */, AN_DASH /* E */, AN_DASH /* F */, AN_DASH /* G */,
|
|
907 |
AN_H /* H */, AN_DASH /* I */, AN_DASH /* J */, AN_DASH /* K */, AN_L /* L */, AN_DASH /* M */, AN_DASH /* N */, AN_DASH /* O */,
|
|
908 |
AN_DASH /* P */, AN_DASH /* Q */, AN_DASH /* R */, AN_DASH /* S */, AN_DASH /* T */, AN_U /* U */, AN_DASH /* V */, AN_W /* W */,
|
|
909 |
AN_X /* X */, AN_DASH /* Y */, AN_Z /* Z */, AN_DASH /* [ */, AN_DASH /* \ */, AN_DASH /* ] */, AN_DASH /* ^ */, AN_DASH /* _ */,
|
|
910 |
AN_DASH /* ` */, AN_DASH /* a */, AN_DASH /* b */, AN_DASH /* c */, AN_DASH /* d */, AN_DASH /* e */, AN_DASH /* f */, AN_DASH /* g */,
|
|
911 |
AN_H /* h */, AN_DASH /* i */, AN_DASH /* j */, AN_DASH /* k */, AN_L /* l */, AN_DASH /* m */, AN_DASH /* n */, AN_DASH /* o */,
|
|
912 |
AN_DASH /* p */, AN_DASH /* q */, AN_DASH /* r */, AN_DASH /* s */, AN_DASH /* t */, AN_U /* u */, AN_DASH /* v */, AN_W /* w */,
|
|
913 |
AN_X /* x */, AN_DASH /* y */, AN_Z /* z */, AN_DASH /* { */, AN_DASH /* | */, AN_DASH /* } */, AN_DASH /* ~ */, AN_DASH /* . */,
|
|
914 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
915 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
916 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
917 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
918 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
919 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
920 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
921 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
922 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
923 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
924 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
925 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
926 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
927 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
928 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */,
|
|
929 |
AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */, AN_DASH /* . */
|
|
930 |
};
|
|
931 |
|
896 | 932 |
int vtype(Trptr t, char *vec)
|
897 | 933 |
{
|
898 | 934 |
int i, nbits;
|
|
904 | 940 |
nbits=t->n.nd->msi-t->n.nd->lsi;
|
905 | 941 |
if(nbits<0)nbits=-nbits;
|
906 | 942 |
nbits++;
|
907 | |
pch = ch = vec[0];
|
|
943 |
pch = ch = cvt_table[(unsigned char)vec[0]];
|
908 | 944 |
for (i = 1; i < nbits; i++)
|
909 | 945 |
{
|
910 | |
ch = vec[i];
|
|
946 |
ch = cvt_table[vec[i]];
|
911 | 947 |
if(ch != pch) goto miscompare;
|
912 | |
}
|
|
948 |
}
|
913 | 949 |
|
914 | 950 |
return(ch);
|
915 | 951 |
|
|
918 | 954 |
if(pch == AN_Z) return(AN_X);
|
919 | 955 |
for (; i < nbits; i++)
|
920 | 956 |
{
|
921 | |
ch = vec[i];
|
|
957 |
ch = cvt_table[(unsigned char)vec[i]];
|
922 | 958 |
if((ch == AN_X) || (ch == AN_U)) return(ch);
|
923 | 959 |
if(ch == AN_Z) return(AN_X);
|
924 | 960 |
}
|
|
944 | 980 |
|
945 | 981 |
nbits=t->n.vec->nbits;
|
946 | 982 |
|
947 | |
pch = ch = vec[0];
|
|
983 |
pch = ch = cvt_table[(unsigned char)vec[0]];
|
948 | 984 |
for (i = 1; i < nbits; i++)
|
949 | 985 |
{
|
950 | |
ch = vec[i];
|
951 | |
if(ch != pch) goto miscompare;
|
|
986 |
ch = cvt_table[(unsigned char)vec[i]];
|
|
987 |
if(ch != pch) goto miscompare;
|
952 | 988 |
}
|
953 | 989 |
|
954 | 990 |
return(ch);
|
|
958 | 994 |
if(pch == AN_Z) return(AN_X);
|
959 | 995 |
for (; i < nbits; i++)
|
960 | 996 |
{
|
961 | |
ch = vec[i];
|
|
997 |
ch = cvt_table[(unsigned char)vec[i]];
|
962 | 998 |
if((ch == AN_X) || (ch == AN_U)) return(ch);
|
963 | 999 |
if(ch == AN_Z) return(AN_X);
|
964 | 1000 |
}
|
|
994 | 1030 |
if(*vec>AN_MSK) /* convert as needed */
|
995 | 1031 |
for(i=0;i<nbits;i++)
|
996 | 1032 |
{
|
997 | |
switch(*(vec))
|
998 | |
{
|
999 | |
case '0': *vec++=AN_0; break;
|
1000 | |
case '1': *vec++=AN_1; break;
|
1001 | |
case 'X':
|
1002 | |
case 'x': *vec++=AN_X; break;
|
1003 | |
case 'Z':
|
1004 | |
case 'z': *vec++=AN_Z; break;
|
1005 | |
case 'H':
|
1006 | |
case 'h': *vec++=AN_H; break;
|
1007 | |
case 'U':
|
1008 | |
case 'u': *vec++=AN_U; break;
|
1009 | |
case 'W':
|
1010 | |
case 'w': *vec++=AN_W; break;
|
1011 | |
case 'L':
|
1012 | |
case 'l': *vec++=AN_L; break;
|
1013 | |
default: *vec++=AN_DASH; break;
|
1014 | |
}
|
|
1033 |
vec[i] = cvt_table[(unsigned char)vec[i]];
|
1015 | 1034 |
}
|
1016 | 1035 |
}
|
1017 | 1036 |
else
|
|
1804 | 1823 |
if(*vec>AN_MSK) /* convert as needed */
|
1805 | 1824 |
for(i=0;i<nbits;i++)
|
1806 | 1825 |
{
|
1807 | |
switch(*(vec))
|
1808 | |
{
|
1809 | |
case '0': *vec++=AN_0; break;
|
1810 | |
case '1': *vec++=AN_1; break;
|
1811 | |
case 'X':
|
1812 | |
case 'x': *vec++=AN_X; break;
|
1813 | |
case 'Z':
|
1814 | |
case 'z': *vec++=AN_Z; break;
|
1815 | |
case 'H':
|
1816 | |
case 'h': *vec++=AN_H; break;
|
1817 | |
case 'U':
|
1818 | |
case 'u': *vec++=AN_U; break;
|
1819 | |
case 'W':
|
1820 | |
case 'w': *vec++=AN_W; break;
|
1821 | |
case 'L':
|
1822 | |
case 'l': *vec++=AN_L; break;
|
1823 | |
default: *vec++=AN_DASH; break;
|
1824 | |
}
|
|
1826 |
vec[i] = cvt_table[(unsigned char)vec[i]];
|
1825 | 1827 |
}
|
1826 | 1828 |
}
|
1827 | 1829 |
else
|