コード例 #1
0
ファイル: Interpreter.cpp プロジェクト: promicr/Toaster-VM
void Interpreter::outputTokenData(const std::string & instruction)
{
    const Instruction & i = Lexer::tokenize(instruction, machine);
    std::cout << (i.label.isNull() ? "" : typeString(i.label.type) + " ")
              << typeString(i.opcode.type) << " "
              << (i.operand1.isPointer ? "@" : "") + typeString(i.operand1.type) << " "
              << (i.operand2.isPointer ? "@" : "") + typeString(i.operand2.type) << std::endl
              << (i.label.isNull() ? "" : valueString(i.label) + " ")
              << valueString(i.opcode) << " "
              << valueString(i.operand1) << " "
              << valueString(i.operand2) << std::endl;
}
コード例 #2
0
ファイル: ThatStar.cpp プロジェクト: sleimanf/aibot
void ThatStar::setAttribute(const StringPimpl &name, const StringPimpl &value) throw(InternalProgrammerErrorException &)
{

    LOG_BOT_METHOD("void ThatStar::setAttribute(const StringPimpl &name, const StringPimpl &value)");
    String nameString(name.c_str());
    String valueString(value.c_str());

    logging("<Input> name:" + nameString);
    logging("<Input> value:" + valueString);

    try
    {
        if(nameString == "index" && (!valueString.empty()))
        {
            m_pimpl->m_index = lexical_cast<int>(valueString);
        }
    }
    catch(bad_lexical_cast &)
    {
        String msg("Index string is not numeric");
        msg += valueString;
        m_pimpl->m_builder.getCallBacks().thatStarTagNumericConversionError(msg.c_str());
        logging("Error, the cast to a numeric value failed");
    }

}
コード例 #3
0
QString CharDataInformation::valueString() const
{
    if (!mWasAbleToRead)
        return i18nc("invalid value (out of range)", "<invalid>");
    //TODO char codec
    return valueString(mValue);
}
コード例 #4
0
ファイル: SVGLengthList.cpp プロジェクト: MYSHLIFE/webkit
void SVGLengthList::parse(const String& value, SVGLengthMode mode)
{
    clear();
    ExceptionCode ec = 0;

    const UChar* ptr = value.deprecatedCharacters();
    const UChar* end = ptr + value.length();
    while (ptr < end) {
        const UChar* start = ptr;
        while (ptr < end && *ptr != ',' && !isSVGSpace(*ptr))
            ptr++;
        if (ptr == start)
            break;

        SVGLength length(mode);
        String valueString(start, ptr - start);
        if (valueString.isEmpty())
            return;
        length.setValueAsString(valueString, ec);
        if (ec)
            return;
        append(length);
        skipOptionalSVGSpacesOrDelimiter(ptr, end);
    }
}
コード例 #5
0
ファイル: textitem.c プロジェクト: lamby/pkg-swi-prolog
status
initialiseTextItem(TextItem ti, Name name, Any val, Code msg)
{ CharArray str;

  if ( isDefault(name) )
    name = getClassNameObject(ti);
  if ( isDefault(val) )
    val = NAME_;

  createDialogItem(ti, name);

  assign(ti, message, 	       msg);
  assign(ti, value_set,	       DEFAULT);
  assign(ti, value_width,      DEFAULT);
  assign(ti, print_name,       CtoString(""));

  assign(ti, advance,          NAME_next);
  assign(ti, show_label,       ON);
  assign(ti, value_text,       newObject(ClassText, EAV));
  assign(ti, editable,	       ON);

  assign(ti, default_value,    val);
  assign(ti, selection,        getDefaultTextItem(ti));
  assign(ti, type,	       getSelectionTypeTextItem(ti));
  assign(ti, auto_value_align, OFF);
  assign(ti, hor_stretch,      toInt(100));
  assign(ti, style,	       NAME_normal);

  if ( (str = get(ti, NAME_printNameOfValue, val, EAV)) )
    valueString(ti->print_name, str);
  resetTextItem(ti);

  return requestComputeGraphical(ti, DEFAULT);
}
コード例 #6
0
QStyleOptionProgressBar KisAbstractSliderSpinBox::progressBarOptions() const
{
    const Q_D(KisAbstractSliderSpinBox);
    QStyleOptionSpinBox spinOpts = spinBoxOptions();

    //Create opts for drawing the progress portion
    QStyleOptionProgressBar progressOpts;
    progressOpts.initFrom(this);
    progressOpts.maximum = d->maximum;
    progressOpts.minimum = d->minimum;

    qreal minDbl = d->minimum;

    qreal dValues = (d->maximum - minDbl);

    progressOpts.progress = dValues * pow((d->value - minDbl) / dValues, 1 / d->exponentRatio) + minDbl;
    progressOpts.text = valueString() + d->suffix;
    progressOpts.textAlignment = Qt::AlignCenter;
    progressOpts.textVisible = !(d->edit->isVisible());

    //Change opts rect to be only the ComboBox's text area
    progressOpts.rect = progressRect(spinOpts);

    return progressOpts;
}
コード例 #7
0
ファイル: BaseObject.cpp プロジェクト: fredroy/sofa
void BaseObject::parse( BaseObjectDescription* arg )
{
    if (arg->getAttribute("src"))
    {
        std::string valueString(arg->getAttribute("src"));

        if (valueString[0] != '@')
        {
            msg_error() <<"'src' attribute value should be a link using '@'";
        }
        else
        {
            if(valueString.size() == 1) // ignore '@' alone
            {
                msg_warning() << "'src=@' does nothing.";
            }
            else
            {
                std::vector< std::string > attributeList;
                arg->getAttributeList(attributeList);
                setSrc(valueString, &attributeList);
            }

        }
        arg->removeAttribute("src");
    }
    Base::parse(arg);
}
コード例 #8
0
void DAbstractSliderSpinBox::keyPressEvent(QKeyEvent* e)
{
    Q_D(DAbstractSliderSpinBox);

    switch (e->key())
    {
        case Qt::Key_Up:
        case Qt::Key_Right:
            setInternalValue(d->value + d->singleStep);

            if (d->edit->isVisible())
            {
                d->edit->setText(valueString());
            }

            update();
            break;
        case Qt::Key_Down:
        case Qt::Key_Left:
            setInternalValue(d->value - d->singleStep);

            if (d->edit->isVisible())
            {
                d->edit->setText(valueString());
            }

            update();
            break;
        case Qt::Key_Shift:
            d->shiftPercent = pow(double(d->value - d->minimum) / double(d->maximum - d->minimum), 1 / double(d->exponentRatio));
            d->shiftMode = true;
            break;
        case Qt::Key_Enter: // Line edit isn't "accepting" key strokes...
        case Qt::Key_Return:
        case Qt::Key_Escape:
        case Qt::Key_Control:
        case Qt::Key_Alt:
        case Qt::Key_AltGr:
        case Qt::Key_Super_L:
        case Qt::Key_Super_R:
            break;
        default:
            showEdit();
            d->edit->event(e);
            break;
    }
}
コード例 #9
0
StatusCode CreatePositionedHit::execute() {

  //Get the input caloHits collection
  const fcc::CaloHitCollection* calocells = m_caloCells.get();
  debug() << "Input caloCells collection size: " << calocells->size() << endmsg;

  //Initialize output CaloClusterCollection
  auto edmPositionedHitCollection = m_caloPositionedHits.createAndPut();

  //Intialize value of the half size in r
  double r_cell_size_half = -1.;
  uint64_t id = 0;
  auto decoder = m_geoSvc->lcdd()->readout(m_readoutName).idSpec().decoder();
  //Loop though CaloHits, calculate position from cellID, create and fill information in a CaloCluster
  for (const auto& cell : *calocells) {
    id = cell.core().cellId;

    //Current active layer r-minimum r
    //Volume dimensions of Tube - det::utils::tubeDimensions(volumeID) - ThreeVector rmin, rmax, dz (half-length)
    double rmin_layer = det::utils::tubeDimensions(id).x();
    //Next active layer [ needed for r_cell = middle of the cell (active + passive) ]
    //If half size of cell in r not known, calculate it from the next layer r-min
    decoder->setValue(id);
    if (r_cell_size_half < 0) {
      if ((*decoder)[m_activeFieldName] < m_numLayers - 1) {
        (*decoder)[m_activeFieldName] = (*decoder)[m_activeFieldName] + 1;
        uint64_t cellID_next = decoder->getValue();
        double rmin_layer_next = det::utils::tubeDimensions(cellID_next).x();
        r_cell_size_half = (rmin_layer_next - rmin_layer)*0.5;
      }
      else {
        info() << "Cell size in r not defined!!!! " << endmsg;
      }
    }
    //r_cell: middle of the cell (active + passive)
    double r_cell = rmin_layer+r_cell_size_half;

    //Global position of the cell
    auto position =  m_segmentation->positionFromREtaPhi( r_cell, m_segmentation->eta(id), m_segmentation->phi(id) );
    auto edmPos = fcc::Point();
    edmPos.x = position.x();
    edmPos.y = position.y();
    edmPos.z = position.z();

    auto positionedHit = edmPositionedHitCollection->create(edmPos, cell.core());

    //Debug information about cells
    if ( msgLevel ( MSG::DEBUG ) ) {
      debug() << "cellID " << id <<" energy " << cell.core().energy << " decoder: all fields "
              << decoder->valueString() << " r " << r_cell << " eta " <<  m_segmentation->eta(id)
              << " phi " <<  m_segmentation->phi(id)<< endmsg;
    }
  }
  debug() << "Output CaloCluster collection size: " << edmPositionedHitCollection->size() << endmsg;


  return StatusCode::SUCCESS;
}
コード例 #10
0
		/*
		 * The value that PropertySetting uses to hold values passing from 
		 * an input XML stream to data object properties is currently an SDOXMLString
		 * SDOXMLString use libxml2 functions to do it's thing and in the process messes
		 * up CDATA markers. To avoid this we use our own version of CDATA makers and 
		 * use this method to replace them with the real ones just before the PropertSetting
		 * gets committed to the SDO proper in SDOSAX2Parser
		 */
        SDOString PropertySetting::getStringWithCDataMarkers()
		{
			SDOString valueString((const char*)value);
			
			SDOString returnString = SDOUtils::replace(valueString, SDOUtils::CDataStartMarker, SDOUtils::XMLCDataStartMarker);
			returnString = SDOUtils::replace(returnString, SDOUtils::CDataEndMarker, SDOUtils::XMLCDataEndMarker);

			return returnString;
		}
