コード例 #1
0
void PrintCFDictionaryInternalFormatting(CFDictionaryRef dictionary, uint32_t depth) {
	CFIndex keyCount = CFDictionaryGetCount(dictionary);
	Pointer keys[keyCount];
	Pointer values[keyCount];
	CFDictionaryGetKeysAndValues(dictionary, PtrCast(keys,const void **), PtrCast(values,const void **));
	for (uint32_t i = 0x0; i < keyCount; i++) {
		CFStringRef key = PtrCast(keys[i],CFStringRef);
		CFTypeRef value = PtrCast(values[i],CFTypeRef);
		PrintDepth(depth,"%s: ",(char *)CFStringGetCStringPtr(key,kCFStringEncodingUTF8));
		PrintCFTypeInternalFormat(value, depth);
	}
}
コード例 #2
0
unsigned char *DataToSHA256(CFDataRef data)
{
	SHA256_CTX ctx;
	return DataToHash(data, PtrCast(&ctx, Pointer), sha256_hash);
}
コード例 #3
0
void PrintCFDictionaryInternalFormatting(CFDictionaryRef dictionary, uint32_t depth) {
	CFIndex keyCount = CFDictionaryGetCount(dictionary);
	Pointer keys[keyCount];
	Pointer values[keyCount];
	CFDictionaryGetKeysAndValues(dictionary, PtrCast(keys,const void**), PtrCast(values,const void**));
	for (uint32_t i = 0x0; i < keyCount; i++) {
		CFStringRef key = PtrCast(keys[i],CFStringRef);
		CFTypeRef value = PtrCast(values[i],CFTypeRef);
		PrintDepth(depth,"%s: ",(char*)CFStringGetCStringPtr(key,kCFStringEncodingUTF8));
		
		CFStringRef valueType = CFCopyTypeIDDescription(CFGetTypeID(value));
		if (CFStringCompare(valueType, CFCopyTypeIDDescription(CFDictionaryGetTypeID()), 0x0) == kCFCompareEqualTo) {
			printf("\n");
			PrintCFDictionaryInternalFormatting(value, depth+0x1);
			printf("\n");
		}
		if (CFStringCompare(valueType, CFCopyTypeIDDescription(CFBooleanGetTypeID()), 0x0) == kCFCompareEqualTo) {
			printf("%s\n",(CFBooleanGetValue(value) ? "True" : "False"));
		}
		if (CFStringCompare(valueType, CFCopyTypeIDDescription(CFStringGetTypeID()), 0x0) == kCFCompareEqualTo) {
			printf("%s\n",(char*)CFStringGetCStringPtr(value,kCFStringEncodingUTF8));
		}
		if (CFStringCompare(valueType, CFCopyTypeIDDescription(CFNumberGetTypeID()), 0x0) == kCFCompareEqualTo) {
			CFIndex numberType = CFNumberGetType(value);
			switch (numberType) {
				case kCFNumberSInt8Type: {
					SInt8 number;
					CFNumberGetValue(value, numberType, &number);
					printf("%hhd\n",number);
					break;
				};
				case kCFNumberSInt16Type: {
					SInt16 number;
					CFNumberGetValue(value, numberType, &number);
					printf("%hd\n",number);
					break;
				};
				case kCFNumberSInt32Type: {
					SInt32 number;
					CFNumberGetValue(value, numberType, &number);
					printf("%dz\n",number);
					break;
				};
				case kCFNumberSInt64Type: {
					SInt64 number;
					CFNumberGetValue(value, numberType, &number);
					printf("%lldz\n",number);
					break;
				};
				case kCFNumberFloat32Type: {
					Float32 number;
					CFNumberGetValue(value, numberType, &number);
					printf("%.f\n",number);
					break;
				};
				case kCFNumberFloat64Type: {
					Float64 number;
					CFNumberGetValue(value, numberType, &number);
					printf("%.f\n",number);
					break;
				};
				case kCFNumberCharType: {
					char number;
					CFNumberGetValue(value, numberType, &number);
					printf("%c\n",number);
					break;
				};
				case kCFNumberShortType: {
					short number;
					CFNumberGetValue(value, numberType, &number);
					printf("%hd\n",number);
					break;
				};
				case kCFNumberIntType: {
					int number;
					CFNumberGetValue(value, numberType, &number);
					printf("%dz\n",number);
					break;
				};
				case kCFNumberLongType: {
					long number;
					CFNumberGetValue(value, numberType, &number);
					printf("%ldz\n",number);
					break;
				};
				case kCFNumberLongLongType: {
					long long number;
					CFNumberGetValue(value, numberType, &number);
					printf("%qdz\n",number);
					break;
				};
				case kCFNumberFloatType: {
					float number;
					CFNumberGetValue(value, numberType, &number);
					printf("%.f\n",number);
					break;
				};
				case kCFNumberDoubleType: {
					double number;
					CFNumberGetValue(value, numberType, &number);
					printf("%.f\n",number);
					break;
				};
				case kCFNumberCFIndexType: {
					CFIndex number;
					CFNumberGetValue(value, numberType, &number);
					printf("%ldz\n",number);
					break;
				};
				case kCFNumberNSIntegerType: {
					NSInteger number;
					CFNumberGetValue(value, numberType, &number);
					printf("%ldz\n",number);
					break;
				};
				case kCFNumberCGFloatType: {
					CGFloat number;
					CFNumberGetValue(value, numberType, &number);
					printf("%.f\n",number);
					break;
				};
				default: {
					break;
				};
			}
		}
	}
}