File: variable.h

package info (click to toggle)
sludge 2.2.1-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 6,844 kB
  • ctags: 2,981
  • sloc: cpp: 31,952; sh: 1,259; xml: 874; makefile: 672
file content (97 lines) | stat: -rw-r--r-- 2,971 bytes parent folder | download | duplicates (7)
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#ifndef VAR_HEADER
#define VAR_HEADER

enum variableType {SVT_NULL, SVT_INT, SVT_FUNC, SVT_STRING,
				   SVT_BUILT, SVT_FILE, SVT_STACK,
				   SVT_OBJTYPE, SVT_ANIM, SVT_COSTUME,
				   SVT_FASTARRAY, SVT_NUM_TYPES};

struct fastArrayHandler {
	struct variable *			fastVariables;
	int							size;
	int							timesUsed;
};

struct stackHandler {
	struct variableStack *		first;
	struct variableStack *		last;
	int							timesUsed;
};

union variableData {
	signed int					intValue;
	char *						theString;
	stackHandler *				theStack;
	struct personaAnimation *	animHandler;
	struct persona *    		costumeHandler;
	fastArrayHandler *			fastArray;
};

struct variable {
	variableType				varType;
	variableData				varData;
};

struct variableStack {
	variable					thisVar;
	variableStack	* 			next;
};

// Initialisation

#define initVarNew(thisVar) 	thisVar.varType = SVT_NULL

// Setting variables

void setVariable (variable & thisVar, variableType vT, int value);
bool copyVariable (const variable & from, variable & to);
bool loadStringToVar (variable & thisVar, int value);
void newAnimationVariable (variable & thisVar, struct personaAnimation * i);
void newCostumeVariable (variable & thisVar, struct persona * i);
void makeTextVar (variable & thisVar, const char * txt);
void addVariablesInSecond (variable & var1, variable & var2);
void compareVariablesInSecond (const variable & var1, variable & var2);

// Misc.

void unlinkVar (variable & thisVar);
char * getNumberedString (int value);
char * getTextFromAnyVar (const variable & from);
struct persona * getCostumeFromVar (variable & thisVar);
struct personaAnimation * getAnimationFromVar (variable & thisVar);
bool getBoolean (const variable & from);
bool getValueType (int & toHere, variableType vT, const variable & v);

// Stacky stuff

bool addVarToStack (const variable & va, variableStack * & thisStack);
bool addVarToStackQuick (variable & va, variableStack * & thisStack);
void trimStack (variableStack * & stack);
int deleteVarFromStack (const variable & va, variableStack * & thisStack, bool allOfEm = false);
variableStack * stackFindLast (variableStack * hunt);
bool copyStack (const variable & from, variable & to);
int stackSize (const stackHandler * me);
bool stackSetByIndex (variableStack *, unsigned int, const variable &);
variable * stackGetByIndex (variableStack *, unsigned int);
bool getSavedGamesStack (stackHandler * sH, char * ext);

bool makeFastArrayFromStack (variable & to, const stackHandler * stacky);
bool makeFastArraySize (variable & to, int size);
variable * fastArrayGetByIndex (fastArrayHandler * vS, unsigned int theIndex);


#define DEBUG_STACKINESS	0

#if DEBUG_STACKINESS
#define stackDebug(params) {							\
	FILE * stackfp = fopen ("stackout.txt", "at");		\
	fprintf params;										\
	fclose (stackfp);									\
}
#else
#define stackDebug(a)  {}
#endif


#endif