| macro_rules! imp { |
| ($name:ident) => { |
| pub struct $name { |
| pub op: usize, |
| } |
| impl $name { |
| pub fn op() {} |
| pub fn cmp() {} |
| pub fn map() {} |
| pub fn pop() {} |
| pub fn ptr() {} |
| pub fn rpo() {} |
| pub fn drop() {} |
| pub fn copy() {} |
| pub fn zip() {} |
| pub fn sup() {} |
| pub fn pa() {} |
| pub fn pb() {} |
| pub fn pc() {} |
| pub fn pd() {} |
| pub fn pe() {} |
| pub fn pf() {} |
| pub fn pg() {} |
| pub fn ph() {} |
| pub fn pi() {} |
| pub fn pj() {} |
| pub fn pk() {} |
| pub fn pl() {} |
| pub fn pm() {} |
| pub fn pn() {} |
| pub fn po() {} |
| } |
| }; |
| ($name:ident, $($names:ident),*) => { |
| imp!($name); |
| imp!($($names),*); |
| }; |
| } |
| macro_rules! en { |
| ($name:ident) => { |
| pub enum $name { |
| Ptr, |
| Rp, |
| Rpo, |
| Pt, |
| Drop, |
| Dr, |
| Dro, |
| Sup, |
| Op, |
| Cmp, |
| Map, |
| Mp, |
| } |
| }; |
| ($name:ident, $($names:ident),*) => { |
| en!($name); |
| en!($($names),*); |
| }; |
| } |
| |
| imp!(Ot, Foo, Cmp, Map, Loc, Lac, Toc, Si, Sig, Sip, Psy, Psi, Py, Pi, Pa, Pb, Pc, Pd); |
| imp!(Pe, Pf, Pg, Ph, Pj, Pk, Pl, Pm, Pn, Po, Pq, Pr, Ps, Pt, Pu, Pv, Pw, Px, Pz, Ap, Bp, Cp); |
| imp!(Dp, Ep, Fp, Gp, Hp, Ip, Jp, Kp, Lp, Mp, Np, Op, Pp, Qp, Rp, Sp, Tp, Up, Vp, Wp, Xp, Yp, Zp); |
| |
| en!(Place, Plac, Plae, Plce, Pace, Scalar, Scalr, Scaar, Sclar, Salar); |
| |
| pub struct P; |