This is Defaults.m in view mode; [Download] [Up]
//
// This is the Compiler's Companion a program to integrate make's and Edit
// more cleanly. Version 2.0
//
// Copyright(C) 1992 Daryll Strauss
//
// This program is shareware; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 1, or (at your option)
// any later version as long as you leave all the references to the fact
// that it is shareware and covered by the GNU General Public License in
// tact.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
// Please see the README.rtf file for more details on the shareware
// distribution and the GNU General Public License.
//
#import "Defaults.h"
#import <objc/objc.h>
#import <appkit/nextstd.h>
#import <defaults/defaults.h>
//
// Basic support functions
//
static BOOL parse_bool(char *bool_str)
{
if (!strcasecmp(bool_str, "yes")) return TRUE;
if (!strcasecmp(bool_str, "no")) return FALSE;
if (!strcasecmp(bool_str, "true")) return TRUE;
if (!strcasecmp(bool_str, "false")) return FALSE;
return(FALSE);
}
static void Read_Default_Value(Full_Defaults_Vector def, char *value)
{
switch (def.type) {
case default_string:
if (*(char**)def.current_value) free(*(char**)def.current_value);
*(char**)def.current_value=malloc(strlen(value)+1);
strcpy(*(char**)def.current_value, value);
break;
case default_const_string:
*(char**)def.current_value=value;
break;
case default_int:
*(int*)def.current_value=atoi(value);
break;
case default_float:
*(float*)def.current_value=atof(value);
break;
case default_bool:
*(BOOL*)def.current_value=parse_bool(value);
break;
default:
fprintf(stderr, "Unknown type of default\n");
}
}
static void Write_Default_Value(char *app_name, Full_Defaults_Vector def)
{
char value[64];
switch (def.type) {
case default_string:
case default_const_string:
NXWriteDefault(app_name, def.name, *(char**)def.current_value);
break;
case default_int:
sprintf(value, "%d", *(int*)def.current_value);
NXWriteDefault(app_name, def.name, value);
break;
case default_float:
sprintf(value, "%f", *(int*)def.current_value);
NXWriteDefault(app_name, def.name, value);
break;
case default_bool:
if (*(BOOL*)def.current_value)
NXWriteDefault(app_name, def.name, "TRUE");
else
NXWriteDefault(app_name, def.name, "FALSE");
break;
default:
fprintf(stderr, "Unknown type of default\n");
}
}
void Register_Full_Defaults(char *app_name, Full_Defaults_Vector *defaults)
{
struct _NXDefault *v;
int i, cnt=0;
while (defaults[cnt].type!=default_end) cnt++;
cnt++;
v = malloc(cnt*sizeof(struct _NXDefault));
for (i=0; i<cnt; i++) {
v[i].name=defaults[i].name;
v[i].value=defaults[i].default_value;
}
NXRegisterDefaults(app_name, v);
free(v);
}
void Get_Full_Defaults(char *app_name, Full_Defaults_Vector *defaults)
{
int i=0;
char *value;
while (defaults[i].type!=default_end) {
value=(char*)NXGetDefaultValue(app_name, defaults[i].name);
Read_Default_Value(defaults[i], value);
i++;
}
}
void Reset_Defaults(Full_Defaults_Vector *defaults)
{
int i=0;
while (defaults[i].type!=default_end) {
Read_Default_Value(defaults[i], defaults[i].default_value);
i++;
}
}
void Put_Full_Defaults(char *app_name, Full_Defaults_Vector *defaults)
{
int i=0;
while (defaults[i].type!=default_end) {
Write_Default_Value(app_name, defaults[i]);
i++;
}
}
void Get_Default_By_Name(char *app_name, char *default_name,
Full_Defaults_Vector *defaults)
{
int i=0;
char *value;
while (defaults[i].type!=default_end) {
if (!strcmp(defaults[i].name, default_name)) {
value=(char*)NXGetDefaultValue(app_name, default_name);
Read_Default_Value(defaults[i], value);
return;
}
i++;
}
fprintf(stderr, "Can't find the requested default\n");
}
void Put_Default_By_Name(char *app_name, char *default_name,
Full_Defaults_Vector *defaults)
{
int i=0;
while (defaults[i].type!=default_end) {
if (!strcmp(defaults[i].name, default_name)) {
Write_Default_Value(app_name, defaults[i]);
return;
}
i++;
}
fprintf(stderr, "Can't find the requested default\n");
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.