コード例 #11
0
ファイル: LNLeapDevice.cpp プロジェクト: cjyeh/LeapMotionAS3
 FREObject LNLeapDevice::setConfigString(uint32_t len, const uint8_t* key, uint32_t valueLen, const uint8_t* valueArray) {
     std::string keyString( key, key+len );
     std::string valueString( valueArray, valueArray+valueLen );
     
     FREObject freReturnValue;
     FRENewObjectFromBool(controller->config().setString(keyString, valueString) ? 1 : 0, &freReturnValue);
     
     return freReturnValue;
 }
コード例 #12
0
void KisAbstractSliderSpinBox::showEdit()
{
    Q_D(KisAbstractSliderSpinBox);
    if (d->edit->isVisible()) return;
    d->edit->setGeometry(progressRect(spinBoxOptions()));
    d->edit->setText(valueString());
    d->edit->selectAll();
    d->edit->show();
    d->edit->setFocus(Qt::OtherFocusReason);
    update();
}
コード例 #13
0
ファイル: LNLeapDevice.cpp プロジェクト: cjyeh/LeapMotionAS3
 FREObject LNLeapDevice::getConfigString(uint32_t len, const uint8_t* key) {
     std::string keyString( key, key+len );
     std::string valueString(controller->config().getString(keyString));
     
     std::vector<uint8_t> valueVector(valueString.begin(), valueString.end());
     uint8_t *valueArray = &valueVector[0];
     
     FREObject freReturnValue;
     FRENewObjectFromUTF8(valueString.length(), valueArray, &freReturnValue);
     
     return freReturnValue;
 }
