src/stringtable.cxx

Fri, 10 Jan 2014 21:58:42 +0200

author
Teemu Piippo <crimsondusk64@gmail.com>
date
Fri, 10 Jan 2014 21:58:42 +0200
changeset 72
03e4d9db3fd9
parent 71
11f23fabf8a6
child 73
1ee9b312dc18
permissions
-rw-r--r--

- major refactoring begins

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "main.h"
#include "bots.h"
#include "stringtable.h"

static string_list g_string_table;

// ============================================================================
//
const string_list& get_string_table()
{
	return g_string_table;
}

// ============================================================================
// Potentially adds a string to the table and returns the index of it.
//
int get_string_table_index (const string& a)
{
	// Must not be too long.
	if (strlen (a) >= MAX_STRING_LENGTH)
		error ("string `%s` too long (%d characters, max is %d)\n",
			   a.c_str(), a.length(), MAX_STRING_LENGTH);

	// Find a free slot in the table.
	int idx;

	for (idx = 0; idx < g_string_table.size(); idx++)
	{
		// String is already in the table, thus return it.
		if (g_string_table[idx] == a)
			return idx;
	}

	// Check if the table is already full
	if (g_string_table.size() == MAX_LIST_STRINGS - 1)
		error ("too many strings!\n");

	// Now, dump the string into the slot
	g_string_table[idx] = a;

	return idx;
}

// ============================================================================
// Counts the amount of strings in the table.
//
int num_strings_in_table()
{
	return g_string_table.size();
}

mercurial