//*****************************************************************************
//
// bedit.c
//
// bedit is the OLC for bitvector editing. Allows people to turn on/off bits for
// a bitvector.
//
//*****************************************************************************
#include "../mud.h"
#include "../socket.h"
#include "../bitvector.h"
#include "olc.h"
//*****************************************************************************
// bitvector editing functions
//*****************************************************************************
void bedit_menu (SOCKET_DATA *sock, BITVECTOR *vector) {
LIST *bits = bitvectorListBits(vector);
send_to_socket(sock, "{wCurrent bits: {c%s\r\n", bitvectorGetBits(vector));
olc_display_list(sock, bits, 3);
deleteListWith(bits, free);
}
int bedit_chooser(SOCKET_DATA *sock, BITVECTOR *vector, const char *option) {
if(!isdigit(*option))
return MENU_CHOICE_INVALID;
else {
int choice = atoi(option);
if(choice < 0 || choice >= bitvectorSize(vector))
return MENU_CHOICE_INVALID;
else {
LIST *bits = bitvectorListBits(vector);
char *bit = listGet(bits, choice);
bitToggle(vector, bit);
deleteListWith(bits, free);
return MENU_NOCHOICE;
}
}
}
bool bedit_parser (SOCKET_DATA *sock, BITVECTOR *vector, int choice,
const char *arg) {
// no parser... everything is done in the chooser
return FALSE;
}