Beispiel #1
0
void Def::Load(std::string filename)
{
    inFile f;
    f.OpenFile(filename);
    bool run = true;
    while(run)
    {
        char type = f.ReadByte();
        if(type == 0)
        {
            run = false;
            break;
        }

        std::string name = f.ReadString();
        if(type == 1) //int
            SetVal(name, f.ReadInt());
        if(type == 2) //float
            SetVal(name, f.ReadFloat());
        if(type == 3) //string
            SetVal(name, f.ReadString());
        if(type == 6) //def
        {
            Def d;
            d.Load(f);
            SetVal(name, d);
        }
    }
    f.Close();
}
HRESULT CMixParam::ToggleOrSetToDefault(SONAR_MIXER_TOUCH eMixerTouch)
{
	// Toggle if it's a bool or interleave type
	if (DT_BOOL == m_eDataType)
	{
		return ToggleBooleanParam(eMixerTouch);
	}
	else if (DT_INTERLEAVE == m_eDataType)
	{
		float fVal;

		HRESULT hr = GetVal(&fVal);

		if (FAILED(hr))
			return hr;

		if (1.0f == fVal)
			fVal = 2.0f;
		else
			fVal = 1.0f;

		return SetVal(fVal, eMixerTouch);
	}

	if (NO_DEFAULT == m_fDefaultValue)
		return E_FAIL;

	return SetVal(m_fDefaultValue, eMixerTouch);
}
Beispiel #3
0
/* PPCONF
 *------------------------------------------------------------*
 */
int
ppconf (int argc, char *argv[], config_t *config_p,
	char **display, char **geometry,
	char * (*GetDefault)(char const *, char const *),
	char last)
{
    int32 i, parsed;
    int32 bad_usage = FALSE;
    char *str_p;
    Config_t *cp;

    if (GetDefault) {
	for (cp = (Config_t *)config_p; cp->arg_type != NOTYPE; cp++) {
		if ((str_p = GetDefault (argv[0], cp->LongName))) {
		    bad_usage |= SetVal (cp, str_p);
	    }
	}
    }

    for (i = 1; i < argc; i++) {
	/* argument has been processed already */
	if (argv[i][0] == '\0') continue;

	for (parsed = FALSE, cp = (Config_t *)config_p;
	     cp->arg_type != NOTYPE; cp++) {
	    if (mystrcasecmp (argv[i], cp->swtch) == 0) {
		parsed = TRUE;
		/* remove this switch from consideration */
		argv[i][0] = '\0';
		if (++i < argc) {
		    bad_usage |= SetVal (cp, argv[i]);
		    argv[i][0] = '\0';
		}
		else bad_usage = TRUE;
	    }
	}

	if (parsed || !last) continue;

	if (geometry && (*argv[i] == '=')) {
	    *geometry = argv[i];
	    continue;
	}

	if (display && (strchr (argv[i], ':') != 0)) {
	    *display = argv[i];
	    continue;
	}

	if ((mystrcasecmp ("-?", argv[i]) == 0) ||
	    (mystrcasecmp ("-help", argv[i]) == 0))
	    pusage (argv[0], (Config_t *) config_p);
	printf ("%s: Unrecognized argument, %s\n", argv[0], argv[i]);
	bad_usage = TRUE;
    }
    return (bad_usage);
}
void CDurationComboBox::UpdateValFromString(CString Str)
{
	double	val;
	if (StringToDuration(Str, val)) {	// if valid string
		bool	modified = val != m_Duration;
		SetVal(val);	// unconditionally update control and m_Duration
		if (modified)	// if duration changed
			Notify();	// send change notification after updating
	} else	// invalid string
		SetVal(m_Duration);	// restore previous value
}
Beispiel #5
0
/* PCONF
 *------------------------------------------------------------*
 */