コード例 #14
0
ファイル: TestWebExtensions.cpp プロジェクト: nickooms/webkit
static void testWebExtensionWindowObjectCleared(WebViewTest* test, gconstpointer)
{
    test->loadHtml("<html><header></header><body></body></html>", 0);
    test->waitUntilLoadFinished();

    GUniqueOutPtr<GError> error;
    WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished("window.echo('Foo');", &error.outPtr());
    g_assert(javascriptResult);
    g_assert(!error.get());
    GUniquePtr<char> valueString(WebViewTest::javascriptResultToCString(javascriptResult));
    g_assert_cmpstr(valueString.get(), ==, "Foo");
}
コード例 #15
0
HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::setProperty( 
    /* [in] */ BSTR propertyName,
    /* [in] */ BSTR value,
    /* [in] */ BSTR priority)
{
    WebCore::String propertyNameString(propertyName);
    WebCore::String valueString(value);
    WebCore::String priorityString(priority);
    // FIXME: <rdar://5148045> return DOM exception info
    WebCore::ExceptionCode code;
    m_style->setProperty(propertyNameString, valueString, priorityString, code);
    return S_OK;
}
コード例 #16
0
void TestCasesHandler::TestCase::setAttribute(const StringPimpl &name, const StringPimpl &value) throw(InternalProgrammerErrorException &)
{
	string nameString(name.c_str());
	string valueString(value.c_str());
	if(nameString == "name")
	{
		m_handler.outputln("Test Case name: " + valueString);
	}
	else
	{
		cout << "Error, wrong attribute" << endl;
	}
}
コード例 #17
0
ファイル: Bot.cpp プロジェクト: sleimanf/aibot
void Bot::setAttribute(const StringPimpl &name, const StringPimpl &value) throw(InternalProgrammerErrorException &)
{
	LOG_BOT_METHOD("void Bot::setAttribute(const StringPimpl &name, const StringPimpl &value)");	
	String nameString(name.c_str());
	String valueString(value.c_str());

	logging("<Input> name:" + nameString);
	logging("<Input> value:" + valueString);
	
	if(nameString == "name" && (!valueString.empty()))
	{
		m_pimpl->m_botPredicateName = valueString;
	}
}
コード例 #18
0
ファイル: LogicalParameter.cpp プロジェクト: marerh/Homegear
LogicalParameterFloat::LogicalParameterFloat(BaseLib::Obj* baseLib, xml_node<>* node) : LogicalParameterFloat(baseLib)
{
	try
	{
		for(xml_attribute<>* attr = node->first_attribute(); attr; attr = attr->next_attribute())
		{
			std::string attributeName(attr->name());
			std::string attributeValue(attr->value());
			if(attributeName == "type") {}
			else if(attributeName == "min") min = Math::getDouble(attributeValue);
			else if(attributeName == "max") max = Math::getDouble(attributeValue);
			else if(attributeName == "default")
			{
				defaultValue = Math::getDouble(attributeValue);
				defaultValueExists = true;
			}
			else if(attributeName == "unit") unit = attributeValue;
			else _bl->out.printWarning("Warning: Unknown attribute for \"logical\" with type float: " + attributeName);
		}
		for(xml_node<>* logicalNode = node->first_node(); logicalNode; logicalNode = logicalNode->next_sibling())
		{
			std::string nodeName(logicalNode->name());
			if(nodeName == "special_value")
			{
				xml_attribute<>* attr1;
				xml_attribute<>* attr2;
				attr1 = logicalNode->first_attribute("id");
				attr2 = logicalNode->first_attribute("value");
				if(!attr1 || !attr2) continue;
				std::string valueString(attr2->value());
				specialValues[attr1->value()] = Math::getDouble(valueString);
			}
			else _bl->out.printWarning("Warning: Unknown node in \"logical\" with type float: " + nodeName);
		}
	}
    catch(const std::exception& ex)
    {
    	_bl->out.printEx(__FILE__, __LINE__, __PRETTY_FUNCTION__, ex.what());
    }
    catch(const Exception& ex)
    {
    	_bl->out.printEx(__FILE__, __LINE__, __PRETTY_FUNCTION__, ex.what());
    }
    catch(...)
    {
    	_bl->out.printEx(__FILE__, __LINE__, __PRETTY_FUNCTION__);
    }
}
コード例 #19
0
ファイル: AIML.cpp プロジェクト: sleimanf/aibot
void AIML::setAttribute(const StringPimpl &name, const StringPimpl &value) throw(InternalProgrammerErrorException &)
{
	LOG_BOT_METHOD("void AIML::setAttribute(const StringPimpl &name, const StringPimpl &value)");
	String nameString(name.c_str());
	String valueString(value.c_str());

	logging("<Input> name: " + nameString + "value: " + valueString);

	if(nameString == "version")
	{
	///@todo use something else instead of this or just leave it out.
	//		m_parser.setAIMLVersion(valueString);
	}
	else
	{
		//Ignore all the rest for right now.  I don't care about any other attributes.
	}
}
コード例 #20
0
ファイル: CEntryPoints.cpp プロジェクト: ni/VireoSDK
//------------------------------------------------------------
// Write a string value to a symbol. Value will be parsed according to format designated.
VIREO_EXPORT EggShellResult EggShell_WriteValueString(TypeManagerRef tm, const TypeRef typeRef, void* pData, const char* format, const char* value)
{
    TypeManagerScope scope(tm);

    SubString valueString(value);

    if (typeRef == nullptr || !typeRef->IsValid())
        return kEggShellResult_InvalidTypeRef;

    EventLog log(EventLog::DevNull);
    SubString formatss(format);
    TDViaParser parser(tm, &valueString, &log, 1, &formatss, true, true, true);
    Int32 error = parser.ParseData(typeRef, pData);
    if (error) {
        return kEggShellResult_UnableToParseData;
    }

    return kEggShellResult_Success;
}
コード例 #21
0
std::wstring
CDA_DictionaryGenerator::padMalString(const std::wstring& inString)
  throw(std::exception&)
{
  // Insert two spaces at beginning of new lines
  std::wstring valueString(inString);
  size_t pos = 0;
  while(pos != std::string::npos)
  {
    pos = valueString.find(L"\n", pos);
    if (pos != std::string::npos)
    {
      valueString.insert(pos+1, L"  ");
      pos += 2;
    }
  }

  return valueString;
}
コード例 #22
0
bool DAbstractSliderSpinBox::eventFilter(QObject* recv, QEvent* e)
{
    Q_D(DAbstractSliderSpinBox);

    if (recv == static_cast<QObject*>(d->edit) && e->type() == QEvent::KeyRelease)
    {
        QKeyEvent* keyEvent = static_cast<QKeyEvent*>(e);

        switch (keyEvent->key())
        {
            case Qt::Key_Enter:
            case Qt::Key_Return:
                setInternalValue(QLocale::system().toDouble(d->edit->text()) * d->factor);
                hideEdit();
                return true;
            case Qt::Key_Escape:
                d->edit->setText(valueString());
                hideEdit();
                return true;
            default:
                break;
        }
    }
    else if (d->edit->isVisible() && e->type() == QEvent::ShortcutOverride)
    {
        QKeyEvent* const keyEvent = static_cast<QKeyEvent*>(e);

        switch (keyEvent->key())
        {
            case Qt::Key_Tab:
            case Qt::Key_Enter:
            case Qt::Key_Return:
            case Qt::Key_Escape:
                e->accept();
                return true;
            default:
                break;
        }
    }

    return false;
}
コード例 #23
0
ファイル: BaseObject.cpp プロジェクト: etienneschmitt/sofa
void BaseObject::parse( BaseObjectDescription* arg )
{
    if (arg->getAttribute("src"))
    {
        std::string valueString(arg->getAttribute("src"));

        if (valueString[0] != '@')
        {
            serr<<"ERROR: 'src' attribute value should be a link using '@'" << sendl;
        }
        else
        {
            std::vector< std::string > attributeList;
            arg->getAttributeList(attributeList);
            setSrc(valueString, &attributeList);
        }
        arg->removeAttribute("src");
    }
    Base::parse(arg);
}
コード例 #24
0
ファイル: SVGLengthList.cpp プロジェクト: 335969568/Blink-1
void SVGLengthList::parseInternal(const CharType*& ptr, const CharType* end, ExceptionState& exceptionState)
{
    clear();
    while (ptr < end) {
        const CharType* start = ptr;
        while (ptr < end && *ptr != ',' && !isHTMLSpace<CharType>(*ptr))
            ptr++;
        if (ptr == start)
            break;

        RefPtr<SVGLength> length = SVGLength::create(m_mode);
        String valueString(start, ptr - start);
        if (valueString.isEmpty())
            return;
        length->setValueAsString(valueString, exceptionState);
        if (exceptionState.hadException())
            return;
        append(length);
        skipOptionalSVGSpacesOrDelimiter(ptr, end);
    }
}
コード例 #25
0
void DAbstractSliderSpinBox::showEdit()
{
    Q_D(DAbstractSliderSpinBox);

    if (d->edit->isVisible())
        return;

    if (d->style == DAbstractSliderSpinBoxPrivate::STYLE_PLASTIQUE)
    {
        d->edit->setGeometry(progressRect(spinBoxOptions()).adjusted(0, 0, -2, 0));
    }
    else
    {
        d->edit->setGeometry(progressRect(spinBoxOptions()));
    }

    d->edit->setText(valueString());
    d->edit->selectAll();
    d->edit->show();
    d->edit->setFocus(Qt::OtherFocusReason);
    update();
}
コード例 #26
0
ファイル: SVGLengthList.cpp プロジェクト: mirror/chromium
SVGParsingError SVGLengthList::parseInternal(const CharType*& ptr,
                                             const CharType* end) {
  const CharType* listStart = ptr;
  while (ptr < end) {
    const CharType* start = ptr;
    // TODO(shanmuga.m): Enable calc for SVGLengthList
    while (ptr < end && *ptr != ',' && !isHTMLSpace<CharType>(*ptr))
      ptr++;
    if (ptr == start)
      break;
    String valueString(start, ptr - start);
    if (valueString.isEmpty())
      break;

    SVGLength* length = SVGLength::create(m_mode);
    SVGParsingError lengthParseStatus = length->setValueAsString(valueString);
    if (lengthParseStatus != SVGParseStatus::NoError)
      return lengthParseStatus.offsetWith(start - listStart);
    append(length);
    skipOptionalSVGSpacesOrDelimiter(ptr, end);
  }
  return SVGParseStatus::NoError;
}
コード例 #27
0
void SVGLengthListValues::parse(const String& value, SVGLengthMode mode)
{
    clear();

    auto upconvertedCharacters = StringView(value).upconvertedCharacters();
    const UChar* ptr = upconvertedCharacters;
    const UChar* end = ptr + value.length();
    while (ptr < end) {
        const UChar* start = ptr;
        while (ptr < end && *ptr != ',' && !isSVGSpace(*ptr))
            ptr++;
        if (ptr == start)
            break;

        SVGLengthValue length(mode);
        String valueString(start, ptr - start);
        if (valueString.isEmpty())
            return;
        if (length.setValueAsString(valueString).hasException())
            return;
        append(length);
        skipOptionalSVGSpacesOrDelimiter(ptr, end);
    }
}
コード例 #28
0
ファイル: Condition.cpp プロジェクト: sleimanf/aibot
void Condition::setAttribute(const StringPimpl &name, const StringPimpl &value) 
	throw(InternalProgrammerErrorException &)
{
	LOG_BOT_METHOD("void Condition::setAttribute(const StringPimpl &name, const StringPimpl &value)");
	String nameString(name.c_str());
	String valueString(value.c_str());

	if(nameString == "name")
	{
		m_pimpl->m_name = true;
		logging("Setting the m_predicateName to:" + nameString);
		m_pimpl->m_predicateName = valueString;
	}
	else if(nameString == "value")
	{
		m_pimpl->m_value = true;
		logging("Setting the m_aimlPattern to:" + valueString);
		m_pimpl->m_aimlPattern = valueString;
	}
	else
	{
		logging("Warning, empty name and/or empty value given or invalid values given");
	}
}
コード例 #29
0
///@todo redo this without annoying tokenizer.  Use a for loop
void TemplateSideThat::setAttribute(const StringPimpl &name, const StringPimpl &value) throw(InternalProgrammerErrorException &)
{
	if(name == "index" && (!value.empty()))
	{
		string valueString(value.c_str());
		typedef tokenizer<char_separator<char> > tokenize;
		typedef tokenizer<char_separator<char> >::const_iterator CI;
		char_separator<char> sep(",");
		tokenize pathTokens(valueString, sep);
		int i = 0;
		for(CI it = pathTokens.begin(); it != pathTokens.end(); ++it, ++i)
		{
			string s;
			if(i == 0)
			{				
				try
				{
					//This is the first index which is a previous bot response
					s = *it;
					trim(s);
					m_pimpl->m_previousBotResponse = lexical_cast<int>(s);
				}
				catch(bad_lexical_cast &)
				{
					//User Error, the cast to a numeric value failed
					string msg("First index string is not a valid number, ");
					msg += s.c_str();
					FrameworkFactory *factory = FrameworkFactory::getInstance();
					IdentificationManager *ident = IdentificationManager::getInstance();
					GraphBuilderFramework *builder = factory->getGraphBuilderFramework();
					builder->getCallBacks().thatTagNumericConversionError(msg.c_str(), ident->getUserId(), ident->getBotId(), ident->getEndUserId());
				}
			}
			else if(i == 1)
			{			
				try
				{
					//This is the second index which is a sentence
					s = *it;
					trim(s);
					m_pimpl->m_sentence = lexical_cast<int>(s);
				}
				catch(bad_lexical_cast &)
				{
					string msg("Second index string is not a valid number, ");
					msg += s.c_str();
					FrameworkFactory *factory = FrameworkFactory::getInstance();
					IdentificationManager *ident = IdentificationManager::getInstance();
					GraphBuilderFramework *builder = factory->getGraphBuilderFramework();
					builder->getCallBacks().thatTagNumericConversionError(msg.c_str(), ident->getUserId(), ident->getBotId(), ident->getEndUserId());
					//User Error, the cast to a numeric value failed
				}
			}
			else
			{
				//User error, the i index is past 2
				FrameworkFactory *factory = FrameworkFactory::getInstance();
				IdentificationManager *ident = IdentificationManager::getInstance();
				GraphBuilderFramework *builder = factory->getGraphBuilderFramework();
				builder->getCallBacks().thatTagNumericConversionError("The index is past 2", ident->getUserId(), ident->getBotId(), ident->getEndUserId());
			}
		}	
	}
}
コード例 #30
0
ファイル: WindowFeatures.cpp プロジェクト: junmin-zhu/blink
WindowFeatures::WindowFeatures(const String& features)
    : xSet(false)
    , ySet(false)
    , widthSet(false)
    , heightSet(false)
    , fullscreen(false)
    , dialog(false)
{
    /*
     The IE rule is: all features except for channelmode and fullscreen default to YES, but
     if the user specifies a feature string, all features default to NO. (There is no public
     standard that applies to this method.)

     <http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/open_0.asp>
     We always allow a window to be resized, which is consistent with Firefox.
     */

    if (features.length() == 0) {
        menuBarVisible = true;
        statusBarVisible = true;
        toolBarVisible = true;
        locationBarVisible = true;
        scrollbarsVisible = true;
        resizable = true;
        return;
    }

    menuBarVisible = false;
    statusBarVisible = false;
    toolBarVisible = false;
    locationBarVisible = false;
    scrollbarsVisible = false;
    resizable = true;

    // Tread lightly in this code -- it was specifically designed to mimic Win IE's parsing behavior.
    int keyBegin, keyEnd;
    int valueBegin, valueEnd;

    int i = 0;
    int length = features.length();
    String buffer = features.lower();
    while (i < length) {
        // skip to first non-separator, but don't skip past the end of the string
        while (i < length && isWindowFeaturesSeparator(buffer[i]))
            i++;
        keyBegin = i;

        // skip to first separator
        while (i < length && !isWindowFeaturesSeparator(buffer[i]))
            i++;
        keyEnd = i;

        ASSERT_WITH_SECURITY_IMPLICATION(i <= length);

        // skip to first '=', but don't skip past a ',' or the end of the string
        while (i < length && buffer[i] != '=') {
            if (buffer[i] == ',')
                break;
            i++;
        }

        ASSERT_WITH_SECURITY_IMPLICATION(i <= length);

        // skip to first non-separator, but don't skip past a ',' or the end of the string
        while (i < length && isWindowFeaturesSeparator(buffer[i])) {
            if (buffer[i] == ',')
                break;
            i++;
        }
        valueBegin = i;

        ASSERT_WITH_SECURITY_IMPLICATION(i <= length);

        // skip to first separator
        while (i < length && !isWindowFeaturesSeparator(buffer[i]))
            i++;
        valueEnd = i;

        ASSERT_WITH_SECURITY_IMPLICATION(i <= length);

        String keyString(buffer.substring(keyBegin, keyEnd - keyBegin));
        String valueString(buffer.substring(valueBegin, valueEnd - valueBegin));
        setWindowFeature(keyString, valueString);
    }
}