コード例 #1
0
ファイル: iteration.c プロジェクト: Kegeruneku/core
static bool VariableStateIncrement(PromiseIterator *iter, size_t index)
{
    assert(index < SeqLength(iter->var_states));

    CfAssoc *var = SeqAt(iter->vars, index);

    switch (var->rval.type)
    {
    case RVAL_TYPE_LIST:
        {
            Rlist *state = SeqAt(iter->var_states, index);
            assert(state);
            // find the next valid value, return false if there is none
            state = FirstRealEntry(state->next);
            SeqSet(iter->var_states, index, state);
            return state != NULL;
        }
        break;

    default:
        ProgrammingError("Unhandled case in switch");
    }

    return false;
}
コード例 #2
0
ファイル: loading.c プロジェクト: kkaempf/core
static void RenameMainBundle(EvalContext *ctx, Policy *policy)
{
    assert(policy != NULL);
    assert(ctx != NULL);
    assert(policy->bundles != NULL);
    char *const entry_point = GetRealPath(EvalContextGetEntryPoint(ctx));
    if (NULL_OR_EMPTY(entry_point))
    {
        free(entry_point);
        return;
    }
    Seq *bundles = policy->bundles;
    int length = SeqLength(bundles);
    bool removed = false;
    for (int i = 0; i < length; ++i)
    {
        Bundle *const bundle = SeqAt(bundles, i);
        if (StringSafeEqual(bundle->name, "__main__"))
        {
            char *abspath = GetRealPath(bundle->source_path);
            if (StringSafeEqual(abspath, entry_point))
            {
                Log(LOG_LEVEL_VERBOSE,
                    "Redefining __main__ bundle from file %s to be main",
                    abspath);
                strncpy(bundle->name, "main", 4+1);
                // "__main__" is always big enough for "main"
            }
            else
            {
                Log(LOG_LEVEL_VERBOSE,
                    "Dropping __main__ bundle from file %s (entry point: %s)",
                    abspath,
                    entry_point);
                removed = true;
                SeqSet(bundles, i, NULL); // SeqSet calls destroy function
            }
            free(abspath);
        }
    }
    if (removed)
    {
        SeqRemoveNulls(bundles);
    }
    free(entry_point);
}
コード例 #3
0
ファイル: pmain.c プロジェクト: NeonTheBlackstar/RiboDatabase
int	main(int argc,char *argv[])
{ 
	int	i,cutoff_score = 200,minimum=0,arg;
	char	score[100],*DBS_NAME,c=' ';
	ss_type	P = NULL;
	a_type	A;
	Boolean	success=FALSE,DNA=FALSE,xnu=FALSE,query=FALSE,out_stdout=FALSE;

	if(argc < 3) print_error(PURGE_USAGE);
	DBS_NAME = argv[1];
	if(sscanf(argv[2],"%d",&i)!=1) print_error(PURGE_USAGE);
	cutoff_score = tMAX(int,1,i);
	sprintf(score,".%c%d",c,cutoff_score);
        for(arg = 3; arg < argc; arg++){
           if(argv[arg][0] != '-') print_error(PURGE_USAGE);
           switch(argv[arg][1]) {
                case 'b': c = 'b'; break;
                case 'e': c = 'e'; break;
                case 'f': c = 'f'; break;
                case 'q': query=TRUE; break;
                case 'x': xnu=TRUE; break;
                case 'n': DNA=TRUE; xnu=FALSE; break;
                case 'o': out_stdout=TRUE; break;
                default: print_error(PURGE_USAGE);
            }
        }
	//if(c=='b' && DNA == TRUE)
	//	print_error("-b option is not allowed with -n option");
	if(xnu==TRUE && DNA == TRUE)
		print_error("-x option is not allowed with -n option");
	if(DNA) A = MkAlpha("NACGT",DNA_MTRX);
	else A = MkAlpha(AMINO_ACIDS,PROT_BLOSUM62);
	if(xnu) P = MkXnuSeqSet(DBS_NAME,A);
	else P = SeqSet(DBS_NAME,A);
        if (c==' ') { if (DNA) c = 'e'; else c = 'b'; }
	success = RmHomologs(cutoff_score, c, minimum, query, P, out_stdout);
	NilAlpha(A); NilSeqSet(P);
	if(success) return 0;
	else return 1;
}