当前位置: 首页>>代码示例>>C++>>正文


C++ Capability::getState方法代码示例

本文整理汇总了C++中Capability::getState方法的典型用法代码示例。如果您正苦于以下问题:C++ Capability::getState方法的具体用法?C++ Capability::getState怎么用?C++ Capability::getState使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Capability的用法示例。


在下文中一共展示了Capability::getState方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: internalMatchProfile

bool ProfileDB::internalMatchProfile(Profile* profile,
        vector<Capability>& requiredCapabilites,
        vector<Capability>& optionalCapabilites, string& matchToken) {
	bool match = true;

	// When can we NOT reuse a specific runtime?
	// Only if fragmentation is set to BUILDTIME and if either a) one supports the capability and
	// the other does not OR b) the capability value differs.
	// So we add strings to create a unique match token for every
	// runtime that need be built
	for (vector<Capability>::iterator capability = requiredCapabilites.begin(); capability
	        != requiredCapabilites.end(); capability++) {
		Capability matchedCapability = profile->getCapability(
		        capability->getName());
		CapabilityState matchedState = matchedCapability.getState();
		// Ok, so we don't support this, bail out!
		if (matchedState == NOT_IMPLEMENTED || matchedState == UNSUPPORTED) {
			match = false;
		}
		Fragmentation fragmentation = matchedCapability.getFragmentation();
		string valueStr =
		        fragmentation == BUILDTIME ? matchedCapability.getValue() : "";
		matchToken.append(valueStr);
		matchToken.append("|");
	}

	// So, the optional capabilities are matched in a different way.
	// We add stuff to the matchTokens string to produce a string that
	// is unique to the optional capabilities being matched.
	for (vector<Capability>::iterator capability = optionalCapabilites.begin(); capability
	        != optionalCapabilites.end(); capability++) {
		Capability matchedCapability = profile->getCapability(
		        capability->getName());
		CapabilityState matchedState = matchedCapability.getState();
		Fragmentation fragmentation = matchedCapability.getFragmentation();
		string valueStr =
		        fragmentation == BUILDTIME ? matchedCapability.getValue() : "";
		bool capSupported = fragmentation == BUILDTIME && (matchedState
		        == NOT_IMPLEMENTED || matchedState == UNSUPPORTED);
		matchToken.append((capSupported ? "+" : "-") + valueStr);
		matchToken.append("|");
	}

	// Finally we add PROPERTIES of the runtime which are buildtime fragmented.
	// For example, different device types or icon sizes should always generate
	// a unique runtime.
	set<string> allCapabilities = profile->getCapabilities();
	for (set<string>::iterator allCapabilitesIt = allCapabilities.begin(); allCapabilitesIt
	        != allCapabilities.end(); allCapabilitesIt++) {
		string capabilityName = *allCapabilitesIt;
		Capability capability = profile->getCapability(capabilityName);
		if (capability.getType() == "property") {
			Fragmentation fragmentation = capability.getFragmentation();
			string valueStr =
			        fragmentation == BUILDTIME ? capability.getValue() : "-";
			matchToken.append(valueStr);
			matchToken.append("|");
		}
	}
	return match;
}
开发者ID:Ginox,项目名称:MoSync,代码行数:61,代码来源:profiledb.cpp

示例2: xmlStart

static void xmlStart(void *data, const char *tagName, const char **attributes) {
	ParserState* state = (ParserState*) data;
	ProfileDB* db = state->db;
	Profile* profile = state->profile;

	if (!strcmp(ELEMENT_PLATFORM, tagName)) {
		const char* parentProfile = findAttr(ATTR_INHERIT, attributes);
		if (parentProfile) {
			Profile* parent = db->findProfile(parentProfile,
			        state->alreadyFound);
			if (parent == NULL) {
				error(
				        state,
				        string(
				                "This platform element refers to an invalid parent profile: ")
				                + parentProfile);
			} else {
				profile->setParent(parent);
			}
		}
		const char* abstract = findAttr(ATTR_ABSTRACT, attributes);
		bool isAbstract = abstract && !strcmp("true", abstract);

		const char* family = findAttr(ATTR_FAMILY, attributes);
		if (!family) {
			error(
			        state,
			        string("No family attribute defined: ")
			                + profile->getProfileName());
		}
		const char* variant = findAttr(ATTR_VARIANT, attributes);
		if (!isAbstract && !variant) {
			error(
			        state,
			        string("No variant attribute defined: ")
			                + profile->getProfileName());
		}
		const char* runtime = findAttr(ATTR_RUNTIME, attributes);
		if (!isAbstract && !runtime) {
			error(
			        state,
			        string("No runtime attribute defined: ")
			                + profile->getProfileName());
		}

		if (!variant)
			variant = "";
		if (!runtime)
			runtime = "";

		const char* slash = strlen(variant) > 0 ? "/" : "";
		if (!equalsIgnoreCaseASCII(string(family) + slash + string(variant),
		        profile->getProfileName())) {
			error(
			        state,
			        string("Expected family (") + family + string(
			                ") and variant (") + variant
			                + string(") to match ") + profile->getProfileName());
		}
		profile->setFamily(string(family));
		profile->setVariant(string(variant));
		profile->setRuntime(string(runtime));
		profile->setAbstract(isAbstract);
	} else if (!strcmp(ELEMENT_CAPABILITY, tagName)) {
		CapabilityState capabilityState;
		Capability* parentCapability = NULL;
		string prefix = getCapabilityPrefix(state->capabilityStack);
		if (!state->capabilityStack.empty()) {
			parentCapability = &(state->capabilityStack.back());
			capabilityState = parentCapability->getState();
		}
		const char* capabilityName = findAttr(ATTR_NAME, attributes);
		const char* capabilityStateStr = findAttr(ATTR_STATE, attributes);
		const char* fragmentationStr = findAttr(ATTR_FRAGMENTATION, attributes);
		const char* valueStr = findAttr(ATTR_VALUE, attributes);
		const char* typeStr = findAttr(ATTR_TYPE, attributes);
		if (!capabilityStateStr && !parentCapability) {
			capabilityState = UNSUPPORTED;
		} else if (!strcmp(capabilityStateStr, "SUPPORTED")) {
			capabilityState = SUPPORTED;
		} else if (!strcmp(capabilityStateStr, "UNSUPPORTED")) {
			capabilityState = UNSUPPORTED;
		} else if (!strcmp(capabilityStateStr, "NOT_IMPLEMENTED")) {
			capabilityState = NOT_IMPLEMENTED;
		} else if (!strcmp(capabilityStateStr, "REQUIRES_PERMISSION")) {
			capabilityState = REQUIRES_PERMISSION;
		} else if (!strcmp(capabilityStateStr, "REQUIRES_PRIVILEGED_PERMISSION")) {
			capabilityState = REQUIRES_PRIVILEGED_PERMISSION;
		} else {
			error(state, string("Unknown state: ") + capabilityStateStr);
		}
		Fragmentation fragmentation = fragmentationStr && !strcmp("buildtime",
		        fragmentationStr) ? BUILDTIME : RUNTIME;
		string value = valueStr ? string(valueStr) : string();
		string type = typeStr ? string(typeStr)
		        : (value.length() == 0 ? string() : PROPERTY_TYPE);
		Capability capability = Capability(prefix + capabilityName, type,
		        value, capabilityState, fragmentation);
		state->profile->addCapability(capability);
		state->capabilityStack.push_back(capability);
//.........这里部分代码省略.........
开发者ID:Ginox,项目名称:MoSync,代码行数:101,代码来源:profiledb.cpp


注:本文中的Capability::getState方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。