Esempio n. 1
0
bool HGEMemoizer::digestJSON(JSONValue& json) {
	bool result = 0;
	for (JSONMemberIter iter = json.MemberBegin(); iter != json.MemberEnd(); iter++) {
		const char * job = iter->first.c_str();
		JSONValue const * tools = iter->second;
		
		if (0 == strcmp("clear", job)) {
			if (!tools->IsArray()) {
				continue;
			}
			JSONValue const * inputValue = 0;
			JSONValue const * streamValue = 0;
			
			VAPIDJSON_GET_ELEMENTS(*tools, &inputValue, &streamValue);
			
			if (!inputValue->IsBool() ||
				!streamValue->IsString()) {
				continue;
			}
			
			bool input = inputValue->GetBool();
			const char * stream = streamValue->GetString();
			
			result = this->clear(input, stream) && result;
		} else if (0 == strcmp("disable", job)) {
			if (!tools->IsArray()) {
				continue;
			}
			JSONValue const * inputValue = 0;
			JSONValue const * streamValue = 0;
			
			VAPIDJSON_GET_ELEMENTS(*tools, &inputValue, &streamValue);
			
			if (!inputValue->IsBool() ||
				!streamValue->IsString()) {
				continue;
			}
			
			bool input = inputValue->GetBool();
			const char * stream = streamValue->GetString();
			
			result = this->disable(input, stream) && result;
		} else if (0 == strcmp("enable", job)) {
			if (!tools->IsArray()) {
				continue;
			}
			JSONValue const * inputValue = 0;
			JSONValue const * streamValue = 0;
			JSONValue const * formatValue = 0;
			
			VAPIDJSON_GET_ELEMENTS(*tools, &inputValue, &streamValue, &formatValue);
			
			if (!inputValue->IsBool() ||
				!streamValue->IsString()) {
				continue;
			}
			
			bool input = inputValue->GetBool();
			const char * stream = streamValue->GetString();
			const char * format = formatValue->IsString() ? formatValue->GetString() : 0;
			
			result = this->enable(input, stream, format) && result;
		} else if (0 == strcmp("rename", job)) {
			if (!tools->IsArray()) {
				continue;
			}
			JSONValue const * inputValue = 0;
			JSONValue const * streamValue = 0;
			JSONValue const * nameValue = 0;
			
			VAPIDJSON_GET_ELEMENTS(*tools, &inputValue, &streamValue, &nameValue);
			
			if (!inputValue->IsBool() ||
				!streamValue->IsString() ||
				!nameValue->IsString()) {
				continue;
			}
			
			bool input = inputValue->GetBool();
			const char * stream = streamValue->GetString();
			const char * name = nameValue->GetString();
			
			result = this->rename(input, stream, name) && result;
		}
	}
	return result;
}