Example #1
0
bool FractionField::initialize_frac(const PolyRingFlat *R)
{
  initialize_ring(R->charac(),
                  R->get_degree_ring(),
                  R->get_heft_vector());

  R_ = R;
  _MINUS_ONE = R->from_int(-1);

  zeroV = from_int(0);
  oneV = from_int(1);
  minus_oneV = from_int(-1);

  if (R->n_quotients() > 0
      || R->getCoefficients()->cast_to_FractionField() // disallowed in x-relem.cpp
      || R->getMonoid()->getNonTermOrderVariables()->len > 0) // disallowed in x-relem.cpp
    use_gcd_simplify = false;
  else
    use_gcd_simplify = true;
#ifdef DEVELOPMENT
#warning "frac simplify: doesn't handle towers of fracs"
#endif

  declare_field();
  return true;
}
Example #2
0
ring_elem RingZZ::preferred_associate(ring_elem f) const
{
  mpz_ptr a = f.get_mpz();
  if (mpz_sgn(a) >= 0)
    return from_int(1);
  return from_int(-1);
}
Example #3
0
std::string formatting_options::get_par_str() const
{
   std::string style;
   switch (papAlign)
   {
   case formatting_options::align_right:
      style+="text-align:right;";
      break;
   case formatting_options::align_center:
      style+="text-align:center;";
      break;
   case formatting_options::align_justify:
      style+="text-align:justify;";
      break;
   case formatting_options::align_left:
   case formatting_options::align_error:
      break;
   }
   if (papFirst!=0)
   {
      style+="text-indent:";
      style+=from_int(papFirst);
      style+="pt;";
   }
   if (papLeft!=0)
   {
      style+="margin-left:";
      style+=from_int(papLeft);
      style+="pt;";
   }
   if (papRight!=0)
   {
      style+="margin-right:";
      style+=from_int(papRight);
      style+="pt;";
   }
   if (papBefore!=0)
   {
      style+="margin-top:";
      style+=from_int(papBefore);
      style+="pt;";
   }
   if (papAfter!=0)
   {
      style+="margin-bottom:";
      style+=from_int(papAfter);
      style+="pt;";
   }
   if (style.empty())
      return std::string("<p>");
   else
   {
      style.insert(0, "<p style=\"");
      return style+"\">";
   }
}
Example #4
0
bool QQ::initialize_QQ()
{
  initialize_ring(0);
  _elem_size = sizeof(mpq_t);
  _zero_elem = new_elem();// this sets the element to 0.
#if 0
//   trans_one = globalZZ->from_int(1);
#endif
  declare_field();
  zeroV = from_int(0);
  oneV = from_int(1);
  minus_oneV = from_int(-1);

  return true;
}
Example #5
0
bool RingZZ::initialize_ZZ(const PolynomialRing *deg_ring)
{
  initialize_ring(0);
  _elem_size = sizeof(mpz_t);
  _zero_elem = new_elem();
  mpz_init_set_si(_zero_elem, 0);

  zeroV = from_int(0);
  oneV = from_int(1);
  minus_oneV = from_int(-1);

  degree_ring = deg_ring;
  coeffR = new CoefficientRingZZ_NTL(this);
  return true;
}
Example #6
0
ring_elem SchurRing::power(const ring_elem f, mpz_t n) const
{
  if (mpz_sgn(n) < 0)
    {
      ERROR("element not invertible");
      return from_int(1);
    }
  unsigned int n1;
  if (!RingZZ::get_ui(n1, n))
    {
      ERROR("exponent too large");
      return from_int(1);
    }
  return power(f,n1);
}
Example #7
0
static int set_new_value(BaseTDBResolver *self, TDB_DATA urn, TDB_DATA attribute, 
			 TDB_DATA value) {
  TDB_DATA key,offset;
  char buff[BUFF_SIZE];
  char buff2[BUFF_SIZE];
  uint32_t new_offset;
  TDB_DATA_LIST i;

  // Update the value in the db and replace with new value
  key.dptr = (unsigned char *)buff;
  key.dsize = calculate_key(self, urn, attribute, buff, BUFF_SIZE, 1);

  // Lock the database
  tdb_lockall(self->data_db);

  // Go to the end and write the new record
  new_offset = lseek(self->data_store_fd, 0, SEEK_END);
  // The offset to the next item in the list
  i.offset = 0;
  i.length = value.dsize;

  write(self->data_store_fd, &i, sizeof(i));
  write(self->data_store_fd, value.dptr, value.dsize);

  offset.dptr = (unsigned char *)buff2;
  offset.dsize = from_int(new_offset, buff2, BUFF_SIZE);

  tdb_store(self->data_db, key, offset, TDB_REPLACE);

  //Done
  tdb_unlockall(self->data_db);

  return 1;
};
Example #8
0
static PyObject *get_urn_by_id(BaseTDBResolver *self, PyObject *args, PyObject *kwds) {
  static char *kwlist[] = {"id", NULL};
  char buff[BUFF_SIZE];
  uint32_t id;
  PyObject *result, *id_obj;
  TDB_DATA urn;
  TDB_DATA key;

  if(!PyArg_ParseTupleAndKeywords(args, kwds, "O", kwlist, 
				  &id_obj))
    return NULL;

  id_obj = PyNumber_Long(id_obj);
  if(!id_obj) return NULL;

  id = PyLong_AsUnsignedLongLong(id_obj);
  Py_DECREF(id_obj);

  /* We get given an ID and we retrieve the URN it belongs to */
  key.dptr = (unsigned char *)buff;
  key.dsize = from_int(id, buff, BUFF_SIZE);

  urn = tdb_fetch(self->urn_db, key);
  
  if(urn.dptr) {
    result = PyString_FromStringAndSize((char *)urn.dptr, urn.dsize);
    free(urn.dptr);
    return result;
  };

  Py_RETURN_NONE;
};
Example #9
0
int main() {
  bignum l1 = from_str("99"),
    l2 = from_str("10");

  printf("%s\n", to_str(from_int(666)));
  printf("%d\n", to_int(from_str("666")));

  bignum sum = plus(l1, l2);
  printf("%s\n", to_str(sum));

  bignum diff = minus(l1, l2);
  printf("%s\n", to_str(diff));

  printf("%i\n", lesser(l1, l2));

  bignum muli = mul_int(l1, 2);
  printf("%s\n", to_str(muli));

  printf("%d\n", mod_int(l1, 10));

  bignum divi = div_int(l1, 10);
  printf("%s\n", to_str(divi));

  bignum mul = multiply(l1, l2);
  printf("%s\n", to_str(mul));

  bignum div = divide(l1, l2);
  printf("%s\n", to_str(div));

  bignum mod = modulo(l1, l2);
  printf("%s\n", to_str(mod));

  return 0;
}
Example #10
0
ring_elem RingZZ::invert(const ring_elem f) const
{
  if (is_unit(f))
    return copy(f);
  else
    return from_int(0);
}
Example #11
0
bool Z_mod::initialize_Z_mod(int p)
{

  initialize_ring(p);


  declare_field();
  int i,j,q,n;

  if (P==2)
    _minus_one = 0;
  else
    _minus_one = (P-1)/2;

  if (P==2)
    _prim_root = 1;
  else
    {
      j=1;
      for (i=2; (i<P && j<P-1); i++)
        for (q=i,j=1; (q!=1 && j<P); q=(q*i)%P,j++);
      _prim_root = i-1;
    }

  // cerr << "z_mod_p: creating table for P = " << P << endl;
  _log_table = newarray_atomic(int,P);
  _exp_table = newarray_atomic(int,P);
  for (i=0, n=1; i<P-1; i++, n=(n*_prim_root)%P)
    {
      _log_table[n] = i;  // i = log_(base _prim_root)(n)
      _exp_table[i] = n;  // n = (_prim_root)^i
    }
  _ZERO            = P-1;
  _exp_table[_ZERO] = 0;
  _log_table[0]    = _ZERO;

  _P1 = P-1;

  zeroV = from_int(0);
  oneV = from_int(1);
  minus_oneV = from_int(-1);

  coeffR = new CoefficientRingZZp(P,_log_table, _exp_table);
  aringZZp = new M2::ARingZZp(P); // WARNING: this uses that the primitive element is the SAME as computed above!!
    // Remove this warning once Z_mod is not in existence any longer.
  return true;
}
Example #12
0
bool Z_mod::promote(const Ring *Rf, const ring_elem f, ring_elem &result) const
{
  // Rf = Z ---> Z/p
  if (Rf == globalZZ)
    {
      result = from_int(f.get_mpz());
      return true;
    }
  return false;
}
Example #13
0
    TagIncludedValue operator +(TagIncludedValue rhs) const {
        switch (this->type()) {
        case TYPE_FIXNUM:
            switch (rhs.type()) {
            case TYPE_FIXNUM: {
                fixint_t l = fix2int(this->u.iv);
                fixint_t r = fix2int(rhs.u.iv);
                r = l + r;
                return from_int(r);
            }
                break;

            case TYPE_FLOAT: {
                double lv = fix2int(this->u.iv);
                Object *ro = rhs.u.obj;
                return from_float(lv + ro->u.fv);
            }
                break;

            default:
                abort();
            }
            break;

        case TYPE_FLOAT: {
            Object *lo = this->u.obj;
            switch (rhs.type()) {
            case TYPE_FIXNUM: {
                /* fl + fi */
                fixint_t r = fix2int(rhs.u.iv);
                double a = lo->u.fv + r;
                return from_float(a);
            }
                break;
                
            case TYPE_FLOAT: {
                Object *ro = rhs.u.obj;
                /* fl + fl */
                return from_float(lo->u.fv + ro->u.fv);
            }
                break;

            default:
                abort();    // ??
                break;
            }
        }
            break;

        default:
            abort();    // ??
        }
        abort();    // ??
    }
 virtual QVariant data (int int_role) const override
 {
   painter_server_model_role role = from_int (int_role);
   if (role.second)
     return current_active () == role.first;
   else
     {
       item_paint_server server = current_server ();
       server.set_current_type (role.first);
       return QVariant::fromValue (server);
     }
 }
