Skip to content
Snippets Groups Projects
Commit c10cf9e9 authored by rswindell's avatar rswindell
Browse files

Created Read/Get/Set functions for LongInt, NamedInt, and NamedFloat.

The LongInt functions allow the reading/writing of unsigned 32-bit integers.
The NamedInt and NamedFloat functions allow the reading and writing of
int/long and float/double values with associated names from a list of
not-neccesarily consecutive or sequential named values.
parent ab87749e
No related branches found
No related tags found
No related merge requests found
......@@ -387,6 +387,15 @@ char* iniSetShortInt(str_list_t* list, const char* section, const char* key, ush
return iniSetString(list, section, key, str, style);
}
char* iniSetLongInt(str_list_t* list, const char* section, const char* key, ulong value
,ini_style_t* style)
{
char str[INI_MAX_VALUE_LEN];
SAFEPRINTF(str,"%lu",value);
return iniSetString(list, section, key, str, style);
}
char* iniSetHexInt(str_list_t* list, const char* section, const char* key, ulong value
,ini_style_t* style)
{
......@@ -424,13 +433,34 @@ char* iniSetBool(str_list_t* list, const char* section, const char* key, BOOL va
char* iniSetEnum(str_list_t* list, const char* section, const char* key, str_list_t names, unsigned value
,ini_style_t* style)
{
char str[INI_MAX_VALUE_LEN];
if(value < strListCount(names))
return iniSetString(list, section, key, names[value], style);
SAFEPRINTF(str,"%u",value);
return iniSetString(list, section, key, str, style);
return iniSetLongInt(list, section, key, value, style);
}
char* iniSetNamedInt(str_list_t* list, const char* section, const char* key, named_long_t* names
,long value, ini_style_t* style)
{
size_t i;
for(i=0;names[i].name!=NULL;i++)
if(names[i].value==value)
return iniSetString(list, section, key, names[i].name, style);
return iniSetInteger(list, section, key, value, style);
}
char* iniSetNamedFloat(str_list_t* list, const char* section, const char* key, named_double_t* names
,double value, ini_style_t* style)
{
size_t i;
for(i=0;names[i].name!=NULL;i++)
if(names[i].value==value)
return iniSetString(list, section, key, names[i].name, style);
return iniSetFloat(list, section, key, value, style);
}
char* iniSetBitField(str_list_t* list, const char* section, const char* key
......@@ -856,6 +886,32 @@ ushort iniGetShortInt(str_list_t list, const char* section, const char* key, ush
return((ushort)iniGetInteger(list, section, key, deflt));
}
ulong iniReadLongInt(FILE* fp, const char* section, const char* key, ulong deflt)
{
char* value;
char buf[INI_MAX_VALUE_LEN];
if((value=read_value(fp,section,key,buf))==NULL)
return(deflt);
if(*value==0) /* blank value */
return(deflt);
return(strtoul(value,NULL,0));
}
ulong iniGetLongInt(str_list_t list, const char* section, const char* key, ulong deflt)
{
char value[INI_MAX_VALUE_LEN];
get_value(list, section, key, value);
if(*value==0) /* blank value or missing key */
return(deflt);
return(strtoul(value,NULL,0));
}
#if !defined(NO_SOCKET_SUPPORT)
static ulong parseIpAddress(const char* value)
......@@ -1034,6 +1090,84 @@ unsigned iniGetEnum(str_list_t list, const char* section, const char* key, str_l
return(parseEnum(value,names));
}
static long parseNamedInt(const char* value, named_long_t* names)
{
unsigned i;
for(i=0;names[i].name!=NULL;i++)
if(stricmp(names[i].name,value)==0)
return(names[i].value);
return(strtol(value,NULL,0));
}
long iniReadNamedInt(FILE* fp, const char* section, const char* key
,named_long_t* names, long deflt)
{
char buf[INI_MAX_VALUE_LEN];
char* value;
if((value=read_value(fp,section,key,buf))==NULL)
return(deflt);
if(*value==0) /* blank value */
return(deflt);
return(parseNamedInt(value,names));
}
long iniGetNamedInt(str_list_t list, const char* section, const char* key
,named_long_t* names, long deflt)
{
char value[INI_MAX_VALUE_LEN];
get_value(list, section, key, value);
if(*value==0) /* blank value or missing key */
return(deflt);
return(parseNamedInt(value,names));
}
static double parseNamedFloat(const char* value, named_double_t* names)
{
unsigned i;
for(i=0;names[i].name!=NULL;i++)
if(stricmp(names[i].name,value)==0)
return(names[i].value);
return(atof(value));
}
double iniReadNamedFloat(FILE* fp, const char* section, const char* key
,named_double_t* names, double deflt)
{
char buf[INI_MAX_VALUE_LEN];
char* value;
if((value=read_value(fp,section,key,buf))==NULL)
return(deflt);
if(*value==0) /* blank value */
return(deflt);
return(parseNamedFloat(value,names));
}
double iniGetNamedFloat(str_list_t list, const char* section, const char* key
,named_double_t* names, double deflt)
{
char value[INI_MAX_VALUE_LEN];
get_value(list, section, key, value);
if(*value==0) /* blank value or missing key */
return(deflt);
return(parseNamedFloat(value,names));
}
static ulong parseBitField(char* value, ini_bitdesc_t* bitdesc)
{
int i;
......
......@@ -79,6 +79,8 @@ long iniReadInteger(FILE*, const char* section, const char* key
,long deflt);
ushort iniReadShortInt(FILE*, const char* section, const char* key
,ushort deflt);
ulong iniReadLongInt(FILE*, const char* section, const char* key
,ulong deflt);
ulong iniReadIpAddress(FILE*, const char* section, const char* key
,ulong deflt);
double iniReadFloat(FILE*, const char* section, const char* key
......@@ -87,6 +89,10 @@ BOOL iniReadBool(FILE*, const char* section, const char* key
,BOOL deflt);
unsigned iniReadEnum(FILE*, const char* section, const char* key
,str_list_t names, unsigned deflt);
long iniReadNamedInt(FILE*, const char* section, const char* key
,named_long_t*, long deflt);
double iniReadNamedFloat(FILE*, const char* section, const char* key
,named_double_t*, double deflt);
ulong iniReadBitField(FILE*, const char* section, const char* key
,ini_bitdesc_t* bitdesc, ulong deflt);
......@@ -119,6 +125,8 @@ long iniGetInteger(str_list_t, const char* section, const char* key
,long deflt);
ushort iniGetShortInt(str_list_t, const char* section, const char* key
,ushort deflt);
ulong iniGetLongInt(str_list_t, const char* section, const char* key
,ulong deflt);
ulong iniGetIpAddress(str_list_t, const char* section, const char* key
,ulong deflt);
double iniGetFloat(str_list_t, const char* section, const char* key
......@@ -127,16 +135,21 @@ BOOL iniGetBool(str_list_t, const char* section, const char* key
,BOOL deflt);
unsigned iniGetEnum(str_list_t, const char* section, const char* key
,str_list_t names, unsigned deflt);
long iniGetNamedInt(str_list_t, const char* section, const char* key
,named_long_t*, long deflt);
double iniGetNamedFloat(str_list_t, const char* section, const char* key
,named_double_t*, double deflt);
ulong iniGetBitField(str_list_t, const char* section, const char* key
,ini_bitdesc_t* bitdesc, ulong deflt);
char* iniSetString(str_list_t*, const char* section, const char* key, const char* value
,ini_style_t*);
char* iniSetInteger(str_list_t*, const char* section, const char* key, long value
,ini_style_t*);
char* iniSetShortInt(str_list_t*, const char* section, const char* key, ushort value
,ini_style_t*);
char* iniSetLongInt(str_list_t*, const char* section, const char* key, ulong value
,ini_style_t*);
char* iniSetHexInt(str_list_t*, const char* section, const char* key, ulong value
,ini_style_t*);
char* iniSetFloat(str_list_t*, const char* section, const char* key, double value
......@@ -147,6 +160,10 @@ char* iniSetBool(str_list_t*, const char* section, const char* key, BOOL value
,ini_style_t*);
char* iniSetEnum(str_list_t*, const char* section, const char* key, str_list_t names
,unsigned value, ini_style_t*);
char* iniSetNamedInt(str_list_t*, const char* section, const char* key, named_long_t*
,long value, ini_style_t*);
char* iniSetNamedFloat(str_list_t*, const char* section, const char* key, named_double_t*
,double value, ini_style_t*);
char* iniSetBitField(str_list_t*, const char* section, const char* key, ini_bitdesc_t*, ulong value
,ini_style_t*);
char* iniSetStringList(str_list_t*, const char* section, const char* key
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment