Example #1
0
void Entity::destroy() {
	
	LogDebug("destroying entity " << idString());
	
	if(instance() > 0 && !(ioflags & IO_NOSAVE)) {
		if(scriptload) {
			// In case we previously saved this entity...
			currentSavedGameRemoveEntity(idString());
		} else {
			currentSavedGameStoreEntityDeletion(idString());
		}
	}
	
	if(obj) {
		while(!obj->linked.empty()) {
			if(obj->linked[0].lgroup != ObjVertGroup() && obj->linked[0].obj) {
				Entity * linked = obj->linked[0].io;
				if(linked && ValidIOAddress(linked)) {
					EERIE_LINKEDOBJ_UnLinkObjectFromObject(obj, linked->obj);
					linked->destroy();
				}
			}
		}
	}
	
	delete this;
	
}
Example #2
0
void KMFolder::setUserWhoField( const QString& whoField, bool writeConfig )
{
  if ( mUserWhoField == whoField && !whoField.isEmpty() )
    return;

  if ( whoField.isEmpty() )
  {
    // default setting
    const KPIMIdentities::Identity & identity =
      kmkernel->identityManager()->identityForUoidOrDefault( mIdentity );

    QString identityfcc, identitydrafts, identitytemplates;
    {
      /* KPIMIdentities::Identity::fcc(), KPIMIdentities::Identity::drafts() and KPIMIdentities::Identity::templates()
         using akonadi, so read values from config file directly */
      const KConfig config( "emailidentities" );
      const QStringList identities = config.groupList().filter( QRegExp( "^Identity #\\d+$" ) );
      for ( QStringList::const_iterator group = identities.constBegin(); group != identities.constEnd(); ++group ) {
        const KConfigGroup configGroup( &config, *group );
        if ( configGroup.readEntry( "uoid", 0U ) == identity.uoid() ) {
          identityfcc = configGroup.readEntry( "Fcc2", QString() );
          identitydrafts = configGroup.readEntry( "Drafts2", QString() );
          identitytemplates = configGroup.readEntry( "Templates2", QString() );
          break;
        }
      }
    }

    if ( isSystemFolder() && folderType() != KMFolderTypeImap ) {
      // local system folders
      if ( this == kmkernel->inboxFolder() ||
           this == kmkernel->trashFolder() )
        mWhoField = "From";
      if ( this == kmkernel->outboxFolder() ||
           this == kmkernel->sentFolder() ||
           this == kmkernel->templatesFolder() ||
           this == kmkernel->draftsFolder() )
        mWhoField = "To";
    } else if ( identitydrafts == idString() ||
                identitytemplates == idString() ||
                identityfcc == idString() )
      // drafts, templates or sent of the identity
      mWhoField = "To";
    else
      mWhoField = "From";
  } else if ( whoField == "From" || whoField == "To" )
    // set the whoField according to the user-setting
    mWhoField = whoField;
  else {
    // this should not happen...
    kDebug() << "Illegal setting" << whoField << "for userWhoField!";
    return; // don't use the value
  }
  mUserWhoField = whoField;

  if ( writeConfig ) {
    mStorage->writeConfig();
    emit viewConfigChanged();
  }
}
static jobjectArray TimeZones_forCountryCode(JNIEnv* env, jclass, jstring countryCode) {
    ScopedUtfChars countryChars(env, countryCode);
    if (countryChars.c_str() == NULL) {
        return NULL;
    }

    UniquePtr<StringEnumeration> ids(TimeZone::createEnumeration(countryChars.c_str()));
    if (ids.get() == NULL) {
        return NULL;
    }
    UErrorCode status = U_ZERO_ERROR;
    int32_t idCount = ids->count(status);
    if (maybeThrowIcuException(env, status)) {
        return NULL;
    }

    jobjectArray result = env->NewObjectArray(idCount, JniConstants::stringClass, NULL);
    for (int32_t i = 0; i < idCount; ++i) {
        const UnicodeString* id = ids->snext(status);
        if (maybeThrowIcuException(env, status)) {
            return NULL;
        }
        ScopedLocalRef<jstring> idString(env, env->NewString((jchar*)id->getBuffer(), id->length()));
        env->SetObjectArrayElement(result, i, idString.get());
    }
    return result;
}
bool
IdentityCertificate::isCorrectName(const Name& name)
{
  string idString("ID-CERT");
  int i = name.size() - 1;
  for (; i >= 0; i--) {
    if (name.get(i).toUri() == idString)
      break;
  }

  if (i < 0)
    return false;

  string keyString("KEY");
  size_t keyIndex = 0;
  for (; keyIndex < name.size(); keyIndex++) {
    if (name.get(keyIndex).toUri() == keyString)
      break;
  }

  if (keyIndex >= name.size())
    return false;

  return true;
}
Example #5
0
Name
IdentityCertificate::certificateNameToPublicKeyName(const Name& certificateName)
{
  int i = certificateName.size() - 1;
  string idString("ID-CERT");
  bool foundIdString = false;
  for (; i >= 0; i--) {
    if (certificateName.get(i).toEscapedString() == idString)
      {
        foundIdString = true;
        break;
      }
  }

  if(!foundIdString)
    throw Error("Incorrect identity certificate name " + certificateName.toUri());
    
  Name tmpName = certificateName.getSubName(0, i);    
  string keyString("KEY");
  bool foundKeyString = false;
  for (i = 0; i < tmpName.size(); i++) {
    if (tmpName.get(i).toEscapedString() == keyString)
      {
        foundKeyString = true;
        break;
      }
  }

  if(!foundKeyString)
    throw Error("Incorrect identity certificate name " + certificateName.toUri());
  
  return tmpName.getSubName(0, i).append(tmpName.getSubName(i + 1, tmpName.size() - i - 1));
}
Example #6
0
QDomElement Guideline::to_QDomElement(const unsigned int subset, 
        QDomDocument& doc)
{
    double position = (type == GUIDE_TYPE_VERT) ? x(): y();

    QDomElement node = doc.createElement("dunnart:node");

    if (subset & XMLSS_IOTHER)
    {
        newProp(node, x_direction, (int) type);

        newProp(node, x_type, x_guideline);

        newProp(node, "id", idString());

        newProp(node, x_tentative, m_tentative);
    }
    
    if (subset & XMLSS_IMOVE)
    {
        newProp(node, x_position, position);
    }

    for (RelsList::iterator r = relationships.begin(); r != relationships.end(); ++r)
    {
        if ((*r)->shape)
        {
            QDomElement rxn = (*r)->to_QDomElement(subset, doc);
            node.appendChild(rxn);
        }
    }

    return node;
}
static jstring getDisplayTimeZoneNative(JNIEnv* env, jclass clazz,
        jstring zoneID, jboolean isDST, jint style, jstring localeID) {

    // Build TimeZone object
    const jchar* idChars = env->GetStringChars(zoneID, NULL);
    jint idLength = env->GetStringLength(zoneID);
    UnicodeString idString((UChar*)idChars, idLength);
    TimeZone* zone = TimeZone::createTimeZone(idString);
    env->ReleaseStringChars(zoneID, idChars);

    // Build Locale object (can we rely on zero termination of JNI result?)
    const char* localeChars = env->GetStringUTFChars(localeID, NULL);
    jint localeLength = env->GetStringLength(localeID);
    Locale locale = Locale::createFromName(localeChars);

    // Try to get the display name of the TimeZone according to the Locale
    UnicodeString buffer;
    zone->getDisplayName((UBool)isDST, (style == 0 ? TimeZone::SHORT : TimeZone::LONG), locale, buffer);
    const UChar* tempChars = buffer.getBuffer();
    int tempLength = buffer.length();
    jstring result = env->NewString((jchar*)tempChars, tempLength);
    env->ReleaseStringUTFChars(localeID, localeChars);

    // Clean up everything
    delete(zone);
    
    return result;
}
Example #8
0
bool
IdentityCertificate::isCorrectName(const Name& name)
{
  int i = name.size() - 1;
  
  string idString("ID-CERT");
  for (; i >= 0; i--) {
    if(name.get(i).toEscapedString() == idString)
      break;
  }

  if (i < 0)
    return false;
  
  int keyIdx = 0;
  string keyString("KEY");
  for (; keyIdx < name.size(); keyIdx++) {
    if(name.get(keyIdx).toEscapedString() == keyString)
      break;
  }

  if (keyIdx >= name.size())
    return false;

  return true;
}
Example #9
0
void MessageFilter::messageTypeFilterChanged() {
  int newFilter;
  BufferSettings defaultSettings;
  newFilter = BufferSettings().messageFilter();

  BufferSettings mySettings(idString());
  if(mySettings.hasFilter())
    newFilter = mySettings.messageFilter();

  if(_messageTypeFilter != newFilter) {
    _messageTypeFilter = newFilter;
    _filteredQuitMsgs.clear();
    invalidateFilter();
  }
}
Name
IdentityCertificate::certificateNameToPublicKeyName(const Name& certificateName)
{
  int i = certificateName.size() - 1;
  string idString("ID-CERT");
  for (; i >= 0; i--) {
    if (certificateName.get(i).toEscapedString() == idString)
      break;
  }

  Name tmpName = certificateName.getSubName(0, i);
  string keyString("KEY");
  for (i = 0; i < tmpName.size(); i++) {
    if (tmpName.get(i).toEscapedString() == keyString)
      break;
  }

  return tmpName.getSubName(0, i).append(tmpName.getSubName(i + 1, tmpName.size() - i - 1));
}
Example #11
0
void MessageFilter::init() {
  setDynamicSortFilter(true);

  _userNoticesTarget = _serverNoticesTarget = _errorMsgsTarget = -1;

  BufferSettings defaultSettings;
  defaultSettings.notify("UserNoticesTarget", this, SLOT(messageRedirectionChanged()));
  defaultSettings.notify("ServerNoticesTarget", this, SLOT(messageRedirectionChanged()));
  defaultSettings.notify("ErrorMsgsTarget", this, SLOT(messageRedirectionChanged()));
  messageRedirectionChanged();

  _messageTypeFilter = defaultSettings.messageFilter();
  defaultSettings.notify("MessageTypeFilter", this, SLOT(messageTypeFilterChanged()));

  BufferSettings mySettings(idString());
  if(mySettings.hasFilter())
    _messageTypeFilter = mySettings.messageFilter();
  mySettings.notify("MessageTypeFilter", this, SLOT(messageTypeFilterChanged()));
  mySettings.notify("hasMessageTypeFilter", this, SLOT(messageTypeFilterChanged()));
}
Name
IdentityCertificate::certificateNameToPublicKeyName(const Name& certificateName)
{
  string idString("ID-CERT");
  bool foundIdString = false;
  size_t idCertComponentIndex = certificateName.size() - 1;
  for (; idCertComponentIndex + 1 > 0; --idCertComponentIndex) {
    if (certificateName.get(idCertComponentIndex).toUri() == idString)
      {
        foundIdString = true;
        break;
      }
  }

  if (!foundIdString)
    throw Error("Incorrect identity certificate name " + certificateName.toUri());

  Name tmpName = certificateName.getSubName(0, idCertComponentIndex);
  string keyString("KEY");
  bool foundKeyString = false;
  size_t keyComponentIndex = 0;
  for (; keyComponentIndex < tmpName.size(); keyComponentIndex++) {
    if (tmpName.get(keyComponentIndex).toUri() == keyString)
      {
        foundKeyString = true;
        break;
      }
  }

  if (!foundKeyString)
    throw Error("Incorrect identity certificate name " + certificateName.toUri());

  return tmpName
           .getSubName(0, keyComponentIndex)
           .append(tmpName.getSubName(keyComponentIndex + 1,
                                      tmpName.size() - keyComponentIndex - 1));
}
Example #13
0
 inline std::string originalIdString ( ) const { return m_originalId ? m_originalId->asString ( "." ) : idString ( ); }
