int main(int argc, char ** argv) { int argIndex; char * identifier = "preferences_testharness"; Preferences * preferences; char defaultData1[] = {0x00, 0x01, 0x02, 0x03, 0x04}; char defaultData2[] = {0xFE, 0xED, 0xFA, 0xCE}; void * data; size_t length, byteIndex; int action = ACTION_NONE; for (argIndex = 0; argIndex < argc; argIndex++) { if (!strcmp(argv[argIndex], "--help")) { printUsage(); return EXIT_SUCCESS; } if (!strcmp(argv[argIndex], "-i")) { if (argc < argIndex + 2) { printUsage(); return EXIT_FAILURE; } identifier = argv[++argIndex]; } else if (!strcmp(argv[argIndex], "-a")) { if (argc < argIndex + 2) { printUsage(); return EXIT_FAILURE; } if (!strcmp(argv[argIndex + 1], "set")) { action = ACTION_SET; } else if (!strcmp(argv[argIndex + 1], "defaults")) { action = ACTION_DEFAULTS; } else { printUsage(); return EXIT_FAILURE; } argIndex++; } } preferences = Preferences_create(identifier); preferences->addInteger(preferences, "integer1", 1); preferences->addInteger(preferences, "integer2", -2); preferences->addFloat(preferences, "float1", 4.0f); preferences->addFloat(preferences, "float2", -0.125f); preferences->addBoolean(preferences, "boolean1", true); preferences->addBoolean(preferences, "boolean2", false); preferences->addString(preferences, "string1", "Hello, world!"); preferences->addString(preferences, "string2", "foo"); preferences->addData(preferences, "data1", defaultData1, sizeof(defaultData1)); preferences->addData(preferences, "data2", defaultData2, sizeof(defaultData2)); preferences->load(preferences); printf("integer1: %d\n", preferences->getInteger(preferences, "integer1")); printf("integer2: %d\n", preferences->getInteger(preferences, "integer2")); printf("float1: %f\n", preferences->getFloat(preferences, "float1")); printf("float2: %f\n", preferences->getFloat(preferences, "float2")); printf("boolean1: %s\n", preferences->getBoolean(preferences, "boolean1") ? "true" : "false"); printf("boolean2: %s\n", preferences->getBoolean(preferences, "boolean2") ? "true" : "false"); printf("string1: %s\n", preferences->getString(preferences, "string1")); printf("string2: %s\n", preferences->getString(preferences, "string2")); printf("data1:"); data = preferences->getData(preferences, "data1", &length); for (byteIndex = 0; byteIndex < length; byteIndex++) { printf(" %02X", ((unsigned char *) data)[byteIndex]); } putchar('\n'); printf("data2:"); data = preferences->getData(preferences, "data2", &length); for (byteIndex = 0; byteIndex < length; byteIndex++) { printf(" %02X", ((unsigned char *) data)[byteIndex]); } putchar('\n'); if (action == ACTION_SET) { char data1[] = {0xFF, 0x7F, 0x00}; char data2[] = {0xAA, 0xBB}; preferences->setInteger(preferences, "integer1", -50); preferences->setInteger(preferences, "integer2", 123); preferences->setFloat(preferences, "float1", -1.0f); preferences->setFloat(preferences, "float2", 2.25f); preferences->setBoolean(preferences, "boolean1", false); preferences->setBoolean(preferences, "boolean2", true); preferences->setString(preferences, "string1", "bar"); preferences->setString(preferences, "string2", "baz"); preferences->setData(preferences, "data1", data1, sizeof(data1)); preferences->setData(preferences, "data2", data2, sizeof(data2)); preferences->save(preferences); } else if (action == ACTION_DEFAULTS) { preferences->loadDefaultValues(preferences); preferences->save(preferences); } preferences->dispose(preferences); return EXIT_SUCCESS; }