bool TOptsParser::ParseUnknownShortOptWithinArg(size_t pos, size_t sop) {
    YASSERT(pos < Argc_);
    const TStringBuf arg(Argv_[pos]);
    YASSERT(sop > 0);
    YASSERT(sop < arg.length());
    YASSERT(EIO_NONE != IsOpt(arg));

    if (!Opts_->AllowUnknownCharOptions_)
        ythrow TUsageException() << "unknown option '" << EscapeC(arg[sop])
            << "' in '" << arg << "'";

    TempCurrentOpt_.Reset(new TOpt);
    TempCurrentOpt_->AddShortName(arg[sop]);

    sop += 1;

    // mimic behavior of Opt: unknown option has arg only if char is last within arg
    if (sop < arg.length()) {
        return Commit(TempCurrentOpt_.Get(), 0, pos, sop);
    }

    pos += 1;
    sop = 0;
    if (pos == Argc_ || EIO_NONE != IsOpt(Argv_[pos])) {
        return Commit(TempCurrentOpt_.Get(), 0, pos, 0);
    }

    return Commit(TempCurrentOpt_.Get(), Argv_[pos], pos + 1, 0);
}
Exemple #2
0
/*********************************************************************
 *	オプション設定
 *********************************************************************
 */
void optionCheck()
{
	if(IsOpt('h')||IsOpt('?')||IsOpt('/')||IsOpt('-')) {
		usage();exit(0);
	}
	if(IsOpt('l')) {
		log_fp = fopen( Opt('l') , "wb" );
	}
	if(IsOpt('u')) {
		upfile = sp_skip(Opt('u'));		// upload file.
	}
	if(IsOpt('b')) {
		sscanf(Opt('b'),"%d",&baudrate); // Get BaudRate
		printf("%d\n",baudrate);
	}
	if(IsOpt('d')) {
		opt_d=1;
	}
	if(IsOpt('c')) {
		com_port = Opt('c');			// COM Port No.
	}else{
		com_port = comXX;
		sprintf(comXX,"%d",RS_printinfo(0));
		printf("Open COM%s:\n",comXX);
	}
}
Exemple #3
0
void PointsCurveValue::GetVals()
{
  if (IsOpt() && control.IsOptimization())
    pVal = pOptData->GetParEstimate();
  else if (IsVary() && (!control.IsSampleSim()))
    pVal = pVaryData->GetVaryVal();
}
bool TOptsParser::ParseOptArg(size_t pos) {
    YASSERT(pos < Argc_);
    TStringBuf arg(Argv_[pos]);
    const EIsOpt eio = IsOpt(arg);
    YASSERT(EIO_NONE != eio);
    if (EIO_DDASH == eio || EIO_PLUS == eio || (Opts_->AllowSingleDashForLong_ || !Opts_->HasAnyShortOption())) {
        // long option
        bool singleCharPrefix = EIO_DDASH != eio;
        arg.Skip(singleCharPrefix ? 1 : 2);
        TStringBuf optionName = arg.NextTok('=');
        const TOpt* option = Opts_->FindLongOption(optionName);
        if (!option) {
            if (singleCharPrefix && !arg.IsInited()) {
                return ParseShortOptArg(pos);
            } else {
                ythrow TUsageException() << "unknown option '" << optionName
                    << "' in '" << Argv_[pos] << "'";
            }
        }
        if (arg.IsInited()) {
            if (option->HasArg_ == NO_ARGUMENT)
                ythrow TUsageException() << "option " << optionName << " must have no arg";
            return Commit(option, arg, pos + 1, 0);
        }
        ++pos;
        return ParseOptParam(option, pos);
    } else {
        return ParseShortOptArg(pos);
    }
}
bool TOptsParser::ParseShortOptArg(size_t pos) {
    YASSERT(pos < Argc_);
    const TStringBuf arg(Argv_[pos]);
    YASSERT(EIO_NONE != IsOpt(arg));
    YASSERT(!arg.has_prefix("--"));
    return ParseShortOptWithinArg(pos, 1);
}
Exemple #6
0
void PointsCurveValue::SetForFlags(bool parIsActive)
{
  if (IsOpt() && (!control.IsOptimization()))
    pType = pcvFixed;

  if (IsVary() && control.IsSampleSim())
    pType = pcvFixed;

  if (IsFixed() && control.IsOptimization() && pOptData && pOptData->wasActive)
    pType = pcvOpt;

  SetActive(parIsActive);
}
Exemple #7
0
/*********************************************************************
 *	メイン
 *********************************************************************
 */