Example #14
0
	JSBool JsGlobal::event_GetProperty (JSContext *cx, JSObject *obj, jsid id, jsval *vp)
	{
		fsm::StateMachine * pstateMachine = NULL;
		static log4cplus::Logger log = log4cplus::Logger::getInstance("TUserManager.GetProperty");
		pstateMachine = (fsm::StateMachine *)JS_GetContextPrivate(cx);
		if (!pstateMachine){
			LOG4CPLUS_WARN(log,"GetContextPrivate is null.");
		}
		
		if (!JSID_IS_INT(id)) return JS_TRUE;

		int proid = JSID_TO_INT(id);
		
		jsval *val = (jsval *) JS_GetPrivate(cx, obj);
		if (val) {
			if(JSVAL_IS_NULL(*vp) || JSVAL_IS_VOID(*vp))
				*vp = val[proid];
			return JS_TRUE;
		}
		
		val = new jsval[4];
		if (!val) {
			JS_ReportOutOfMemory(cx);
			JS_SET_RVAL(cx, vp, JSVAL_VOID);
			return JS_TRUE;
		}

		if (!JS_AddValueRoot(cx, val)) {
			delete[] val;
			JS_SET_RVAL(cx, vp, JSVAL_VOID);
			return JS_TRUE;
		}

		if (!JS_SetPrivate(cx, obj, (void*)val)) {
			JS_RemoveValueRoot(cx, val);
			delete[] val;
			JS_SET_RVAL(cx, vp, JSVAL_VOID);
			return JS_TRUE;
		}

		std::string prefix = "getting [_event] property:";
		fsm::env::Js::IdToString idString(cx, id);
		if(pstateMachine ){

			val[name] = STRING_TO_JSVAL(JS_NewStringCopyZ (cx,pstateMachine->m_currentEvt.getEventName().c_str()));
			//val[bodydata] = STRING_TO_JSVAL(JS_NewStringCopyZ (cx,pstateMachine->m_currentEvt.getData().c_str()));
			//val[messagetype] = STRING_TO_JSVAL(JS_NewStringCopyZ (cx,pstateMachine->m_currentEvt.getMsgType().c_str()));
			//val[ip] = STRING_TO_JSVAL(JS_NewStringCopyZ (cx,pstateMachine->m_currentEvt.getIP().c_str()));
			//val[port] = INT_TO_JSVAL(pstateMachine->m_currentEvt.getPort());
			val[serviceid] = STRING_TO_JSVAL(JS_NewStringCopyZ (cx,pstateMachine->getName().c_str()));
			val[sessionid] = STRING_TO_JSVAL(JS_NewStringCopyZ (cx,pstateMachine->getSessionId().c_str()));
			val[callid] = STRING_TO_JSVAL(JS_NewStringCopyZ (cx,pstateMachine->getSessionId().c_str()));

			switch (proid) {
			case name:
				prefix.append("_name");
				break;
			case serviceid:
				prefix.append("_serviceid");
				break;
			case sessionid:
				prefix.append("_sessionid");
				break;
			case callid:
				prefix.append("_callid");
				break;

				//case from:{
				//	vp.setInt32(pstateMachine->getFrom().c_str());
				//	break;
				//case Enable:
				//	vp.setBoolean(extPtr->m_bEnable);
				//	break;

			default:
				prefix.append(idString.getBytes());
				break;
			}

		}else{
			prefix.append(idString.getBytes());
		}

		fsm::env::Js::ToString valueString(cx, val[proid]);
		//fsm::env::Js::ToString objString(cx,OBJECT_TO_JSVAL(obj));
		*vp = val[proid];
		LOG4CPLUS_DEBUG(log,prefix<< ",value:" << valueString.getBytes());

		return JS_TRUE;
	}
