Esempio n. 1
0
bool ConfigurationWrite(const struct Configuration* configuration, const char* path) {
	struct VFile* vf = VFileOpen(path, O_WRONLY | O_CREAT | O_TRUNC);
	if (!vf) {
		return false;
	}
	HashTableEnumerate(&configuration->root, _keyHandler, vf);
	HashTableEnumerate(&configuration->sections, _sectionHandler, vf);
	vf->close(vf);
	return true;
}
Esempio n. 2
0
bool ConfigurationWrite(const struct Configuration* configuration, const char* path) {
	FILE* file = fopen(path, "w");
	if (!file) {
		return false;
	}
	HashTableEnumerate(&configuration->root, _keyHandler, file);
	HashTableEnumerate(&configuration->sections, _sectionHandler, file);
	fclose(file);
	return true;
}
Esempio n. 3
0
void mScriptBridgeDebuggerEntered(struct mScriptBridge* sb, enum mDebuggerEntryReason reason, struct mDebuggerEntryInfo* info) {
	struct mScriptDebuggerEntry entry = {
		.reason = reason,
		.info = info
	};
	HashTableEnumerate(&sb->engines, _seDebuggerEnter, &entry);
}
Esempio n. 4
0
void ConfigurationEnumerate(const struct Configuration* configuration, const char* section, void (*handler)(const char* key, const char* value, void* user), void* user) {
	struct ConfigurationHandlerData handlerData = { handler, user };
	const struct Table* currentSection = &configuration->root;
	if (section) {
		currentSection = HashTableLookup(&configuration->sections, section);
	}
	if (currentSection) {
		HashTableEnumerate(currentSection, _enumHandler, &handlerData);
	}
}
Esempio n. 5
0
static void _sectionHandler(const char* key, void* section, void* user) {
	char line[256];
	struct VFile* vf = user;
	size_t len = snprintf(line, sizeof(line), "[%s]\n", key);
	if (len >= sizeof(line)) {
		len = sizeof(line) - 1;
	}
	vf->write(vf, line, len);
	HashTableEnumerate(section, _keyHandler, user);
	vf->write(vf, "\n", 1);
}
Esempio n. 6
0
bool mScriptBridgeLoadScript(struct mScriptBridge* sb, const char* name) {
	struct VFile* vf = VFileOpen(name, O_RDONLY);
	if (!vf) {
		return false;
	}
	struct mScriptInfo info = {
		.name = name,
		.vf = vf,
		.success = false
	};
	HashTableEnumerate(&sb->engines, _seTryLoad, &info);
	vf->close(vf);
	return info.success;
}

bool mScriptBridgeLookupSymbol(struct mScriptBridge* sb, const char* name, int32_t* out) {
	struct mScriptSymbol info = {
		.name = name,
		.out = out,
		.success = false
	};
	HashTableEnumerate(&sb->engines, _seLookupSymbol, &info);
	return info.success;
}
Esempio n. 7
0
bool ConfigurationWriteSection(const struct Configuration* configuration, const char* path, const char* section) {
	const struct Table* currentSection = &configuration->root;
	FILE* file = fopen(path, "w");
	if (!file) {
		return false;
	}
	if (section) {
		currentSection = HashTableLookup(&configuration->sections, section);
		fprintf(file, "[%s]\n", section);
	}
	if (currentSection) {
		HashTableEnumerate(currentSection, _sectionHandler, file);
	}
	fclose(file);
	return true;
}
Esempio n. 8
0
bool ConfigurationWriteSection(const struct Configuration* configuration, const char* path, const char* section) {
	const struct Table* currentSection = &configuration->root;
	struct VFile* vf = VFileOpen(path, O_WRONLY | O_CREAT | O_APPEND);
	if (!vf) {
		return false;
	}
	if (section) {
		currentSection = HashTableLookup(&configuration->sections, section);
		char line[256];
		size_t len = snprintf(line, sizeof(line), "[%s]\n", section);
		if (len >= sizeof(line)) {
			len = sizeof(line) - 1;
		}
		vf->write(vf, line, len);
	}
	if (currentSection) {
		HashTableEnumerate(currentSection, _sectionHandler, vf);
	}
	vf->close(vf);
	return true;
}
Esempio n. 9
0
static void _sectionHandler(const char* key, void* section, void* user) {
	fprintf(user, "[%s]\n", key);
	HashTableEnumerate(section, _keyHandler, user);
	fprintf(user, "\n");
}
Esempio n. 10
0
void ConfigurationEnumerateSections(const struct Configuration* configuration, void (*handler)(const char* sectionName, void* user), void* user) {
	struct ConfigurationSectionHandlerData handlerData = { handler, user };
	HashTableEnumerate(&configuration->sections, _sectionEnumHandler, &handlerData);
}
Esempio n. 11
0
void mScriptBridgeRun(struct mScriptBridge* sb) {
	HashTableEnumerate(&sb->engines, _seRun, NULL);
}