int main(int argc,char **argv)
{
	//オプション解析.
	Getopt(argc,argv,"bl");
	optionCheck();
	if(IsOpt('p')) {
		RS_printinfo(1);
		return 0;
	}
	
	RS_terminal(com_port,baudrate);

	if(log_fp!=NULL) fclose(log_fp);
	return 0;
}
Exemple #8
0
bool PointsCurveValue::SetupOK(SC_SetupErr& errData,
                               bool     pIsLog)
{

  if (IsOpt())
    return pOptData->OptimizeSetupOK(errData);
  else if (IsVary())
    return pVaryData->VarySetupOK(errData);

  SC_SetupErr parErr;
  if (RealIsNull(pVal))
    parErr.SetConstantError("data value not set");
  else if (pIsLog && (pVal <= 1.0E-40))
    parErr.SetConstantError("log curve is -ve");

  return errData.SetupOK(pID, parErr);
}
bool TOptsParser::ParseShortOptWithinArg(size_t pos, size_t sop) {
    YASSERT(pos < Argc_);
    const TStringBuf arg(Argv_[pos]);
    YASSERT(sop > 0);
    YASSERT(sop < arg.length());
    YASSERT(EIO_NONE != IsOpt(arg));

    size_t p = sop;
    char c = arg[p];
    const TOpt* opt = Opts_->FindCharOption(c);
    if (!opt)
        return ParseUnknownShortOptWithinArg(pos, sop);
    p += 1;
    if (p == arg.length()) {
        return ParseOptParam(opt, pos + 1);
    }
    if (opt->HasArg_ == NO_ARGUMENT) {
        return Commit(opt, 0, pos, p);
    }
    return Commit(opt, arg + p, pos + 1, 0);
}
bool TOptsParser::ParseWithPermutation() {
    YASSERT(Sop_ == 0);
    YASSERT(Opts_->ArgPermutation_ == PERMUTE);

    const size_t p0 = Pos_;

    size_t pc = Pos_;

    for (; pc < Argc_ && EIO_NONE == IsOpt(Argv_[pc]); ++pc) {
        // count non-args
    }

    if (pc == Argc_) {
        return CommitEndOfOptions(Pos_);
    }

    Pos_ = pc;

    bool r = ParseOptArg(Pos_);
    YASSERT(r);
    while (Pos_ == pc) {
        YASSERT(Sop_ > 0);
        r = ParseShortOptWithinArg(Pos_, Sop_);
        YASSERT(r);
    }

    size_t p2 = Pos_;

    YASSERT(p2 - pc >= 1);
    YASSERT(p2 - pc <= 2);

    memrotate(Argv_ + p0, (p2 - p0) * sizeof(void*), (p2 - pc) * sizeof(void*));

    bool r2 = ParseOptArg(p0);
    YASSERT(r2);
    return r2;
}
bool TOptsParser::DoNext() {
    YASSERT(Pos_ <= Argc_);

    if (Pos_ == Argc_)
        return CommitEndOfOptions(Pos_);

    if (GotMinusMinus_ && Opts_->ArgPermutation_ == RETURN_IN_ORDER) {
        YASSERT(Sop_ == 0);
        return Commit(0, Argv_[Pos_], Pos_ + 1, 0);
    }

    if (Sop_ > 0)
        return ParseShortOptWithinArg(Pos_, Sop_);

    size_t pos = Pos_;
    const TStringBuf arg(Argv_[pos]);
    if (EIO_NONE != IsOpt(arg)) {
        return ParseOptArg(pos);
    } else if (arg == "--") {
        if (Opts_->ArgPermutation_ == RETURN_IN_ORDER) {
            pos += 1;
            if (pos == Argc_)
                return CommitEndOfOptions(pos);
            GotMinusMinus_ = true;
            return Commit(0, Argv_[pos], pos + 1, 0);
        } else {
            return CommitEndOfOptions(pos + 1);
        }
    } else if (Opts_->ArgPermutation_ == RETURN_IN_ORDER) {
        return Commit(0, arg, pos + 1, 0);
    } else if (Opts_->ArgPermutation_ == REQUIRE_ORDER) {
        return CommitEndOfOptions(Pos_);
    } else {
        return ParseWithPermutation();
    }
}
Exemple #12
0
void PointsCurveValue::SetVals()
{
  if (IsOpt() && control.IsOptimization())
    pOptData->SetParEstimate(pVal);
}
Exemple #13
0
void PointsCurveValue::SetActive(bool parIsActive)
{
  pOptIsActive = parIsActive && IsOpt() && control.IsOptimization();
  pVaryIsActive = parIsActive && IsVary() && (!control.IsSampleSim());
}
int sci_optional_parameters(char * fname)
{
    int m1, n1, l1;

    // optional names must be stored in alphabetical order in opts
    static rhs_opts opts[] = {{ -1, "v1", "d", 0, 0, 0},
        { -1, "v2", "d", 0, 0, 0},
        { -1, NULL, NULL, 0, 0}
    };

    int minrhs = 1, maxrhs = 1;
    int minlhs = 1, maxlhs = 3;
    int nopt, iopos, res;
    char buffer_name[csiz]; // csiz used for character coding

    nopt = NumOpt();

    CheckRhs(minrhs, maxrhs + nopt);
    CheckLhs(minlhs, maxlhs);

    // first non optional argument
    GetRhsVar( 1, "c", &m1, &n1, &l1);

    if (get_optionals(fname, opts) == 0)
    {
        return 0;
    }

    // default values if optional arguments are not given:  v1=[99] and v2=[3]

    sciprint("number of optional parameters = %d\n", NumOpt());
    sciprint("first optional parameters = %d\n", FirstOpt());
    sciprint("FindOpt(v1) = %d\n", FindOpt("v1", opts));
    sciprint("FindOpt(v2) = %d\n", FindOpt("v2", opts));

    if (IsOpt(1, buffer_name))
    {
        sciprint("parameter 1 is optional: %s\n", buffer_name);
    }
    if (IsOpt(2, buffer_name))
    {
        sciprint("parameter 2 is optional: %s\n", buffer_name);
    }
    if (IsOpt(3, buffer_name))
    {
        sciprint("parameter 3 is optional: %s\n", buffer_name);
    }

    iopos = Rhs;

    if (opts[0].position == -1)
    {
        iopos++;
        opts[0].position = iopos;
        opts[0].m = 1;
        opts[0].n = 1;
        opts[0].type = "d";
        CreateVar(opts[0].position, opts[0].type, &opts[0].m, &opts[0].n, &opts[0].l);
        *stk(opts[0].l) = 99.0;
    }

    if (opts[1].position == -1)
    {
        iopos++ ;
        opts[1].position = iopos;
        opts[1].m = 1;
        opts[1].n = 1;
        opts[1].type = "d";
        CreateVar(opts[1].position, opts[1].type, &opts[1].m, &opts[1].n, &opts[1].l);
        *stk(opts[1].l) = 3;
    }

    ex2c(stk(opts[0].l), &opts[0].m, &opts[0].n,
         stk(opts[1].l), &opts[1].m, &opts[1].n);

    // return the first argument (unchanged ) then v1 and v2

    LhsVar(1) = 1;
    LhsVar(2) = opts[0].position;
    LhsVar(3) = opts[1].position;

    return 0;
}