Example #15
0
res::path Entity::instancePath() const {
	return m_classPath.parent() / idString();
}
Example #16
0
void 
ParadynTkGUI::chooseMetricsandResources(chooseMandRCBFunc cb,
			       pdvector<metric_focus_pair> * /* pairList */ )
{
      // store record with unique id and callback function
  UIMMsgTokenID++;
  int newptr;
  Tcl_HashEntry *entryPtr = Tcl_CreateHashEntry (&UIMMsgReplyTbl,
						 (char *)UIMMsgTokenID, 
						 &newptr);
  if (newptr == 0) {
    showError(21, "");
    thr_exit(0);
  }

  unsigned requestingThread = getRequestingThread();
     // in theory, we can check here whether this (VISI-) thread already
     // has an outstanding metric request.  But for now, we let code in mets.tcl do this...
//  pdstring commandStr = pdstring("winfo exists .metmenunew") + pdstring(requestingThread);
//  myTclEval(interp, commandStr);
//  int result;
//  assert(TCL_OK == Tcl_GetBoolean(interp, Tcl_GetStringResult(interp), &result));
//  if (result)
//     return; // the window is already up for this thread!

  UIMReplyRec *reply = new UIMReplyRec;
  reply->tid = requestingThread;
  reply->cb = (void *) cb;
  Tcl_SetHashValue (entryPtr, reply);

  if (!all_metrics_set_yet) {
      pdvector<met_name_id> *all_mets = dataMgr->getAvailableMetInfo(true);
      
      for (unsigned metlcv=0; metlcv < all_mets->size(); metlcv++) {
	 unsigned id  = (*all_mets)[metlcv].id;
	 pdstring &name = (*all_mets)[metlcv].name;

	 all_metric_names[id] = name;

	 pdstring idString(id);
	 bool aflag;
	 aflag=(Tcl_SetVar2(interp, "metricNamesById", 
			    const_cast<char*>(idString.c_str()),
			    const_cast<char*>(name.c_str()), 
			    TCL_GLOBAL_ONLY) != NULL);
         assert(aflag);
      }
      
      delete all_mets;
      all_metrics_set_yet = true;
  }

  // Set metIndexes2Id via "temp"
  (void)Tcl_UnsetVar(interp, "temp", 0);
     // ignore result; temp may not have existed
  pdvector<met_name_id> *curr_avail_mets_ptr = dataMgr->getAvailableMetInfo(false);
  pdvector<met_name_id> &curr_avail_mets = *curr_avail_mets_ptr;
  unsigned numAvailMets = curr_avail_mets.size();
  assert( numAvailMets > 0 );
  for (unsigned metlcv=0; metlcv < numAvailMets; metlcv++) {
     pdstring metricIdStr = pdstring(curr_avail_mets[metlcv].id);
     
     bool aflag;
     aflag = (Tcl_SetVar(interp, "temp", 
			 const_cast<char*>(metricIdStr.c_str()),
			 TCL_APPEND_VALUE | TCL_LIST_ELEMENT) != NULL);
     assert(aflag);
  }
  delete curr_avail_mets_ptr;
  

  pdstring tcommand("getMetsAndRes ");
  tcommand += pdstring(UIMMsgTokenID);
  tcommand += pdstring(" ") + pdstring(requestingThread);
  tcommand += pdstring(" ") + pdstring(numAvailMets);
  tcommand += pdstring(" $temp");

  int retVal = Tcl_VarEval (interp, tcommand.c_str(), 0);
  if (retVal == TCL_ERROR)  {
    uiMgr->showError (22, "");
    cerr << Tcl_GetStringResult(interp) << endl;
    thr_exit(0);  
  } 
}
HoI4Focus::HoI4Focus(std::istream& theStream)
{
	registerKeyword(std::regex("id"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleString idString(theStream);
			id = idString.getString();
		}
	);
	registerKeyword(std::regex("icon"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleString iconString(theStream);
			icon = iconString.getString();
		}
	);
	registerKeyword(std::regex("text"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleString textString(theStream);
			text = textString.getString();
		}
	);
	registerKeyword(std::regex("mutually_exclusive"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::stringOfObject mutuallyExclusiveString(theStream);
			mutuallyExclusive = mutuallyExclusiveString.getString();
		}
	);
	registerKeyword(std::regex("bypass"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::stringOfObject bypassString(theStream);
			bypass = bypassString.getString();
		}
	);
	registerKeyword(std::regex("x"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleInt xPosInt(theStream);
			xPos = xPosInt.getInt();
		}
	);
	registerKeyword(std::regex("y"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleInt yPosInt(theStream);
			yPos = yPosInt.getInt();
		}
	);
	registerKeyword(std::regex("relative_position_id"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleString relativePositionIdString(theStream);
			relativePositionId = relativePositionIdString.getString();
		}
	);
	registerKeyword(std::regex("cost"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleInt costInt(theStream);
			cost = costInt.getInt();
		}
	);
	registerKeyword(std::regex("available_if_capitulated"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleString availableIfCapitulatedString(theStream);
			availableIfCapitulated = (availableIfCapitulatedString.getString() == "yes");
		}
	);
	registerKeyword(std::regex("available"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::stringOfObject availableString(theStream);
			available = availableString.getString();
		}
	);
	registerKeyword(std::regex("cancel_if_invalid"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleString cancelIfInvalidString(theStream);
			cancelIfInvalid = cancelIfInvalidString.getString();
		}
	);
	registerKeyword(std::regex("continue_if_invalid"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleString continueIfInvalidString(theStream);
			continueIfInvalid = continueIfInvalidString.getString();
		}
	);
	registerKeyword(std::regex("complete_tooltip"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::stringOfObject completeTooltipString(theStream);
			completeTooltip = completeTooltipString.getString();
		}
	);
	registerKeyword(std::regex("completion_reward"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::stringOfObject completionRewardString(theStream);
			completionReward = completionRewardString.getString();
		}
	);
	registerKeyword(std::regex("ai_will_do"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::stringOfObject aiWillDoString(theStream);
			aiWillDo = aiWillDoString.getString();
		}
	);
	registerKeyword(std::regex("prerequisite"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::stringOfObject prerequisiteString(theStream);
			prerequisites.push_back(prerequisiteString.getString());
		}
	);

	parseStream(theStream);
}
Example #18
0
HoI4::Event::Event(const std::string& theType, std::istream& theStream):
	type(theType)
{
	registerKeyword(std::regex("id"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleString idString(theStream);
			id = idString.getString();
		}
	);
	registerKeyword(std::regex("title"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleString titleString(theStream);
			title = titleString.getString();
		}
	);
	registerKeyword(std::regex("desc"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::stringOfItem descriptionString(theStream);
			descriptions.push_back("desc " + descriptionString.getString());
		}
	);
	registerKeyword(std::regex("picture"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleString pictureString(theStream);
			picture = pictureString.getString();
		}
	);
	registerKeyword(std::regex("major"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleString majorString(theStream);
			majorEvent = (majorString.getString() == "yes");
		}
	);
	registerKeyword(std::regex("is_triggered_only"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleString triggeredString(theStream);
			triggeredOnly = (triggeredString.getString() == "yes");
		}
	);
	registerKeyword(std::regex("hidden"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::singleString hiddenString(theStream);
			hidden = (hiddenString.getString() == "yes");
		}
	);
	registerKeyword(std::regex("trigger"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::stringOfObject triggerString(theStream);
			trigger = triggerString.getString();
		}
	);
	registerKeyword(std::regex("mean_time_to_happen"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::stringOfObject MTTHString(theStream);
			meanTimeToHappen = MTTHString.getString();
		}
	);
	registerKeyword(std::regex("immediate"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::stringOfObject immediateString(theStream);
			immediate = immediateString.getString();
		}
	);
	registerKeyword(std::regex("option"), [this](const std::string& unused, std::istream& theStream)
		{
			commonItems::stringOfObject optionString(theStream);
			options.push_back(optionString.getString());
		}
	);

	parseStream(theStream);
}
Example #19
0
bool qExtractSecurityPolicyFromString(const QString &string, TSecurityPolicy &policy)
{
    int startPos = string.indexOf(QLatin1Char('='));
    QStringList values;
    bool ret = false;
    
    if (startPos == -1) {
        values = string.split(QLatin1Char(','), QString::SkipEmptyParts);
    } else {
        values = string.mid(startPos + 1).split(QLatin1Char(','), QString::SkipEmptyParts);
    }
    
    if (values.count() > 0) {
        const QString findVid(QLatin1String("vid["));
        const QString findSid(QLatin1String("sid["));
        const int MaxCapCount = 7;
        const int VidMaxCount = 3;
        const int SidMaxCount = 3;

        TCapability capList[MaxCapCount] = { ECapability_None,ECapability_None,ECapability_None,
                                    ECapability_None,ECapability_None,ECapability_None,ECapability_None };
        
        bool isVID = false;
        bool isSID = false;
        
        QString idString(QLatin1String(""));
        int maxAllowed = MaxCapCount;
        
        if (values[0].contains(findVid, Qt::CaseInsensitive)) {
            idString = values[0].remove(findVid, Qt::CaseInsensitive);
            idString = idString.remove(QLatin1Char(']'));
            values.removeAt(0);
            isVID = true;
            maxAllowed = VidMaxCount;
            
        } else if (values[0].contains(findSid, Qt::CaseInsensitive)) {
            idString = values[0].remove(findSid, Qt::CaseInsensitive);
            idString = idString.remove(QLatin1Char(']'));
            values.removeAt(0);
            isSID = true;
            maxAllowed = SidMaxCount;
        }
        
        if (values.count() <= maxAllowed) {
            bool wasSuccesful = true;
            
            for (int i = 0; i < values.count(); i++) {
                capList[i] = qMatchCapStr(values[i]);
                
                if (capList[i] == ECapability_HardLimit) {
                    wasSuccesful = false;
                    break;
                }
            }
            
            if (wasSuccesful) {
                if (isVID || isSID){
                    bool ok = true;
                    quint32 id = idString.toUInt(&ok, 16);
                    
                    if (ok) {
                        if (isVID) {
                            TVendorId vid(id);
                            policy = TSecurityPolicy(vid, capList[0], capList[1], capList[2]);
                        } else {
                            TSecureId sid(id);
                            policy = TSecurityPolicy(sid, capList[0], capList[1], capList[2]);
                        }
                        
                        ret = true; //Everything is fine
                    }   
                } else {
                    policy = TSecurityPolicy(capList[0], capList[1], capList[2], capList[3], 
                                        capList[4], capList[5], capList[6]);
                    
                    ret = true;  //Everything is fine
                }
            }
        }
    } 
    
    return ret;
}