Example #15
0
bool GF::promote(const Ring *Rf, const ring_elem f, ring_elem &result) const
{
  // Rf = Z/p[x]/F(x) ---> GF(p,n)
  // promotion: need to be able to know the value of 'x'.
  // lift: need to compute (primite_element)^e

  if (Rf != _originalR) return false;

  result = from_int(0);
  int exp[1];
  for (Nterm *t = f; t != NULL; t = t->next)
    {
      ring_elem coef = from_int(_originalR->getCoefficientRing()->coerce_to_int(t->coeff));
      _originalR->getMonoid()->to_expvector(t->monom, exp);
      // exp[0] is the variable we want.  Notice that since the ring is a quotient,
      // this degree is < n (where Q_ = P^n).
      ring_elem g = power(_x_exponent, exp[0]);
      g = mult(g, coef);
      internal_add_to(result, g);
    }
  return true;
}
Example #16
0
ring_elem SchurRing::power(const ring_elem f, int n) const
{
  ring_elem result = from_int(1);
  if (n < 0)
    {
      ERROR("element not invertible");
      return result;
    }
  for (int i=0; i<n; i++)
    {
      ring_elem g = mult(result, f);
      remove(result);
      result = g;
    }
  return result;
}
  virtual void set_model_data (const std::map<int, QVariant> &data_map) override
  {
    auto changer = m_base_model->do_multi_change ();
    for (auto && data_pair : data_map)
      {
        painter_server_model_role role = from_int (data_pair.first); 
        if (!role.second || !data_pair.second.toBool ())
          continue;

        item_paint_server server = current_server ();
        server.set_current_type (role.first);
        if (is_selected_fill ())
          changer->set_data ((int)style_controller_role_t::FILL_SERVER, QVariant::fromValue (server));
        else
          changer->set_data ((int)style_controller_role_t::STROKE_SERVER, QVariant::fromValue (server));
      }
  }