int
pconf (int argc, char *argv[], config_t *config_p,
       char **display, char **geometry,
       char * (*GetDefault)(char const *, char const *))
{
    int32 i, parsed;
    int32 bad_usage = FALSE;
    char *str_p;
    Config_t *cp;

    if (GetDefault) {
	for (cp = (Config_t *) config_p; cp->arg_type != NOTYPE; cp++) {
	    if ((str_p = GetDefault (argv[0], cp->LongName))) {
		bad_usage |= SetVal (cp, str_p);
	    }
	}
    }

    for (i = 1; i < argc; i++) {
	for (parsed = FALSE, cp = (Config_t *) config_p;
	     cp->arg_type != NOTYPE; cp++) {
	    /* FIXME: do we *really* need our own strcasecmp? */
	    if (mystrcasecmp (argv[i], cp->swtch) == 0) {
		parsed = TRUE;
		if (++i < argc)
		    bad_usage |= SetVal (cp, argv[i]);
		else
		    bad_usage = TRUE;
	    }
	}

	if (parsed)
	    continue;
	if (geometry && (*argv[i] == '=')) {
	    *geometry = argv[i];
	    continue;
	}
	if (display && (strchr (argv[i], ':') != 0)) {
	    *display = argv[i];
	    continue;
	}
	if ((mystrcasecmp ("-?", argv[i]) == 0) ||
	    (mystrcasecmp ("-help", argv[i]) == 0))
	    pusage (argv[0], (Config_t *) config_p);
	bad_usage = TRUE;
    }
    return (bad_usage);
}
HRESULT CMixParam::SetToDefaultValue(SONAR_MIXER_TOUCH eMixerTouch)
{
	if (NO_DEFAULT == m_fDefaultValue)
		return E_FAIL;

	return SetVal(m_fDefaultValue, eMixerTouch);
}
Beispiel #7
0
bool SliderInputCombo::GuiChanged( Fl_Widget* w )
{
	if ( w == m_Input )
	{
		double val = atof( m_Input->value() );

		//==== Figure Out Range ====//
		if ( val < m_Val - m_Range || val > m_Val + m_Range )
			m_Range = m_StartRange;
		else 
			m_Range = m_Range*0.5;

		SetVal( val );
		UpdateGui( m_Slider );
		if ( fabs( val - m_Val ) > DBL_EPSILON )
			UpdateGui( m_Input );
		return true;
	}
	else if ( w == m_Slider )
	{
		m_Val = m_Slider->value();
		UpdateGui( m_Input );
		return true;
	}
	return false;
}
Beispiel #8
0
void SliderInputCombo::Init( double min, double max, double val, double range )
{
	SetLimits( min, max );
	SetVal( val );
	SetRange( range );
	UpdateGui();
}
HRESULT CMixParam::SetNormalizedVal(float fVal, SONAR_MIXER_TOUCH eMixerTouch)
{
	// Rescale to be between fMin and fMax
	fVal = (fVal * (m_fMax - m_fMin)) + m_fMin;

	return SetVal(fVal, eMixerTouch);
}
Beispiel #10
0
// Sets the scaler to use.
void SetScaler(scalerOperation_t op, Bitu size, std::string prefix)
{
	auto value = prefix + (render.scale.forced ? " forced" : "");
	SetVal("render", "scaler", value);
	render.scale.size = size;
	render.scale.op = op;
	RENDER_CallBack(GFX_CallBackReset);
}
Beispiel #11
0
void CFFPlugsRow::GotoModRangeEnd()
{
	if (SliderHasSel()) {
		float	Start, End;
		m_ParmSlider.GetNormSelection(Start, End);
		SetVal(End);
	}
}
Beispiel #12
0
void CFFPlugsRow::SetInfo(const FFPARM_INFO& Info)
{
	SetVal(Info.Val);
	SetModEnable(Info.ModEnab);
	SetModWave(Info.ModWave);
	SetModFreq(Info.ModFreq);
	SetModPulseWidth(Info.ModPW);
	m_ParmSlider.SetNormSelection(Info.ModRange.Start, Info.ModRange.End);
}
HRESULT CMixParam::ToggleBooleanParam(SONAR_MIXER_TOUCH eMixerTouch)
{
	float fVal;

	HRESULT hr = GetVal(&fVal);

	if (FAILED(hr))
		return hr;

	return SetVal((fVal >= 0.5f) ? 0.0f : 1.0f, eMixerTouch);
}
Beispiel #14
0
void CupcakeWar::WriteXmlFileImp(QString filename) {
    // check non Zero
    SetVal();
    bool other = true;
    for(const auto& ele : other_attr_val) {
        other = ele && other;
    }

    qDebug() << other;

    for(const auto& ele : levels[0]) {
        if(ele.first && !ele.second || !other) {
            QMessageBox::warning(this, "Error", "Please make sure you filled in the correct number,"
                                                "none of the number should be 0",
                                 QMessageBox::Ok);
            return;
        }
    }


    XmlFileWriter wxml(filename);
    wxml.setAutoFormatting(true);

    wxml.writeStartElement("CupcakeWar");
    wxml.writeStartElement("levelList");
    //for (const auto& ele : levels) {
    qDebug() << levels.size();
    for (int i = 0; i < (int)levels.size(); ++i) {
        wxml.writeStartElement("level");
        wxml.writeStartElement("grade");
        wxml.writeAttribute("grade", QString::number(grade->currentIndex() + 3));
        wxml.writeEndElement();
        for (int j = 0; j < (int)levels[i].size(); ++j) {
            if (!levels[i][j].first) continue;
            wxml.writeStartElement("item");
            wxml.writeAttribute("value", QString::number(levels[i][j].second));
            wxml.writeAttribute("index", QString::number(j));
            wxml.writeEndElement();
        }
        wxml.writeStartElement("singleTermRange");
        wxml.writeAttribute("max", QString::number(other_attr_val[2]));
        wxml.writeAttribute("min", QString::number(other_attr_val[3]));
        wxml.writeEndElement();

        wxml.writeStartElement("level1");
        wxml.writeAttribute("flour", QString::number(other_attr_val[0]));
        wxml.writeAttribute("milk", QString::number(other_attr_val[1]));
        wxml.writeEndElement();
    }
    wxml.writeEndElement();
    wxml.writeEndElement();
    wxml.writeEndElement();
}
Beispiel #15
0
CupcakeWar::CupcakeWar(QWidget* parent)
    : ConfigWindowBase(parent),
      nutritions({"Grape", "Kiwi", "Orange", "Pineapple", "Raspberry", "Straberry"}),
      other_attr_val(4, 0)
{
    add_level();
    for (int i = 0; i < (int)nutritions.size(); ++i) {
        QCheckBox* qcb = new QCheckBox(nutritions[i], this);
        QLineEdit* txt = new QLineEdit(this);
        qcb->move(400, 100 + i * 40);
        txt->move(500, 100 + i * 40);
        selection.push_back(std::make_pair(qcb, txt));
        txt->setValidator(validator);
        connect(qcb, SIGNAL(clicked()), this, SLOT(SetVal()));
        connect(qcb, SIGNAL(clicked()), this, SLOT(CheckEmpty()));
        connect(txt, SIGNAL(editingFinished()), this, SLOT(SetVal()));
        connect(txt, SIGNAL(textEdited(QString)), this, SLOT(CheckEmpty()));
    }

    for(int i = 0; i < 4; ++i) {
        QLineEdit* txt = new QLineEdit(this);
        txt->move(200, 100 + i * 40);
        QLabel *name = new QLabel(i == 0 ? "flour amount"
                                         : i == 1 ? "milk amount"
                                                  : i == 2 ? "max"
                                                           : "min", this);
        name->move(100, 100 + i * 40);
        other_attr.push_back(txt);
        connect(txt, SIGNAL(editingFinished()), this, SLOT(SetVal()));
    }

    grade = new QComboBox(this);
    QLabel *name = new QLabel("grade", this);
    name->move(100, 100 + 4 * 40);
    grade->move(200, 100 + 4 * 40);
    grade->addItems({"3", "4", "5", "6", "7", "8"});

    // connect(list_view, SIGNAL(level_added()), this, SLOT(add_level()));
    // connect(list_view->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(Update(QModelIndex)));
}
Beispiel #16
0
char Options_ParseCmdLine(struct Options *Options, int argc, char **argv) {
	int i;
	char *Argument;
	
	for (i = 1; i < argc; i++) {
		Argument = argv[i];
		
		if (StringStart(Argument, "-a") == 0) {
			if (SetVal(Argument + 2, &(Options->Show_Addresses), "show addresses", 0, 1) == 0) return 0; 
		} else if (StringStart(Argument, "-o") == 0) {
			if (SetVal(Argument + 2, &(Options->Show_Opcodes), "show opcodes", 0, 1) == 0) return 0; 
		} else if (StringStart(Argument, "-c") == 0) {
			if (SetVal(Argument + 2, &(Options->Show_Comments), "show comments", 0, 1) == 0) return 0; 
		} else if (StringStart(Argument, "-q") == 0) {
			if (SetVal(Argument + 2, &(Options->Show_Cycles), "show cycles", 0, 1) == 0) return 0; 
		} else if (StringStart(Argument, "-p") == 0) {
			if (SetVal(Argument + 2, &(Options->Show_PseudoCode), "show pseudocode", 0, 1) == 0) return 0; 
		} else if (StringStart(Argument, "-s") == 0) {
			if (SetVal(Argument + 2, &(Options->CodeStyle), "codestyle", 0, 2) == 0) return 0; 
		} else if (StringStart(Argument, "-l") == 0) {
			if (SetVal(Argument + 2, &(Options->Process_Labels), "process labels", 0, 1) == 0) return 0; 
		} else if (StringStart(Argument, "-m") == 0) {
			if (SetMCU(Argument + 2, Options->MCU) == 0) return 0; 
		} else if (StringStart(Argument, "-t") == 0) {
			strncpy(Options->Tagfile, Argument + 2, 256);
		} else if (StringStart(Argument, "-f") == 0) {
			if (SetValInt(Argument + 2, &(Options->FlashSize), "flash size", 32, 1024 * 1024) == 0) return 0; 
		} else if (StringStart(Argument, "--help") == 0) {
			Show_Help(argv[0]); return 0;
		} else if (StringStart(Argument, "-h") == 0) {
			Show_Help(argv[0]); return 0;
		} else {
			if (Options->Filename[0] != 0) {
				fprintf(stderr, "Filename '%s' was already supplied!\n", Options->Filename);
				return 0;
			}
			strncpy(Options->Filename, Argument, 255);
		}
	}

	if (Options->Filename[0] == 0) {
		fprintf(stderr, "Error: No filename supplied.\n");
		return 0;
	}

	if (Options->Tagfile[0] != 0) {
		if (!Read_Tagfile(Options->Tagfile)) return 0;
	}
	
	return 1;
}
Beispiel #17
0
void CNumEdit::PreSubclassWindow() 
{
	SetVal(m_Val);
	CEdit::PreSubclassWindow();
	if (m_Format & DF_SPIN) {	// if spin control requested
		m_Spin = new CNumSpin;
		UINT	style = WS_CHILD | WS_VISIBLE | UDS_ALIGNRIGHT | UDS_ARROWKEYS;
		UINT	IDC_SPIN_OFFSET = 0x4000;
		UINT	nID = GetDlgCtrlID() + IDC_SPIN_OFFSET;
		if (!m_Spin->Create(style, CRect(0, 0, 0, 0), GetParent(), nID))
			AfxThrowResourceException();
		m_Spin->SetWindowPos(this, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
		m_Spin->SetBuddy(this);
	}
}
void FlagImpl<bool>::Parse( Args & args )
{
     for( Args::iterator arg = args.begin(); arg != args.end(); ++arg )
     {
          if( !arg->compare( GetFlag() ))
          {
               if( IsAlreadySet() ) // если флаг задан( уже встречалс¤ среди переданных аргументов )
                    throw exception::ErrBadArgs();
               // аргумент, ¤вл¤ющийс¤ булевым флагом, не предполагает следующей за ним опции
               SetVal( true ); 
               SetIsAlreadySet(); // выставл¤ем признак того, что данный флаг уже задан( защита от дублировани¤ )
               // удал¤ем из списка аргументов считанный флаг
               args.erase( arg ); 
               break;
          }
     }
}
HRESULT CMixParam::Adjust(float fDelta, SONAR_MIXER_TOUCH eMixerTouch)
{
	float fVal;

	HRESULT hr = GetVal(&fVal);

	if (FAILED(hr))
		return hr;

	fVal += fDelta;

	if (fVal < m_fMin)
		fVal = m_fMin;
	else if (fVal > m_fMax)
		fVal = m_fMax;

	return SetVal(fVal, eMixerTouch);
}
Beispiel #20
0
//---------------------------------------------------------------------------------------
MySpinBox::MySpinBox(const QString &title, uint32_t val, QWidget *parent)
    : QGroupBox(title, parent)
{
    QFormLayout *layMain = new QFormLayout(this);

    edtDec = new QLineEdit(this);
    edtDec->setInputMask("0000000000");
    layMain->addRow("Dec:", edtDec);

    edtHex = new QLineEdit(this);
    edtHex->setInputMask("HH HH HH HH");
    edtHex->setToolTip("小端模式");
    layMain->addRow("Hex:", edtHex);

    connect(edtDec, &QLineEdit::editingFinished, this, &MySpinBox::OnEdtDecEditingFinished);
    connect(edtHex, &QLineEdit::editingFinished, this, &MySpinBox::OnEdtHexEditingFinished);
    SetVal(val);
}
Beispiel #21
0
void TGStat::AvgGStat(const TGStatV& GStatV, const bool& ClipAt1) {
  if (GStatV.Empty()) return;
  Time = GStatV[0]->Time;
  GraphNm = GStatV[0]->GraphNm;
  // values
  for (int statVal = 0; statVal > gsvMx; statVal++) {
    const TGStatVal GStatVal = TGStatVal(statVal);
    TMom Mom;
    for (int i = 0; i < GStatV.Len(); i++) {
      if (GStatV[i]->HasVal(GStatVal)) {
        Mom.Add(GStatV[i]->GetVal(GStatVal)); }
    }
    Mom.Def();
    if (Mom.IsUsable()) {
      IAssert(Mom.GetVals() == GStatV.Len()); // all must have the value
      SetVal(GStatVal, Mom.GetMean());
    }
  }
  // distributions
  for (int distr = gsdUndef; distr < gsdMx; distr++) {
    const TGStatDistr GStatDistr = TGStatDistr(distr);
    THash<TFlt, TFlt> ValToSumH;
    int DistrCnt = 0;
    for (int i = 0; i < GStatV.Len(); i++) {
      if (GStatV[i]->HasDistr(GStatDistr)) {
        const TFltPrV& D = GStatV[i]->GetDistr(GStatDistr);
        for (int d = 0; d < D.Len(); d++) {
          ValToSumH.AddDat(D[d].Val1) += D[d].Val2; }
        DistrCnt++;
      }
    }
    IAssert(DistrCnt==0 || DistrCnt==GStatV.Len()); // all must have distribution
    TFltPrV AvgStatV;
    ValToSumH.GetKeyDatPrV(AvgStatV);  AvgStatV.Sort();
    for (int i = 0; i < AvgStatV.Len(); i++) {
      AvgStatV[i].Val2 /= double(DistrCnt);
      if (ClipAt1 && AvgStatV[i].Val2 < 1) { AvgStatV[i].Val2 = 1; }
    }
    SetDistr(GStatDistr, AvgStatV);
  }
}
void FlagImpl<std::string>::Parse( Args & args )
{
     for( Args::iterator arg = args.begin(); arg != args.end(); ++arg )
     {
          if( !arg->compare( GetFlag() ))
          {
               if( IsAlreadySet() ) // если флаг задан( уже встречалс¤ среди переданных аргументов )
                    throw exception::ErrBadArgs();
               Args::iterator flag = arg; // первый аргумент - флаг
               Args::iterator opt = ++arg; // следущий за ним аргумент - опци¤ 
               if( opt == args.end() )
                    throw exception::ErrBadArgs();
               SetVal( *opt );
               SetIsAlreadySet(); // выставл¤ем признак того, что данный флаг уже задан( защита от дублировани¤ )
               // удал¤ем из списка аргументов считанные флаг и опцию
               args.erase( flag ); 
               args.erase( opt );
               break;
          }
     }
}
Beispiel #23
0
void Misc_Cfg_GetConfig(char *sConfigFilePath, ...)
{
	FILE *pstFile;
	char sLine[MAX_CONFIG_LINE_LEN+1], sParam[MAX_CONFIG_LINE_LEN+1], sVal[MAX_CONFIG_LINE_LEN+1];
	va_list ap;
	
	va_start(ap, sConfigFilePath);
	InitDefault(ap);
	va_end(ap);

	if ((pstFile = fopen(sConfigFilePath, "r")) == NULL)
	{
		return;
	}

	while (1)
	{
		strncpy(sLine, "", sizeof(sLine) - 1);
		
		fgets(sLine, sizeof(sLine), pstFile);
		if (strcmp(sLine, "") != 0)
		{
			if (GetParamVal(sLine, sParam, sVal) == 0)
			{
				va_start(ap, sConfigFilePath);
				SetVal(ap, sParam, sVal);
				va_end(ap);
			}
		}
		
		if (feof(pstFile))
		{
			break; 
		}
	}	
	fclose(pstFile);
	
}
Beispiel #24
0
/*----------------------------------------------------------------------------------------------
	Subclass an existing button window.
----------------------------------------------------------------------------------------------*/
void IconComboCombo::SubclassButton(HWND hwnd, int * pval, bool fShowText)
{
    AssertPtr(pval);
#ifdef DEBUG
    {   // Make sure the window is really a button.
        achar rgch[10];
        ::GetClassName(hwnd, rgch, SizeOfArray(rgch));
        Assert(StrCmpI(rgch, _T("BUTTON")) == 0);
    }
#endif

    ::SetWindowLong(hwnd, GWL_STYLE, ::GetWindowLong(hwnd, GWL_STYLE) | BS_OWNERDRAW);

    SuperClass::SubclassHwnd(hwnd);

    m_wid = ::GetDlgCtrlID(hwnd);
    Assert(m_wid);

    m_fShowText = fShowText;
    m_pival = pval;
    SetVal(*pval);
    SetWindowSize();
}
Beispiel #25
0
void HJ_Cfg_GetConfig(const char *pszConfigFilePath, ...)
{
    va_list ap;

    va_start(ap, pszConfigFilePath);
    InitDefault(ap);
    va_end(ap);

    FILE *pstFile = fopen(pszConfigFilePath, "r");
    if (pstFile == NULL)
    {
        return;
    }

    char pszLine[MAX_CONFIG_LINE_LEN+1], pszParam[MAX_CONFIG_LINE_LEN+1], pszVal[MAX_CONFIG_LINE_LEN+1];
    while (1)
    {
        strcpy(pszLine, "");

        fgets(pszLine, sizeof(pszLine), pstFile);
        if (pszLine[0] != '\0')
        {
            if (GetParamVal(pszLine, pszParam, pszVal) == 0)
            {
                va_start(ap, pszConfigFilePath);
                SetVal(ap, pszParam, pszVal);
                va_end(ap);
            }
        }

        if (feof(pstFile))
        {
            break;
        }
    }
    fclose(pstFile);
}
Beispiel #26
0
INT_PTR CALLBACK SetParams(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	UNREFERENCED_PARAMETER(lParam);
	hVal = GetDlgItem(hDlg,IDC_EDIT1);
	char Val[255] = {'0'};
	char* buf = new char[255];
	int val = CheckVal();
	switch (message)
	{
	case WM_INITDIALOG:
			
		buf = _itoa(val,buf,10);
		SetWindowText(hVal,buf);
		return (INT_PTR)TRUE;

	case WM_COMMAND:
		if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
		{
			EndDialog(hDlg, LOWORD(wParam));
			return (INT_PTR)TRUE;
		}

		//Обработчик нажатия кнопки Set Val
		if (LOWORD(wParam) == IDC_BT_SETVAL && HIWORD(wParam) == BN_CLICKED)
		{
			//Получаем значение из окна
			GetWindowText(hVal,Val,255);
			val = atoi(Val);
			//и устанавливаем его в параметр реестра
			if(SetVal(val) != NULL)
				MessageBox(NULL,"Succes",NULL,MB_OK);	
		}
		break;
	}
	return (INT_PTR)FALSE;
}
Beispiel #27
0
KmerIntPair::KmerIntPair(const Kmer &km, unsigned int val) {
  SetKey(km);
  SetVal(val);
}
Beispiel #28
0
Def::Def()
{
    SetVal("x", 0);
    SetVal("y", 0);
    SetVal("rotation", 0.0f);
}
Beispiel #29
0
/*
 * fpconf
 */
int
fpconf (FILE *config_fp, Config_t config_p[],
	char **display, char **geometry,
	char * (*GetDefault)(char const *, char const *))
{
    int parsed, read_mode = NAME, inchar;
    int bad_usage = FALSE;
    Config_t *cp;
    char name[MAX_NAME_LEN+1], value[MAX_VALUE_LEN+1], name_fm[12],
	value_fm[12];

    sprintf(name_fm, "%%%d[^:]", MAX_NAME_LEN);
    sprintf(value_fm, "%%%d[^\n]", MAX_VALUE_LEN);

    for (;;) {
	inchar = fgetc(config_fp);

	if (inchar == EOF) {
	    if (read_mode == VALUE)
		fprintf(stderr, "Value expected after name, %s.\n", name);

	    return bad_usage;
	}

	if (inchar == '\n') {
	    read_mode = NAME;
	    continue;
        }

	/* skip whitespace or comments */
        if ( read_mode == COMMENT || inchar == ' ' || inchar == '\t')
	    continue;

	if ( inchar == ';') {
	    read_mode = COMMENT;
	    continue;
	}

	/* put first char of name or value back */
	ungetc(inchar, config_fp);

	if (read_mode == NAME) {
	    fscanf(config_fp, name_fm, name);

	    if (fgetc(config_fp) != ':') {
		fprintf(stderr, "fpconf: Parameter name too int32.");
		exit(-1);
	    }

	    read_mode = VALUE;
	    continue;
	}

	if (read_mode == VALUE) {
	    fscanf(config_fp, value_fm, value);
	    read_mode = NAME;
	}

	/* got a (name, value) pair */

	for (parsed = FALSE, cp = config_p; cp->arg_type != NOTYPE; cp++) {
	    if (mystrcasecmp (name, cp->LongName) == 0) {
		parsed = TRUE;
		bad_usage |= SetVal (cp, salloc(value));

	    }
	}

	if (!parsed) {
	    fprintf(stderr, "fpconf: Unknown parameter %s\n", name);
	    bad_usage = TRUE;
	}
    }
}
Beispiel #30
0
va_dcl
#else

UnsignedInt_t* UnsignedInt (Msg_t msg, ...)
#endif
{
    char	blank[64], buf[16];
    String_t*	image;
    size_t	indent;
    UnsignedInt_t*	obj;
    va_init(ap, msg, obj);
    if (!obj) return NULL;

    switch (msg) {
    case _Init:
	Obj(_Init, obj, UnsignedInt);
	obj->vlast = -1;
	obj->value = 0;
	obj->unit = 0;
	return String(_Relay, _Init, &obj->image, ap) ? obj : NULL;

    case _Destroy:
	Destroy(&obj->image);
	if (obj->unit) {
	    Destroy(obj->unit);
	    free(obj->unit);
	    obj->unit = 0;
	}
	return NULL;

    case _SetVal:
	obj->value = va_arg(ap, unsigned int);
	obj->vlast = 1;
	return obj;

    case _Val:
	if (obj->vlast < 0) {
	    if (sscanf(Val(&obj->image), "%u", &obj->value) != 1)
		return NULL;
	    obj->vlast = 0;
	}
	return (UnsignedInt_t*) &obj->value;

    case _Unit_of:
	return (UnsignedInt_t*) Val(obj->unit);
	
    case _SetUnit:
	return (obj->unit = va_arg(ap, Unit_t*), obj);
	
    case _Image:
	image = va_arg(ap, String_t*);
        if ((indent = va_arg(ap, size_t)) >= sizeof(blank))
            return NULL;

	if (indent > 0) memset(blank, ' ', indent);
	blank[indent] = 0;

	if (obj->vlast > 0) {
	    sprintf(buf, "%u", obj->value);
	    if (! SetVal(&obj->image, buf)) return NULL;
	    obj->vlast = 0;
	}
	return (UnsignedInt_t*) String(_Cat, image, blank, Val(&obj->image), 0);

    default:
      return NULL;
    }
}