// Main int main(int argc, char *argv[]) { if (argc != 2) { usage( argv[0], NULL ); exit(0); } if (getprefix(argv[1]) ) { if (splitpref()) { if ( convert_left_right() ) { write_banner(); printf("\n%18s --> %s\n", MSG_TYPE, ident_type(w) ); write_8w_compr( w, MSG_COMPRESSED ); printf("/%d\n", preflen); write_8w( w, MSG_EXPANDED ); if (preflen != 128) { convb2t( w, tpref); genmask(preflen, tmask); genmask(128, tw); logic_xor(tmask, tw, tt); convt2b(tt, t); logic_and(tpref, tmask, tw); convt2b(tw, w); write_8w( w, MSG_BLOCK_BEGIN ); logic_or(tw, tt, tq); convt2b(tq, q); write_8w( q, MSG_BLOCK_END ); printf("\n"); line_centr_text(MSG_ZOOM_BLK_BIN, '~'); printf("\n\n"); write_area_zoom(tw,preflen); write_area_zoom(tq,preflen); write_ptr_zoom(tq,preflen); } printf("\n"); } else usage(argv[0], MSG_ERR_TOO_MANY_WORDS ); } else usage(argv[0], MSG_ERR_WRONG_USE ); } else usage(argv[0], MSG_ERR_INV_CHR ); return 0; }
inline ASTNode* AST::logic_xor(const LexerLocation& loc, ASTNode* left, ASTNode* right) { ASTNode* n = logic_and(loc, left, right); n->type = ASTNodeTypeXor; return n; }