Example #18
0
/* 
 * Convert a object into another object
 */
Object *convert_object(Object *o, int type)
{
	switch(get_type(o)) {
		case T_INT :
			return from_int(o, type);
		case T_CHAR :
			return from_char(o, type);
		case T_STRING :
			return from_string(o, type);
		case T_FLOAT :
			return from_float(o, type);
		case T_BYTE_ARRAY :
			return from_barray(o, type);
	}
	/* Invalid tyep specified */
	return NULL;
}
Example #19
0
/** Fetches the id for the given key from the database tdb - if
    create_new is set and there is no id present, we create a new id
    and return id.
*/
static uint32_t get_id(struct tdb_context *tdb, TDB_DATA key, int create_new) {
  char buff[BUFF_SIZE];
  TDB_DATA urn_id;
  uint32_t max_id=0;
  uint32_t result=0;
  
  /* We get given an ID and we retrieve the URN it belongs to */
  tdb_lockall(tdb);
  urn_id = tdb_fetch(tdb, key);

  if(urn_id.dptr) {
    result = to_int(urn_id);
    free(urn_id.dptr);

    tdb_unlockall(tdb);
    return result;
  } else if(create_new) {
    TDB_DATA max_key;

    max_key.dptr = (unsigned char *)MAX_KEY;
    max_key.dsize = strlen(MAX_KEY);

    urn_id = tdb_fetch(tdb, max_key);
    if(urn_id.dptr) {
      max_id = to_int(urn_id);
      free(urn_id.dptr);
    };

    max_id++;
    
    // Update the new MAX_KEY
    urn_id.dptr = (unsigned char *)buff;
    urn_id.dsize = from_int(max_id, buff, BUFF_SIZE);
    tdb_store(tdb, key, urn_id, TDB_REPLACE);
    tdb_store(tdb, max_key, urn_id, TDB_REPLACE);
    tdb_store(tdb, urn_id, key, TDB_REPLACE);

    tdb_unlockall(tdb);
    return max_id;
  };

  tdb_unlockall(tdb);
  // This should never happen
  return 0;
};
Example #20
0
int main(int argc, char** argv) {

	Player **Gamer;
	int numberOfGamers = 6; // количество игроков за столом
	int numberOfRounds=4;
	Gamer = new Player*[6]; // 6 игроков
	Pack Cards(0); // колода карт
	Card FiveCard[5]; // 5 общих карт
	int nRound = 1; // первый круг торговли
	/* создадим numberOfGamers игроков */
	for (int i = 0; i < numberOfGamers; i++) {
		Gamer[i] = new Player("Gamer" + from_int(i), 50, i);
		Gamer[i][0].SetCards(Cards.getCard(), Cards.getCard());
		std::cout << Gamer[i][0].getLogin() << " "
				<< Gamer[i][0].GetFirstCard().getRank() << " of "
				<< Gamer[i][0].GetFirstCard().getSuit() << " ";
		std::cout << Gamer[i][0].GetSecondCard().getRank() << " of "
				<< Gamer[i][0].GetSecondCard().getSuit() << std::endl;
	}
	// ставки игроков для теста
	/*
	int Stavki[4][6] = {
			{ 2, 2, 2, 2, 2, 2 },
			{ 6, 5, 6, 6, 6, 6 },
			{ 6, 0, 4, 5, 6, 6 },
			{ 2, 0, 0, 0, 4, 5 } };*/
	int **Stavki= new int*[numberOfRounds];
		for (int i=0;i<numberOfRounds;i++)
			Stavki[i]= new int[numberOfGamers];
	createSetOfStakes(Stavki,numberOfRounds,numberOfGamers);
	// объявление банка
	Bank bank(Gamer, numberOfGamers);
	// круг торговли и заполнение банка
	std::cout << "Round " << nRound << std::endl;
	// ставки игроков
	for (int i = 0; i < numberOfGamers; i++) {
		std::cout << "Gamer" << i + 1 << " stake is " << Stavki[nRound - 1][i]
				<< " ";
		bank.addPlayer(*Gamer[i], Stavki[nRound - 1][i], nRound - 1);
	}
	std::cout << std::endl;

	std::cout << "------------Card Pack-----------" << std::endl;
	for (int i = 0; i < 3; i++) {
		FiveCard[i] = Cards.getCard();
		std::cout << FiveCard[i].getRank() << " of " << FiveCard[i].getSuit()
				<< std::endl;
	}

	// круг торговли и заполнение банка
	std::cout << "Round " << ++nRound <<std::endl;
	// ставки игроков
	for (int i = 0; i < numberOfGamers; i++) {
		std::cout << "Gamer" << i + 1 << " stake is" << Stavki[nRound - 1][i]
				<< " ";
		bank.addPlayer(*Gamer[i], Stavki[nRound - 1][i], nRound - 1);
	}
	std::cout << std::endl;

	std::cout << "------------Card Pack-----------" << std::endl;
	FiveCard[3] = Cards.getCard();
	for (int i = 0; i < 4; i++) {
		std::cout << FiveCard[i].getRank() << " of " << FiveCard[i].getSuit()
				<< std::endl;
	}

	// круг торговли и заполнение банка
	std::cout << "Round " << ++nRound << std::endl;;
	// ставки игроков
	for (int i = 0; i < numberOfGamers; i++) {
		std::cout << "Gamer" << i + 1 << " stake is " << Stavki[nRound - 1][i]
				<< " ";
		bank.addPlayer(*Gamer[i], Stavki[nRound - 1][i], nRound - 1);
	}
	std::cout << std::endl;

	std::cout << "------------Card Pack-----------" << std::endl;
	FiveCard[4] = Cards.getCard();
	for (int i = 0; i < 5; i++) {
		std::cout << FiveCard[i].getRank() << " of " << FiveCard[i].getSuit()
				<< std::endl;
	}

	// последний круг торговли и заполнение банка
	std::cout << "Round " << ++nRound << std::endl;
	// ставки игроков
	for (int i = 0; i < numberOfGamers; i++) {
		std::cout << "Gamer" << i + 1 << " stake is" << Stavki[nRound - 1][i]
				<< " ";
		bank.addPlayer(*Gamer[i], Stavki[nRound - 1][i], nRound - 1);
	}
	std::cout << std::endl;

	Calculation counting(Gamer, FiveCard, 6);
	counting.WinnersCalc();
	for (int i = 0; i < 6; i++) {
		std::cout << Gamer[i][0].getLogin() << " is in "
				<< Gamer[i][0].getWinPlace() << " place " << " has "
				<< counting.GetCombinationName(Gamer[i]) << std::endl;
	}
	// раздача денег
	bank.winners();

	std::cout << std::endl;
	for (int i = 0; i < numberOfGamers; i++) {
		std::cout << "Position table: " << Gamer[i]->getPosition() << " "<<Gamer[i]->getLogin()<<" ";
		std::cout << Gamer[i]->getPurse() << "$"<<std::endl;
	}
	std::cout << "SumBank: " << bank.getSumBank() << std::endl;

	for (int i = 0; i < 6; i++) {
		delete[] Gamer[i];
	}
	delete[] Gamer;
	return 0;
}
int cmd_set_timeout(struct libusb_device_handle* devh, int timeout) {
	char dataptr[4];
	from_int(timeout, dataptr);
	return cmd_setter(devh, DOT11_SET_TIMEOUT, dataptr, 4);
}
Example #22
0
bool GF::initialize_GF(const RingElement *prim)
{
  // set the GF ring tables.  Returns false if there is an error.
  _primitive_element = prim;
  _originalR = prim->get_ring()->cast_to_PolynomialRing();
  initialize_ring(_originalR->charac(),
                  PolyRing::get_trivial_poly_ring());

  declare_field();

  int i,j;

  if (_originalR->n_quotients() != 1)
    {
      ERROR("rawGaloisField expected an element of a quotient ring of the form ZZ/p[x]/(f)");
      return false;
    }
  ring_elem f = _originalR->quotient_element(0);
  Nterm *t = f;
  int n = _originalR->getMonoid()->primary_degree(t->monom);

  Q_ = P;
  for (i=1; i<n; i++) Q_ *= P;

  Qexp_ = n;
  Q1_ = Q_-1;
  _ZERO = 0;
  _ONE = Q1_;
  _MINUS_ONE = (P == 2 ? _ONE : Q1_/2);

  // Get ready to create the 'one_table'
  array<ring_elem> polys;
  polys.append(_originalR->from_int(0));
  ring_elem primelem = prim->get_value();
  polys.append(_originalR->copy(primelem));

  ring_elem oneR = _originalR->one();

  _x_exponent = -1;
  ring_elem x = _originalR->var(0);
  if (_originalR->is_equal(primelem, x))
    _x_exponent = 1;
  for (i=2; i<Q_; i++)
    {
      ring_elem g = _originalR->mult(polys[i-1], primelem);
      polys.append(g);
      if (_originalR->is_equal(g, oneR)) break;
      if (_originalR->is_equal(g, x))
        _x_exponent = i;
    }

  if (polys.length() != Q_)
    {
      ERROR("GF: primitive element expected");
      return false;
    }

  assert(_x_exponent >= 0);

  // Set 'one_table'.
  _one_table = newarray_atomic(int,Q_);
  _one_table[0] = Q_-1;
  for (i=1; i<=Q_-1; i++)
    {
      if (system_interrupted())
        return false;
      ring_elem f1 = _originalR->add(polys[i], oneR);
      for (j=1; j<=Q_-1; j++)
        if (_originalR->is_equal(f1, polys[j]))
          break;
      _one_table[i] = j;
    }

  // Create the Z/P ---> GF(Q) inclusion map
  _from_int_table = newarray_atomic(int,P);
  int a = _ONE;
  _from_int_table[0] = _ZERO;
  for (i=1; i<P; i++)
    {
      _from_int_table[i] = a;
      a = _one_table[a];
    }

  zeroV = from_int(0);
  oneV = from_int(1);
  minus_oneV = from_int(-1);

  // M2::GaloisFieldTable G(*_originalR, primelem);
  //  G.display(std::cout);

  return true;
}
int cmd_set_datalink(struct libusb_device_handle* devh, int datalink) {
	char dataptr[4];
	from_int(datalink, dataptr);
	return cmd_setter(devh, DOT11_SET_DATALINK, dataptr, 4);
}
Example #24
0
static PyObject *add(BaseTDBResolver *self, PyObject *args, PyObject *kwds) {
  char buff[BUFF_SIZE];
  char buff2[BUFF_SIZE];
  static char *kwlist[] = {"urn", "attribute", "value", "unique", NULL};
  TDB_DATA urn;
  TDB_DATA attribute;
  TDB_DATA key;
  PyObject *value_obj, *value_str;
  TDB_DATA value;
  TDB_DATA offset;
  TDB_DATA_LIST i;
  uint32_t previous_offset=0;
  uint32_t new_offset;
  int unique = 0;

  attribute.dsize = 0;
  urn.dsize = 0;
  if(!PyArg_ParseTupleAndKeywords(args, kwds, "s#s#O|L", kwlist, 
				  &urn.dptr, &urn.dsize, 
				  &attribute.dptr, &attribute.dsize,
				  &value_obj, &unique))
    return NULL;

  // Convert the object to a string
  value_str = PyObject_Str(value_obj);
  if(!value_str) return NULL;

  PyString_AsStringAndSize(value_str, (char **)&value.dptr, 
			   &value.dsize);

  /** If the value is already in the list, we just ignore this
      request.
  */
  if(unique && is_value_present(self, urn, attribute, value, 1)) {
    goto exit;
  };

  // Ok if we get here, the value is not already stored there.
  key.dptr = (unsigned char *)buff;
  key.dsize = calculate_key(self, urn, attribute, buff, BUFF_SIZE, 1);

  // Lock the data_db to synchronise access to the store:
  tdb_lockall(self->data_db);

  offset = tdb_fetch(self->data_db, key);
  if(offset.dptr) {
    previous_offset = to_int(offset);
    free(offset.dptr);
  };

  // Go to the end and write the new record
  new_offset = lseek(self->data_store_fd, 0, SEEK_END);
  i.offset = previous_offset;
  i.length = value.dsize;

  write(self->data_store_fd, &i, sizeof(i));
  write(self->data_store_fd, value.dptr, value.dsize);

  // Now store the offset to this in the tdb database
  value.dptr = (unsigned char *)buff2;
  value.dsize = from_int(new_offset, buff2, BUFF_SIZE);

  tdb_store(self->data_db, key, value, TDB_REPLACE);

  // Done
  tdb_unlockall(self->data_db);

  exit:
  Py_DECREF(value_str);
  Py_RETURN_NONE;
};
Example #25
0
std::string formatter::format(const formatting_options &_opt)
{
   formatting_options last_opt, opt(_opt);
   std::string result;
   if (!opt_stack.empty())
   {
      int cnt=0;
      fo_deque::reverse_iterator i;
      for (i=opt_stack.rbegin(); i!=opt_stack.rend(); ++i)
      {         
         if (*i==opt)
            break;
         ++cnt;
      }
      if (cnt==0)
         return "";
      if (i!=opt_stack.rend())
      {
         while (cnt--)
         {
            result+="</span>";
            opt_stack.pop_back();
         }
         return result;
      }
      last_opt=opt_stack.back();
   }
   if (last_opt.chpVAlign!=formatting_options::va_normal 
       && last_opt.chpVAlign!=opt.chpVAlign)
   {
      int cnt=0;
      fo_deque::reverse_iterator i;
      for (i=opt_stack.rbegin(); i!=opt_stack.rend(); ++i)
      {         
         if (i->chpVAlign==formatting_options::va_normal)
            break;
         ++cnt;
      }
      while (cnt--)
      {
         result+="</span>";
         opt_stack.pop_back();
      }
      last_opt=opt_stack.empty()?formatting_options():opt_stack.back();
   }
   std::string style;
   if (opt.chpBold!=last_opt.chpBold)
   {
      style+="font-weight:";
      style+=opt.chpBold?"bold":"normal";
      style+=";";
   }
   if (opt.chpItalic!=last_opt.chpItalic)
   {
      style+="font-style:";
      style+=opt.chpItalic?"italic":"normal";
      style+=";";
   }
   if (opt.chpUnderline!=last_opt.chpUnderline)
   {
      style+="text-decoration:";
      style+=opt.chpUnderline?"underline":"none";
      style+=";";
   }
   if (opt.chpVAlign!=formatting_options::va_normal)
      opt.chpFontSize=(int)(0.7*(opt.chpFontSize?opt.chpFontSize:24));
   if (opt.chpFontSize!=last_opt.chpFontSize)
   {
      style+="font-size:";
      style+=from_int(opt.chpFontSize/2);
      style+="pt;";
   }
   if (opt.chpVAlign!=last_opt.chpVAlign)
   {
      style+="vertical-align:";
      style+=opt.chpVAlign==formatting_options::va_sub?"sub":"super";
      style+=";";
   }
   if (opt.chpFColor!=last_opt.chpFColor)
   {
      style+="color:";
      style+=opt.chpFColor.r>0?"#"+hex(opt.chpFColor.r&0xFF)
                                  +hex(opt.chpFColor.g&0xFF)
                                  +hex(opt.chpFColor.b&0xFF)
                              :"WindowText";
      style+=";";
   }
   if (opt.chpBColor!=last_opt.chpBColor)
   {
      style+="background-color:";
      style+=opt.chpBColor.r>0?"#"+hex(opt.chpBColor.r&0xFF)
                                  +hex(opt.chpBColor.g&0xFF)
                                  +hex(opt.chpBColor.b&0xFF)
                              :"Window";
      style+=";";
   }
   if (opt.chpHighlight!=last_opt.chpHighlight)
   {
      style+="background-color:";
      switch (opt.chpHighlight)
      {
      case 0: style+="Window"; break;
      case 1: style+="black"; break;
      case 2: style+="blue"; break;
      case 3: style+="aqua"; break;
      case 4: style+="lime"; break;
      case 5: style+="fuchsia"; break;
      case 6: style+="red"; break;
      case 7: style+="yellow"; break;
      case 9: style+="navy"; break;
      case 10: style+="teal"; break;
      case 11: style+="green"; break;
      case 12: style+="purple"; break;
      case 13: style+="maroon"; break;
      case 14: style+="olive"; break;
      case 15: style+="gray"; break;
      case 16: style+="silver"; break;
      }
      style+=";";
   }
   if (opt.chpFont!=last_opt.chpFont)
   {
      style+="font-family:'";
      style+=opt.chpFont.name.empty()?"serif":opt.chpFont.name;
      style+="'";
      switch (opt.chpFont.family)
      {
      case font::ff_serif: style+=", serif"; break;
      case font::ff_sans_serif: style+=", sans-serif"; break;
      case font::ff_cursive: style+=", cursive"; break;
      case font::ff_fantasy: style+=", fantasy"; break;
      case font::ff_monospace: style+=", monospace"; break;
      case font::ff_none: break;
      }
      style+=";";
   }
   opt_stack.push_back(opt);
   return result+"<span style=\""+style+"\">";
}
int cmd_set_channel(struct libusb_device_handle* devh, int channel) {
	char dataptr[4];
	from_int(channel, dataptr);
	return cmd_setter(devh, DOT11_SET_CHANNEL, dataptr, 4);
}
Example #27
0
void prep_response(char r)
{
  char arg = incoming_packet[2];
  
  switch(r)
  {
    //Prepare id to be sent
    case 'i':
      prepare_packet(from_int(slave_id), sizeof(int));
      break;
      
    //Type
    case 't':
      prepare_packet( slave_type, strlen( slave_type ) );
      break;
      
    //Name
    case 'n':
      prepare_packet(slave_name, strlen( slave_name ) );
      break;
      
    //Deployment Date
    case 'd':
      prepare_packet(slave_init_date, sizeof(slave_init_date));
      break;
      
    //Number of read channels
    case 'r':
      prepare_packet(from_int(slave_rcount),sizeof(int)); 
      break;
      
    //Number of write channels
    case 'w':
      prepare_packet(from_int(slave_wcount),sizeof(int)); 
      break;
  //Start measurment on channel
    case  'm':
    {
      //Wait for measurment
      unsigned wait = slave_measure();
      prepare_packet( from_int(wait), sizeof( unsigned ) );
      waiting_measure = 1;
    }
      break;
      
    //Channel value/output
    case  'q':
      if(arg < slave_rcount )
      {
      	char* valstr = slave_read( arg );
        prepare_packet( valstr, strlen( valstr ) );
      }
      else
        prep_err();
      break;
      
    case 'f':
      prepare_packet(slave_info, strlen( slave_info ) );
      break;
    //Echo      
     case 'e':
         prepare_packet("e", 1);
         break;
         
    //Error
    default:
      prep_err();
      break;
  }
}