aboutsummaryrefslogtreecommitdiff
path: root/archive/hgehelp/hgestrings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archive/hgehelp/hgestrings.cpp')
-rw-r--r--archive/hgehelp/hgestrings.cpp168
1 files changed, 0 insertions, 168 deletions
diff --git a/archive/hgehelp/hgestrings.cpp b/archive/hgehelp/hgestrings.cpp
deleted file mode 100644
index 6eda71c..0000000
--- a/archive/hgehelp/hgestrings.cpp
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
-** Haaf's Game Engine 1.7
-** Copyright (C) 2003-2007, Relish Games
-** hge.relishgames.com
-**
-** hgeStringTable helper class implementation
-*/
-
-
-#include "hgestrings.h"
-#include <ctype.h>
-
-const char STRHEADERTAG[]="[HGESTRINGTABLE]";
-const char STRFORMATERROR[]="String table %s has incorrect format.";
-
-
-HGE *hgeStringTable::hge=0;
-
-
-hgeStringTable::hgeStringTable(const char *filename)
-{
- int i;
- void *data;
- DWORD size;
- char *desc, *pdesc;
- NamedString *str;
- char str_name[MAXSTRNAMELENGTH];
- char *str_value, *pvalue;
-
- hge=hgeCreate(HGE_VERSION);
- strings=0;
-
- // load string table file
- data=hge->Resource_Load(filename, &size);
- if(!data) return;
-
- desc = new char[size+1];
- memcpy(desc,data,size);
- desc[size]=0;
- hge->Resource_Free(data);
-
- // check header
- if(memcmp(desc, STRHEADERTAG, sizeof(STRHEADERTAG)-1))
- {
- hge->System_Log(STRFORMATERROR, filename);
- delete[] desc;
- return;
- }
-
- pdesc=desc+sizeof(STRHEADERTAG);
- str_value=new char[8192];
-
- for(;;)
- {
- // skip whitespaces
- while(isspace(*pdesc)) pdesc++;
- if(!*pdesc) break;
-
- // skip comments
- if(*pdesc==';')
- {
- while(*pdesc && *pdesc != '\n') pdesc++;
- pdesc++;
- continue;
- }
-
- // get string name -> str_name
- i=0;
- while(pdesc[i] && pdesc[i]!='=' && !isspace(pdesc[i]) && i<MAXSTRNAMELENGTH)
- {
- str_name[i]=pdesc[i];
- i++;
- }
- str_name[i]=0;
- pdesc+=i;
-
- // skip string name overflow characters
- while(*pdesc && *pdesc!='=' && !isspace(*pdesc)) pdesc++;
- if(!*pdesc) break;
-
- // skip whitespaces to '='
- while(isspace(*pdesc)) pdesc++;
- if(*pdesc!='=') { hge->System_Log(STRFORMATERROR, filename); break; }
- pdesc++;
-
- // skip whitespaces to '"'
- while(isspace(*pdesc)) pdesc++;
- if(*pdesc!='"') { hge->System_Log(STRFORMATERROR, filename); break; }
- pdesc++;
-
- // parse string value till the closing '"' -> str_value
- // consider: \", \n, \\, LF, CR, whitespaces at line begin/end
- pvalue=str_value;
-
- while(*pdesc && *pdesc!='"')
- {
- if(*pdesc=='\n' || *pdesc=='\r')
- {
- while(isspace(*pdesc)) pdesc++;
-
- pvalue--;
- while(pvalue>=str_value && isspace(*pvalue)) pvalue--;
- pvalue++; *pvalue=' '; pvalue++;
-
- continue;
- }
-
- if(*pdesc=='\\')
- {
- pdesc++;
- if(!*pdesc) continue;
- if(*pdesc=='n') *pvalue='\n';
- else *pvalue=*pdesc;
- pvalue++;
- pdesc++;
- continue;
- }
-
- *pvalue=*pdesc; pvalue++;
- pdesc++;
- }
-
- *pvalue=0;
-
- // add the parsed string to the list
- str=new NamedString;
- strcpy(str->name, str_name);
- str->string=new char[strlen(str_value)+1];
- strcpy(str->string, str_value);
- str->next=strings;
- strings=str;
-
- if(!*pdesc) break;
- pdesc++;
- }
-
- delete[] str_value;
- delete[] desc;
-}
-
-hgeStringTable::~hgeStringTable()
-{
- NamedString *str, *strnext;
-
- str=strings;
- while(str)
- {
- strnext=str->next;
- delete[] str->string;
- delete str;
- str=strnext;
- }
-
- hge->Release();
-}
-
-char *hgeStringTable::GetString(const char *name)
-{
- NamedString *str=strings;
-
- while(str)
- {
- if(!strcmp(name, str->name)) return str->string;
- str=str->next;
- }
-
- return 0;
-}