Example #1
0
static int chgroup(void) {
  int p=notAllowed,c;
  for(;;) {
    switch(sym) {
    case SYM_CHR: chkrch(val);
    case SYM_ESC: c=val; getsym();
      if(sym==SYM_CHR&&val=='-') {
	if(regex[ri]=='[') {
	  p=choice(p,newChar(c));
	  goto END_OF_GROUP;
	} else {
	  getsym();
	  switch(sym) {
	  case SYM_CHR: chkrch(val);
	  case SYM_ESC: p=choice(p,newRange(c,val)); getsym(); break;
	  default: error(RX_ER_BADCH); getsym(); break;
	  }
	}
      } else {
	p=choice(p,newChar(c));
      }
      break;
    case SYM_CLS: p=choice(p,cls(val)); getsym(); break;
    case SYM_END: error(RX_ER_NORSQ); goto END_OF_GROUP;
    default: assert(0);
    }
    if(sym==SYM_CHR&&(val==']'||val=='-')) goto END_OF_GROUP;
  }
  END_OF_GROUP:;
  return p;
}
Example #2
0
void WorldSession::HandleCoachCreation(WorldPacket& packet)
{
    QString name;
    quint8 skinColorIndex, hairColorIndex, gender;

    name = packet.ReadString();
    packet >> skinColorIndex >> hairColorIndex >> gender;

    WorldPacket data(SMSG_COACH_CREATION_RESULT);
    QSqlQuery result = Database::Coach()->Query(SELECT_COACH_BY_NAME, QVariantList() << name);

    if (!result.first())
    {
        // TODO
        // Check max char by account

        sCoachCreateInfos createInfos(name, gender, skinColorIndex, hairColorIndex);
        QScopedPointer<Coach> newChar(new Coach(this));

        if(newChar->Create(ObjectMgr::Instance()->GenerateGuid(GUIDTYPE_COACH), createInfos))
        {
            newChar->SaveToDB(true);

            data << quint8(0); // Success
            SendPacket(data);

            SendCoachInformation();
            return;
        }
    }

    data << quint8(11); // Invalid name
    SendPacket(data);
}
Example #3
0
void CharSelectEnhanced::hexLineEdit_returnPressed()
{
	QString tx("0x%1");;
	bool ok = false;
	uint code = tx.arg(hexLineEdit->text()).toUInt(&ok, 16);
	if ((ok) && (code > 31))
		newChar(code, m_fontInUse);
}
Example #4
0
LispRef content(LispRef stream, LispRef eos_error_p, LispRef eos_value)
{
    WITH_DEBUG(fprintf(stderr, "content\n"));

    char tag;
    read_byte(tag);

    WITH_DEBUG(fprintf(stderr, "  tag: %x\n", tag));

    switch (tag)
    {
        case TC_NULL:
            return nullReference(stream, eos_error_p, eos_value);
        case TC_REFERENCE:
            return prevObject(stream, eos_error_p, eos_value);
        case TC_CLASS:
            return newClass(stream, eos_error_p, eos_value);
        case TC_OBJECT:
            return newObject(stream, eos_error_p, eos_value);
        case TC_STRING:
            return newString(stream, eos_error_p, eos_value);
        case TC_STATE:
            return newState(stream, eos_error_p, eos_value);
        case TC_VECTOR:
            return newVector(stream, eos_error_p, eos_value);
        case TC_STREAM:
            return newStream(stream, eos_error_p, eos_value);
        case TC_RESET:
            return reset(stream, eos_error_p, eos_value);
        case TC_SELF:
            return stream;
        case TC_FUNCTION:
            return newFunction(stream, eos_error_p, eos_value);
        case TC_BYTEVECTOR:
            return newBytevector(stream, eos_error_p, eos_value);
        case TC_INT:
            return newInt(stream, eos_error_p, eos_value);
        case TC_DOUBLE:
            return newDouble(stream, eos_error_p, eos_value);
        case TC_SYMBOL:
            return newSymbol(stream, eos_error_p, eos_value);
        case TC_KEYWORD:
            return newKeyword(stream, eos_error_p, eos_value);
        case TC_CHAR:
            return newChar(stream, eos_error_p, eos_value);
        case TC_CONS:
            return newCons(stream, eos_error_p, eos_value);
        default:
            {
                LispRef str, args;

                eul_allocate_string(str, "unknown tag in ~a");
                eul_allocate_cons(args, stream, eul_nil);
                eul_serial_error(stream, str, args);
                return eul_nil;
            }
    }
}
Example #5
0
static int atom(void) {
  int p=0;
  switch(sym) {
  case SYM_CHR:
    switch(val) {
    case '[': getsym(); p=chexpr(); chk_get(']',RX_ER_NORSQ); break;
    case '(': getsym(); p=expression(); chk_get(')',RX_ER_NORPA); break;
    case '{': case '?': case '*': case '+': case '|':
    case ')': case ']': case '}': error(RX_ER_BADCH); getsym(); break;
    default: p=newChar(val); getsym(); break;
    }
    break;
  case SYM_ESC: p=newChar(val); getsym(); break;
  case SYM_CLS: p=cls(val); getsym(); break;
  default: error(RX_ER_BADCH); getsym(); break;
  }
  return p;
}
Example #6
0
CharSelectEnhanced::CharSelectEnhanced(QWidget* parent)
		: ScrPaletteBase(parent, "CharSelectEnhanced"),
		m_doc(0),
		m_characterClass(0)
{
	setupUi(this);

	m_charTableModel = new CharTableModel(this, 26, m_doc);//,
//                                           PrefsManager::instance()->appPrefs.toolSettings.defFont);
	m_charTable->setModel(m_charTableModel);
	m_charTable->setDragEnabled(true);

	// insert hex codes directly
	QValidator* insValidator = new QRegExpValidator(QRegExp("[A-F,a-f,0-9]{4}"), this);
	hexLineEdit->setValidator(insValidator);

	// signals and slots connections
	connect(deleteButton, SIGNAL(clicked()), this, SLOT(delEdit()));
	connect(insertButton, SIGNAL(clicked()), this, SLOT(insChar()));
	connect(m_charTable, SIGNAL(selectChar(uint, QString)), this, SLOT(newChar(uint, QString)));
	connect(fontSelector, SIGNAL(activated(int)), this, SLOT(newFont(int)));
	connect(rangeSelector, SIGNAL(activated(int)), this, SLOT(newCharClass(int)));
	connect(hexLineEdit, SIGNAL(returnPressed()), this, SLOT(hexLineEdit_returnPressed()));
}
TVP recordR1()
{
	/*
	 types

	 R1 ::
	 a : int
	 b : seq of char
	 c : bool;

	 operations

	 public recordR1: ()==>bool
	 recordR1()==(

	 dcl r : R1 := mk_R1(0,"ab",false);

	 let r2 = r,
	 mk_R1(-,-,b)=r
	 in
	 return r2.c or true or b;

	 );
	 */

	//dcl r : R1 := mk_R1(0,"ab",false);
	TVP r = mk_R1();
//	RECORD_FIELD_ACCESS(r,struct R1*,a,tmp1);

	// 0
	TVP tmp1 = newInt(0);
	RECORD_FIELD_SET(r,RECORD_R1,a,tmp1);
	vdmFree(tmp1);

	TVP tmp2 = newSeq(2);

	TVP tmp2_1 = newChar('a');
	SET_SEQ(tmp2,1,tmp2_1);
	vdmFree(tmp2_1);

	TVP tmp2_2 = newChar('b');
	SET_SEQ(tmp2,2,tmp2_2);
	vdmFree(tmp2_2);

	RECORD_FIELD_SET(r,RECORD_R1,b,tmp2);
	vdmFree(tmp2);

	TVP tmp3 = newBool(false);
	RECORD_FIELD_SET(r,RECORD_R1,c,tmp3);
	vdmFree(tmp3);

	//let r2 = r;
	TVP r2 = vdmClone(r);

//	mk_R1(-,-,b)=r
	TVP tmp4 = mk_R1();
	patternMatchBind(tmp4,r);
	RECORD_FIELD_ACCESS(tmp4,RECORD_R1,c,b);

//	 in
//		 return r2.c or true or b;
	RECORD_FIELD_ACCESS(r2,RECORD_R1,c,tmp5);
	TVP tmp6 = newBool(true);

	TVP tmp7 =newBool( tmp5->value.boolVal || tmp6->value.boolVal || b->value.boolVal);

	TVP res = vdmClone(tmp7);
	vdmFree(tmp7);
	vdmFree(tmp6);
	vdmFree(tmp5);
	vdmFree(tmp4);

	return res;
}