File: Info.h

package info (click to toggle)
spring 88.0%2Bdfsg1-1.1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 41,524 kB
  • sloc: cpp: 343,114; ansic: 38,414; python: 12,257; java: 12,203; awk: 5,748; sh: 1,204; xml: 997; perl: 405; objc: 192; makefile: 181; php: 134; sed: 2
file content (55 lines) | stat: -rwxr-xr-x 1,436 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */

// The structs in this file relate to *Info.lua files.
// They are used for AIs (-> AIInfo.lua) for example.
// This file is used (at least) by unitsync and the engine.

#ifndef _INFO_H
#define _INFO_H

#include "System/FileSystem/VFSModes.h"

#include <string>
#include <vector>
#include <set>

enum InfoValueType {
	INFO_VALUE_TYPE_STRING,
	INFO_VALUE_TYPE_INTEGER,
	INFO_VALUE_TYPE_FLOAT,
	INFO_VALUE_TYPE_BOOL,
};

struct InfoItem {
	std::string key;
	std::string desc;
	InfoValueType valueType;
	union Value {
		int            typeInteger;
		float          typeFloat;
		bool           typeBool;
	} value;
	/** It is not possible to use a type with destructor in a union */
	std::string valueTypeString;
};

std::string info_getValueAsString(const InfoItem* infoItem);

void info_convertToStringValue(InfoItem* infoItem);

const char* info_convertTypeToString(InfoValueType infoValueType);

void info_parseInfo(
		std::vector<InfoItem>& options,
		const std::string& fileName,
		const std::string& fileModes = SPRING_VFS_RAW,
		const std::string& accessModes = SPRING_VFS_RAW,
		std::set<std::string>* infoSet = NULL);

std::vector<InfoItem> info_parseInfo(
		const std::string& fileName,
		const std::string& fileModes = SPRING_VFS_RAW,
		const std::string& accessModes = SPRING_VFS_RAW,
		std::set<std::string>* infoSet = NULL);

#endif // _INFO_H