[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Vi trenger options/argument handling!
Hei
Jeg tenker på å lage et system for å håntere
options/argumenter/configfiler. Det vi har av argumenter nå er
gos_lib_path, men vi kommer sikkert til å trenge mange fler. F.eks hadde
jeg tenkt på teste litt rundt nettverk og start av servere på forskjellige
maskiner. Da trenger jeg en måte å gi options -s epoksy.pvv.ntnu.no f.eks
eller --server=epoksy.pvv.ntnu.no eller kansje i en confing fil
server=epoksy.pvv.ntnu.no. Har tenkt på ett opplegg der hver option kan
ha et navn og en forkortelse. Navnet kan brukes i formen --<NAVN> på
kommandolinja eller som <NAVN> i en config fil.
Hvordan bygge opp config databasen.
1. Default verdier som er statiske i code i programmet
2. Søke etter option på commando linje som forandrer
default config file name
3. Lese config fil
4. Lese commandolinje
Jeg implementerer CConfig som en CObjectList og har funksjoner som dette
void setString(char * name,char * abbreviation, char * strValue);
void setInt(char * name,char * abbreviation, int intValue);
void setDouble(char * name,char * abbreviation, double doubleValue);
char * getString(char * name);
int getInt(char * name);
double getDouble(char * name);
void loadConfigFile(char * name);
void loadArguments(int argc,char ** argv):
vi trenger sikker også funksjoner for boolske verdier, DWORD, WORD,
BYTE, float, long, CObject * og kansje void*.
Dette ligner mye på det som ble laget i byggforks pvv prosjektet. Det
hadde vi en statisk tabell for default verdier, noe som viste seg å være
en tabbe da en i en union i en statisk tabell ikke kan initialisere mer en
første datatype! Dette problemet skal være fjærnet her da jeg tenker meg
at default verdiene lastes i constructor i arvete classer. F.eks
CGOSConfig::CGOSConfig(){
setString("gos_lib_path","p","goslib");
setInt("max_memory_usage","m",28);//Denne er bare et eksempel se note 1.
setDouble("et_magisk_tall",NULL,3.14);
}
Det jeg er litt usikker på er om vi skal legge config classen som en
global klasse som er kjent for alle filer i et delprosjekt eller om vi
skal ha den som parametre til de delene av systemet som trenger
configinfo?
Note 1)
Vi har i dag ingen kontroll over hvor mye minne GOS serveren sluker!
Potensielt loader den alle geometry og alle textures som er i verdenen.
-Andersr
-----------------------------------------------------------
| ****** Anders Reggestad |
| * * * Norges teknisk-naturvitenskapelige universitet|
| * * * E-Mail : andersr@pvv.unit.no |
| ********* Post adresse : Studpost. 159 7034 Trondheim |
| * * * Hybel adresse : Njardarvollen 9 , Trondheim |
| * * * Hjemmeside : http://www.pvv.unit.no/~andersr |
-----------------------------------------------------------