您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ CAR函数代码示例

51自学网 2021-06-01 19:56:56
  C++
这篇教程C++ CAR函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中CAR函数的典型用法代码示例。如果您正苦于以下问题:C++ CAR函数的具体用法?C++ CAR怎么用?C++ CAR使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了CAR函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: copy_struct

Eterm copy_struct(Eterm obj, Uint sz, Eterm** hpp, ErlOffHeap* off_heap)#endif{    char* hstart;    Uint hsize;    Eterm* htop;    Eterm* hbot;    Eterm* hp;    Eterm* objp;    Eterm* tp;    Eterm  res;    Eterm  elem;    Eterm* tailp;    Eterm* argp;    Eterm* const_tuple;    Eterm hdr;    int i;#ifdef DEBUG    Eterm org_obj = obj;    Uint org_sz = sz;#endif    if (IS_CONST(obj))	return obj;    DTRACE1(copy_struct, (int32_t)sz);    hp = htop = *hpp;    hbot   = htop + sz;    hstart = (char *)htop;    hsize = (char*) hbot - hstart;    const_tuple = 0;    /* Copy the object onto the heap */    switch (primary_tag(obj)) {    case TAG_PRIMARY_LIST:	argp = &res;	objp = list_val_rel(obj,src_base);	goto L_copy_list;    case TAG_PRIMARY_BOXED: argp = &res; goto L_copy_boxed;    default:	erl_exit(ERTS_ABORT_EXIT,		 "%s, line %d: Internal error in copy_struct: 0x%08x/n",		 __FILE__, __LINE__,obj);    } L_copy:    while (hp != htop) {	obj = *hp;	switch (primary_tag(obj)) {	case TAG_PRIMARY_IMMED1:	    hp++;	    break;	case TAG_PRIMARY_LIST:	    objp = list_val_rel(obj,src_base);	#if !HALFWORD_HEAP || defined(DEBUG)	    if (in_area(objp,hstart,hsize)) {		ASSERT(!HALFWORD_HEAP);		hp++;		break;	    }	#endif	    argp = hp++;	    /* Fall through */	L_copy_list:	    tailp = argp;	    for (;;) {		tp = tailp;		elem = CAR(objp);		if (IS_CONST(elem)) {		    hbot -= 2;		    CAR(hbot) = elem;		    tailp = &CDR(hbot);		}		else {		    CAR(htop) = elem;		#if HALFWORD_HEAP		    CDR(htop) = CDR(objp);		    *tailp = make_list_rel(htop,dst_base);		    htop += 2;		    goto L_copy;		#else		    tailp = &CDR(htop);		    htop += 2;		#endif		}		ASSERT(!HALFWORD_HEAP || tp < hp || tp >= hbot);		*tp = make_list_rel(tailp - 1, dst_base);		obj = CDR(objp);		if (!is_list(obj)) {		    break;		}		objp = list_val_rel(obj,src_base);	    }	    switch (primary_tag(obj)) {	    case TAG_PRIMARY_IMMED1: *tailp = obj; goto L_copy;	    case TAG_PRIMARY_BOXED: argp = tailp; goto L_copy_boxed;	    default://.........这里部分代码省略.........
开发者ID:margnus1,项目名称:otp,代码行数:101,


示例2: c_test_handler

static cv_t c_test_handler(obj_t cont, obj_t values){    obj_t ex = vector_ref(record_get_field(CAR(values), 0), 0);    return cv(EMPTY_LIST, MAKE_LIST(ex));}
开发者ID:kbob,项目名称:schetoo,代码行数:5,


示例3: MatrixSubset

static SEXP MatrixSubset(SEXP x, SEXP s, SEXP call, int drop){    SEXP attr, result, sr, sc, dim;    int nr, nc, nrs, ncs;    R_xlen_t i, j, ii, jj, ij, iijj;    nr = nrows(x);    nc = ncols(x);    /* Note that "s" is protected on entry. */    /* The following ensures that pointers remain protected. */    dim = getAttrib(x, R_DimSymbol);    sr = SETCAR(s, int_arraySubscript(0, CAR(s), dim, x, call));    sc = SETCADR(s, int_arraySubscript(1, CADR(s), dim, x, call));    nrs = LENGTH(sr);    ncs = LENGTH(sc);    /* Check this does not overflow: currently only possible on 32-bit */    if ((double)nrs * (double)ncs > R_XLEN_T_MAX)	error(_("dimensions would exceed maximum size of array"));    PROTECT(sr);    PROTECT(sc);    result = allocVector(TYPEOF(x), (R_xlen_t) nrs * (R_xlen_t) ncs);    PROTECT(result);    for (i = 0; i < nrs; i++) {	ii = INTEGER(sr)[i];	if (ii != NA_INTEGER) {	    if (ii < 1 || ii > nr)		errorcall(call, R_MSG_subs_o_b);	    ii--;	}	for (j = 0; j < ncs; j++) {	    jj = INTEGER(sc)[j];	    if (jj != NA_INTEGER) {		if (jj < 1 || jj > nc)		    errorcall(call, R_MSG_subs_o_b);		jj--;	    }	    ij = i + j * nrs;	    if (ii == NA_INTEGER || jj == NA_INTEGER) {		switch (TYPEOF(x)) {		case LGLSXP:		case INTSXP:		    INTEGER(result)[ij] = NA_INTEGER;		    break;		case REALSXP:		    REAL(result)[ij] = NA_REAL;		    break;		case CPLXSXP:		    COMPLEX(result)[ij].r = NA_REAL;		    COMPLEX(result)[ij].i = NA_REAL;		    break;		case STRSXP:		    SET_STRING_ELT(result, ij, NA_STRING);		    break;		case VECSXP:		    SET_VECTOR_ELT(result, ij, R_NilValue);		    break;		case RAWSXP:		    RAW(result)[ij] = (Rbyte) 0;		    break;		default:		    errorcall(call, _("matrix subscripting not handled for this type"));		    break;		}	    }	    else {		iijj = ii + jj * nr;		switch (TYPEOF(x)) {		case LGLSXP:		    LOGICAL(result)[ij] = LOGICAL(x)[iijj];		    break;		case INTSXP:		    INTEGER(result)[ij] = INTEGER(x)[iijj];		    break;		case REALSXP:		    REAL(result)[ij] = REAL(x)[iijj];		    break;		case CPLXSXP:		    COMPLEX(result)[ij] = COMPLEX(x)[iijj];		    break;		case STRSXP:		    SET_STRING_ELT(result, ij, STRING_ELT(x, iijj));		    break;		case VECSXP:		    SET_VECTOR_ELT(result, ij, VECTOR_ELT_FIX_NAMED(x, iijj));		    break;		case RAWSXP:		    RAW(result)[ij] = RAW(x)[iijj];		    break;		default:		    errorcall(call, _("matrix subscripting not handled for this type"));		    break;		}	    }	}    }    if(nrs >= 0 && ncs >= 0) {	PROTECT(attr = allocVector(INTSXP, 2));	INTEGER(attr)[0] = nrs;//.........这里部分代码省略.........
开发者ID:Maxsl,项目名称:r-source,代码行数:101,


示例4: CAR

 void CallProxy::traverse_call( SEXP obj ){     if( TYPEOF(obj) == LANGSXP && CAR(obj) == Rf_install("local") ) return ;     if( ! Rf_isNull(obj) ){         SEXP head = CAR(obj) ;         switch( TYPEOF( head ) ){         case LANGSXP:             if( CAR(head) == Rf_install("order_by") ) break ;             if( CAR(head) == Rf_install("function") ) break ;             if( CAR(head) == Rf_install("local") ) return ;             if( CAR(head) == Rf_install("<-") ){                 stop( "assignments are forbidden" ) ;             }             if( Rf_length(head) == 3 ){                 SEXP symb = CAR(head) ;                 if( symb == R_DollarSymbol || symb == Rf_install("@") || symb == Rf_install("::") || symb == Rf_install(":::") ){                     // for things like : foo( bar = bling )$bla                     // so that `foo( bar = bling )` gets processed                     if( TYPEOF(CADR(head)) == LANGSXP ){                         traverse_call( CDR(head) ) ;                         }                                          // deal with foo$bar( bla = boom )                     if( TYPEOF(CADDR(head)) == LANGSXP ){                         traverse_call( CDDR(head) ) ;                     }                                          break ;                 } else {                   traverse_call( CDR(head) ) ;                 }             } else {                 traverse_call( CDR(head) ) ;             }              break ;         case LISTSXP:             traverse_call( head ) ;             traverse_call( CDR(head) ) ;             break ;         case SYMSXP:             if( TYPEOF(obj) != LANGSXP ){                 if( ! subsets.count(head) ){                     if( head == R_MissingArg ) break ;                     if( head == Rf_install(".") ) break ;                      // in the Environment -> resolve                     try{                         Shield<SEXP> x( env.find( CHAR(PRINTNAME(head)) ) ) ;                         SETCAR( obj, x );                     } catch( ...){                         // what happens when not found in environment                     }                  } else {                     // in the data frame                     proxies.push_back( CallElementProxy( head, obj ) );                 }                 break ;             }         }         traverse_call( CDR(obj) ) ;     } }
开发者ID:elenius,项目名称:dplyr,代码行数:63,


示例5: BGl_inlinezd2walkz12zc0zzinline_walkz00

/* inline-walk! */	BGL_EXPORTED_DEF obj_t BGl_inlinezd2walkz12zc0zzinline_walkz00(obj_t		BgL_globalsz00_1, obj_t BgL_whatz00_2)	{		AN_OBJECT;		{	/* Inline/walk.scm 40 */			{	/* Inline/walk.scm 42 */				obj_t BgL_list3278z00_786;				{	/* Inline/walk.scm 42 */					obj_t BgL_arg3280z00_788;					{	/* Inline/walk.scm 42 */						obj_t BgL_arg3282z00_790;						BgL_arg3282z00_790 = MAKE_PAIR(BCHAR(((unsigned char) '/n')), BNIL);						BgL_arg3280z00_788 =							MAKE_PAIR(BGl_string3393z00zzinline_walkz00, BgL_arg3282z00_790);					}					BgL_list3278z00_786 =						MAKE_PAIR(BGl_string3394z00zzinline_walkz00, BgL_arg3280z00_788);				}				BGl_verbosez00zztools_speekz00(BINT(((long) 1)), BgL_list3278z00_786);			}			BGl_za2nbzd2errorzd2onzd2passza2zd2zztools_errorz00 = BINT(((long) 0));			BGl_za2currentzd2passza2zd2zzengine_passz00 =				BGl_string3393z00zzinline_walkz00;			{	/* Inline/walk.scm 42 */				obj_t BgL_g3270z00_791;				obj_t BgL_g3271z00_792;				{	/* Inline/walk.scm 42 */					obj_t BgL_list3292z00_806;					BgL_list3292z00_806 =						MAKE_PAIR(BGl_resetzd2statz12zd2envz12zzinline_walkz00, BNIL);					BgL_g3270z00_791 = BgL_list3292z00_806;				}				BgL_g3271z00_792 = CNST_TABLE_REF(((long) 1));				{					obj_t BgL_hooksz00_794;					obj_t BgL_hnamesz00_795;					BgL_hooksz00_794 = BgL_g3270z00_791;					BgL_hnamesz00_795 = BgL_g3271z00_792;				BgL_zc3anonymousza33283ze3z83_796:					if (NULLP(BgL_hooksz00_794))						{	/* Inline/walk.scm 42 */							CNST_TABLE_REF(((long) 2));						}					else						{	/* Inline/walk.scm 42 */							bool_t BgL_testz00_1352;							{	/* Inline/walk.scm 42 */								obj_t BgL_fun3291z00_804;								BgL_fun3291z00_804 = CAR(BgL_hooksz00_794);								BgL_testz00_1352 =									CBOOL(PROCEDURE_ENTRY(BgL_fun3291z00_804) (BgL_fun3291z00_804,										BEOA));							}							if (BgL_testz00_1352)								{									obj_t BgL_hnamesz00_1359;									obj_t BgL_hooksz00_1357;									BgL_hooksz00_1357 = CDR(BgL_hooksz00_794);									BgL_hnamesz00_1359 = CDR(BgL_hnamesz00_795);									BgL_hnamesz00_795 = BgL_hnamesz00_1359;									BgL_hooksz00_794 = BgL_hooksz00_1357;									goto BgL_zc3anonymousza33283ze3z83_796;								}							else								{	/* Inline/walk.scm 42 */									BGl_internalzd2errorzd2zztools_errorz00										(BGl_string3393z00zzinline_walkz00,										BGl_string3395z00zzinline_walkz00, CAR(BgL_hnamesz00_795));								}						}				}			}			BGl_inlinezd2setupz12zc0zzinline_walkz00(BgL_whatz00_2);			{				obj_t BgL_l3275z00_808;				BgL_l3275z00_808 = BgL_globalsz00_1;			BgL_zc3anonymousza33293ze3z83_809:				if (PAIRP(BgL_l3275z00_808))					{	/* Inline/walk.scm 46 */						{	/* Inline/walk.scm 47 */							obj_t BgL_gz00_811;							BgL_gz00_811 = CAR(BgL_l3275z00_808);							{	/* Inline/walk.scm 47 */								obj_t BgL_kfactorz00_812;//.........这里部分代码省略.........
开发者ID:8l,项目名称:bigloo-llvm,代码行数:101,


示例6: obj_compare

int obj_compare(obj_ptr left, obj_ptr right){    /* TODO    if (NUMP(left) && NUMP(right))        ...    */    if (TYPE(left) < TYPE(right))        return -1;        if (TYPE(left) > TYPE(right))        return 1;    switch (TYPE(left))    {    case TYPE_INT:    case TYPE_BOOL:        return _int_compare(INT(left), INT(right));    case TYPE_FLOAT:        return _float_compare(FLOAT(left), FLOAT(right), 0.00000001); /* TODO: Better epsilon? */    case TYPE_SYMBOL:        return strcmp(SYMBOL(left), SYMBOL(right));    case TYPE_STRING:        return string_compare(&STRING(left), &STRING(right));    case TYPE_CONS:    {        int res = 0;        for (;;)        {            if (NTYPEP(left, TYPE(right)))                return obj_compare(left, right);            if (NTYPEP(left, TYPE_CONS))                return obj_compare(left, right);            res = obj_compare(CAR(left), CAR(right));            if (res != 0)                return res;                        left = CDR(left);            right = CDR(right);        }        assert(0); /* unreachable */        break;    }    case TYPE_VEC:        return vec_compare(&left->data.as_vec, &right->data.as_vec);    /* TODO */    case TYPE_MAP:        assert(TYPE(left) != TYPE_MAP);        break;    case TYPE_CLOSURE:        assert(TYPE(left) != TYPE_CLOSURE);        break;    case TYPE_PRIMITIVE:        assert(TYPE(left) != TYPE_PRIMITIVE);        break;    case TYPE_ERROR:        assert(TYPE(left) != TYPE_ERROR);        break;    case TYPE_PORT:        assert(TYPE(left) != TYPE_PORT);        break;    }    return 0;}
开发者ID:poschengband,项目名称:emrys,代码行数:76,


示例7: eval

static SCMeval (SCM x, SCM env){  SCM mx;  SCM proc = SCM_UNDEFINED, args = SCM_EOL;  unsigned int argc; loop:  SCM_TICK;  if (!SCM_MEMOIZED_P (x))    abort ();    mx = SCM_MEMOIZED_ARGS (x);  switch (SCM_MEMOIZED_TAG (x))    {    case SCM_M_SEQ:      eval (CAR (mx), env);      x = CDR (mx);      goto loop;    case SCM_M_IF:      if (scm_is_true (EVAL1 (CAR (mx), env)))        x = CADR (mx);      else        x = CDDR (mx);      goto loop;    case SCM_M_LET:      {        SCM inits = CAR (mx);        SCM new_env = CAPTURE_ENV (env);        for (; scm_is_pair (inits); inits = CDR (inits))          new_env = scm_cons (EVAL1 (CAR (inits), env),                              new_env);        env = new_env;        x = CDR (mx);        goto loop;      }              case SCM_M_LAMBDA:      RETURN_BOOT_CLOSURE (mx, CAPTURE_ENV (env));    case SCM_M_QUOTE:      return mx;    case SCM_M_DEFINE:      scm_define (CAR (mx), EVAL1 (CDR (mx), env));      return SCM_UNSPECIFIED;    case SCM_M_DYNWIND:      {        SCM in, out, res;        scm_i_thread *t = SCM_I_CURRENT_THREAD;        in = EVAL1 (CAR (mx), env);        out = EVAL1 (CDDR (mx), env);        scm_call_0 (in);        scm_dynstack_push_dynwind (&t->dynstack, in, out);        res = eval (CADR (mx), env);        scm_dynstack_pop (&t->dynstack);        scm_call_0 (out);        return res;      }    case SCM_M_WITH_FLUIDS:      {        long i, len;        SCM *fluidv, *valuesv, walk, res;        scm_i_thread *thread = SCM_I_CURRENT_THREAD;        len = scm_ilength (CAR (mx));        fluidv = alloca (sizeof (SCM)*len);        for (i = 0, walk = CAR (mx); i < len; i++, walk = CDR (walk))          fluidv[i] = EVAL1 (CAR (walk), env);        valuesv = alloca (sizeof (SCM)*len);        for (i = 0, walk = CADR (mx); i < len; i++, walk = CDR (walk))          valuesv[i] = EVAL1 (CAR (walk), env);                scm_dynstack_push_fluids (&thread->dynstack, len, fluidv, valuesv,                                  thread->dynamic_state);        res = eval (CDDR (mx), env);        scm_dynstack_unwind_fluids (&thread->dynstack, thread->dynamic_state);                return res;      }    case SCM_M_APPLY:      /* Evaluate the procedure to be applied.  */      proc = EVAL1 (CAR (mx), env);      /* Evaluate the argument holding the list of arguments */      args = EVAL1 (CADR (mx), env);              apply_proc:      /* Go here to tail-apply a procedure.  PROC is the procedure and       * ARGS is the list of arguments. */      if (BOOT_CLOSURE_P (proc))        {          prepare_boot_closure_env_for_apply (proc, args, &x, &env);          goto loop;        }      else//.........这里部分代码省略.........
开发者ID:Card1nal,项目名称:guile,代码行数:101,


示例8: iol2v_continue

static BIF_RETTYPE iol2v_continue(iol2v_state_t *state) {    Eterm iterator;    DECLARE_ESTACK(s);    ESTACK_CHANGE_ALLOCATOR(s, ERTS_ALC_T_SAVED_ESTACK);    state->bytereds_available =        ERTS_BIF_REDS_LEFT(state->process) * IOL2V_SMALL_BIN_LIMIT;    state->bytereds_spent = 0;    if (state->estack.start) {        ESTACK_RESTORE(s, &state->estack);    }    iterator = state->input_list;    for(;;) {        if (state->bytereds_spent >= state->bytereds_available) {            ESTACK_SAVE(s, &state->estack);            state->input_list = iterator;            return iol2v_yield(state);        }        while (is_list(iterator)) {            Eterm *cell;            Eterm head;            cell = list_val(iterator);            head = CAR(cell);            if (is_binary(head)) {                if (!iol2v_append_binary(state, head)) {                    goto l_badarg;                }                iterator = CDR(cell);            } else if (is_small(head)) {                Eterm seq_end;                if (!iol2v_append_byte_seq(state, iterator, &seq_end)) {                    goto l_badarg;                }                iterator = seq_end;            } else if (is_list(head) || is_nil(head)) {                Eterm tail = CDR(cell);                if (!is_nil(tail)) {                    ESTACK_PUSH(s, tail);                }                state->bytereds_spent += 1;                iterator = head;            } else {                goto l_badarg;            }            if (state->bytereds_spent >= state->bytereds_available) {                ESTACK_SAVE(s, &state->estack);                state->input_list = iterator;                return iol2v_yield(state);            }        }        if (is_binary(iterator)) {            if (!iol2v_append_binary(state, iterator)) {                goto l_badarg;            }        } else if (!is_nil(iterator)) {            goto l_badarg;        }        if(ESTACK_ISEMPTY(s)) {            break;        }        iterator = ESTACK_POP(s);    }    if (state->acc_size != 0) {        iol2v_enqueue_result(state, iol2v_promote_acc(state));    }    BUMP_REDS(state->process, state->bytereds_spent / IOL2V_SMALL_BIN_LIMIT);    CLEAR_SAVED_ESTACK(&state->estack);    DESTROY_ESTACK(s);    BIF_RET(state->result_head);l_badarg:    CLEAR_SAVED_ESTACK(&state->estack);    DESTROY_ESTACK(s);    if (state->acc != NULL) {        erts_bin_free(state->acc);        state->acc = NULL;    }//.........这里部分代码省略.........
开发者ID:crownedgrouse,项目名称:otp,代码行数:101,


示例9: erts_ioq_iolist_to_vec

interts_ioq_iolist_to_vec(Eterm obj,	  /* io-list */                       SysIOVec* iov,	  /* io vector */                       ErtsIOQBinary** binv,       /* binary reference vector */                       ErtsIOQBinary* cbin,        /* binary to store characters */                       Uint bin_limit,  /* small binaries limit */                       int driver){    DECLARE_ESTACK(s);    Eterm* objp;    byte *buf  = NULL;    Uint len = 0;    Uint csize  = 0;    int vlen   = 0;    byte* cptr;    if (cbin) {        if (driver) {            buf = (byte*)cbin->driver.orig_bytes;            len = cbin->driver.orig_size;        } else {            buf = (byte*)cbin->nif.orig_bytes;            len = cbin->nif.orig_size;        }    }    cptr = buf;    goto L_jump_start;  /* avoid push */    while (!ESTACK_ISEMPTY(s)) {	obj = ESTACK_POP(s);    L_jump_start:	if (is_list(obj)) {	L_iter_list:	    objp = list_val(obj);	    obj = CAR(objp);	    if (is_byte(obj)) {		if (len == 0)		    goto L_overflow;		*buf++ = unsigned_val(obj);		csize++;		len--;	    } else if (is_binary(obj)) {		ESTACK_PUSH(s, CDR(objp));		goto handle_binary;	    } else if (is_list(obj)) {		ESTACK_PUSH(s, CDR(objp));		goto L_iter_list;    /* on head */	    } else if (!is_nil(obj)) {		goto L_type_error;	    }	    obj = CDR(objp);	    if (is_list(obj))		goto L_iter_list; /* on tail */	    else if (is_binary(obj)) {		goto handle_binary;	    } else if (!is_nil(obj)) {		goto L_type_error;	    }	} else if (is_binary(obj)) {	    Eterm real_bin;	    Uint offset;	    Eterm* bptr;	    Uint size;	    int bitoffs;	    int bitsize;	handle_binary:	    size = binary_size(obj);	    ERTS_GET_REAL_BIN(obj, real_bin, offset, bitoffs, bitsize);	    ASSERT(bitsize == 0);	    bptr = binary_val(real_bin);	    if (*bptr == HEADER_PROC_BIN) {		ProcBin* pb = (ProcBin *) bptr;		if (bitoffs != 0) {		    if (len < size) {			goto L_overflow;		    }		    erts_copy_bits(pb->bytes+offset, bitoffs, 1,				   (byte *) buf, 0, 1, size*8);		    csize += size;		    buf += size;		    len -= size;		} else if (bin_limit && size < bin_limit) {		    if (len < size) {			goto L_overflow;		    }		    sys_memcpy(buf, pb->bytes+offset, size);		    csize += size;		    buf += size;		    len -= size;		} else {                    ErtsIOQBinary *qbin;		    if (csize != 0) {                        io_list_to_vec_set_vec(&iov, &binv, cbin,                                               cptr, csize, &vlen);			cptr = buf;			csize = 0;		    }		    if (pb->flags) {//.........这里部分代码省略.........
开发者ID:crownedgrouse,项目名称:otp,代码行数:101,


示例10: BGl_fetchzd2prototypeszd2zz__match_expandz00

/* fetch-prototypes */	obj_t BGl_fetchzd2prototypeszd2zz__match_expandz00(obj_t BgL_patz00_2)	{		AN_OBJECT;		{	/* Match/mexpand.scm 112 */			if (CBOOL(BGl_memqz00zz__r4_pairs_and_lists_6_3z00(CAR(BgL_patz00_2),						BGl_list2321z00zz__match_expandz00)))				{	/* Match/mexpand.scm 114 */					obj_t BgL_arg1957z00_876;					obj_t BgL_arg1958z00_877;					{	/* Match/mexpand.scm 114 */						obj_t BgL_arg1959z00_878;						obj_t BgL_arg1960z00_879;						{	/* Match/mexpand.scm 114 */							obj_t BgL_pairz00_1432;							BgL_pairz00_1432 = BgL_patz00_2;							BgL_arg1959z00_878 = CAR(CDR(CDR(BgL_pairz00_1432)));						}						{	/* Match/mexpand.scm 114 */							obj_t BgL_arg1961z00_880;							{	/* Match/mexpand.scm 114 */								obj_t BgL_arg1965z00_883;								{	/* Match/mexpand.scm 114 */									obj_t BgL_pairz00_1438;									BgL_pairz00_1438 = BgL_patz00_2;									BgL_arg1965z00_883 = CAR(CDR(BgL_pairz00_1438));								}								BgL_arg1961z00_880 =									BGl_patternzd2variableszd2zz__match_descriptionsz00									(BgL_arg1965z00_883);							}							{	/* Match/mexpand.scm 114 */								obj_t BgL_list1963z00_882;								BgL_list1963z00_882 = MAKE_PAIR(BNIL, BNIL);								BgL_arg1960z00_879 =									BGl_consza2za2zz__r4_pairs_and_lists_6_3z00									(BgL_arg1961z00_880, BgL_list1963z00_882);							}						}						BgL_arg1957z00_876 =							MAKE_PAIR(BgL_arg1959z00_878, BgL_arg1960z00_879);					}					{	/* Match/mexpand.scm 115 */						obj_t BgL_arg1966z00_884;						{	/* Match/mexpand.scm 115 */							obj_t BgL_pairz00_1442;							BgL_pairz00_1442 = BgL_patz00_2;							BgL_arg1966z00_884 = CAR(CDR(CDR(CDR(BgL_pairz00_1442))));						}						BgL_arg1958z00_877 =							BGl_fetchzd2prototypeszd2zz__match_expandz00(BgL_arg1966z00_884);					}					return MAKE_PAIR(BgL_arg1957z00_876, BgL_arg1958z00_877);				}			else				{	/* Match/mexpand.scm 113 */					return BNIL;				}		}	}
开发者ID:mbrock,项目名称:bigloo-llvm,代码行数:71,


示例11: BGl_expandzd2matchzd2casez00zz__match_expandz00

/* expand-match-case */	BGL_EXPORTED_DEF obj_t BGl_expandzd2matchzd2casez00zz__match_expandz00(obj_t		BgL_expz00_5)	{		AN_OBJECT;		{	/* Match/mexpand.scm 123 */			{	/* Match/mexpand.scm 124 */				obj_t BgL_arg1973z00_891;				obj_t BgL_arg1974z00_892;				{	/* Match/mexpand.scm 124 */					obj_t BgL_arg1977z00_895;					{	/* Match/mexpand.scm 124 */						obj_t BgL_arg1979z00_896;						{	/* Match/mexpand.scm 124 */							obj_t BgL_arg1980z00_897;							obj_t BgL_arg1981z00_898;							BgL_arg1980z00_897 = BGl_symbol2324z00zz__match_expandz00;							{	/* Match/mexpand.scm 124 */								obj_t BgL_pairz00_1462;								BgL_pairz00_1462 = BgL_expz00_5;								BgL_arg1981z00_898 = CDR(CDR(BgL_pairz00_1462));							}							BgL_arg1979z00_896 =								MAKE_PAIR(BgL_arg1980z00_897, BgL_arg1981z00_898);						}						if (EXTENDED_PAIRP(BgL_expz00_5))							{	/* Match/mexpand.scm 124 */								obj_t BgL_arg1970z00_1469;								obj_t BgL_arg1971z00_1470;								obj_t BgL_arg1972z00_1471;								BgL_arg1970z00_1469 = CAR(BgL_arg1979z00_896);								BgL_arg1971z00_1470 = CDR(BgL_arg1979z00_896);								BgL_arg1972z00_1471 = CER(BgL_expz00_5);								{	/* Match/mexpand.scm 124 */									obj_t BgL_res2294z00_1479;									BgL_res2294z00_1479 =										MAKE_EXTENDED_PAIR(BgL_arg1970z00_1469, BgL_arg1971z00_1470,										BgL_arg1972z00_1471);									BgL_arg1977z00_895 = BgL_res2294z00_1479;								}							}						else							{	/* Match/mexpand.scm 124 */								BgL_arg1977z00_895 = BgL_arg1979z00_896;							}					}					BgL_arg1973z00_891 =						BGl_expandzd2matchzd2lambdaz00zz__match_expandz00						(BgL_arg1977z00_895);				}				{	/* Match/mexpand.scm 125 */					obj_t BgL_pairz00_1480;					BgL_pairz00_1480 = BgL_expz00_5;					BgL_arg1974z00_892 = CAR(CDR(BgL_pairz00_1480));				}				{	/* Match/mexpand.scm 124 */					obj_t BgL_list1975z00_893;					{	/* Match/mexpand.scm 124 */						obj_t BgL_arg1976z00_894;						BgL_arg1976z00_894 = MAKE_PAIR(BgL_arg1974z00_892, BNIL);						BgL_list1975z00_893 =							MAKE_PAIR(BgL_arg1973z00_891, BgL_arg1976z00_894);					}					return BgL_list1975z00_893;				}			}		}	}
开发者ID:mbrock,项目名称:bigloo-llvm,代码行数:82,


示例12: BGl_zc3anonymousza31896ze3z83zz__match_expandz00

/* <anonymous:1896> */	obj_t BGl_zc3anonymousza31896ze3z83zz__match_expandz00(obj_t BgL_envz00_1693,		obj_t BgL_patz00_1695, obj_t BgL_envz00_1696)	{		AN_OBJECT;		{	/* Match/mexpand.scm 96 */			{	/* Match/mexpand.scm 97 */				obj_t BgL_expz00_1694;				BgL_expz00_1694 = PROCEDURE_REF(BgL_envz00_1693, (int) (((long) 0)));				{					obj_t BgL_patz00_803;					obj_t BgL_envz00_804;					BgL_patz00_803 = BgL_patz00_1695;					BgL_envz00_804 = BgL_envz00_1696;					{	/* Match/mexpand.scm 97 */						obj_t BgL_compiledzd2patzd2_806;						obj_t BgL_prototypesz00_807;						BgL_compiledzd2patzd2_806 =							BGl_pcompilez00zz__match_compilerz00(BgL_patz00_803);						BgL_prototypesz00_807 =							BGl_fetchzd2prototypeszd2zz__match_expandz00(BgL_patz00_803);						{	/* Match/mexpand.scm 101 */							obj_t BgL_arg1898z00_808;							obj_t BgL_arg1899z00_809;							BgL_arg1898z00_808 = BGl_symbol2319z00zz__match_expandz00;							{	/* Match/mexpand.scm 102 */								obj_t BgL_arg1900z00_810;								{	/* Match/mexpand.scm 102 */									obj_t BgL_arg1904z00_814;									if (NULLP(BgL_prototypesz00_807))										{	/* Match/mexpand.scm 102 */											BgL_arg1904z00_814 = BNIL;										}									else										{	/* Match/mexpand.scm 102 */											obj_t BgL_head1850z00_818;											BgL_head1850z00_818 = MAKE_PAIR(BNIL, BNIL);											{												obj_t BgL_l1848z00_820;												obj_t BgL_tail1851z00_821;												BgL_l1848z00_820 = BgL_prototypesz00_807;												BgL_tail1851z00_821 = BgL_head1850z00_818;											BgL_zc3anonymousza31907ze3z83_822:												if (NULLP(BgL_l1848z00_820))													{	/* Match/mexpand.scm 102 */														BgL_arg1904z00_814 = CDR(BgL_head1850z00_818);													}												else													{	/* Match/mexpand.scm 102 */														obj_t BgL_newtail1852z00_824;														{	/* Match/mexpand.scm 102 */															obj_t BgL_arg1910z00_826;															{	/* Match/mexpand.scm 102 */																obj_t BgL_prototypez00_828;																BgL_prototypez00_828 = CAR(BgL_l1848z00_820);																{	/* Match/mexpand.scm 104 */																	obj_t BgL_bodyz00_829;																	BgL_bodyz00_829 =																		CDR(BGl_assqz00zz__r4_pairs_and_lists_6_3z00																		(CAR(BgL_prototypez00_828),																			BgL_envz00_804));																	if (NULLP(BgL_bodyz00_829))																		{	/* Match/mexpand.scm 105 */																			BgL_arg1910z00_826 =																				BGl_errorz00zz__errorz00																				(BGl_symbol2316z00zz__match_expandz00,																				BGl_string2318z00zz__match_expandz00,																				BgL_expz00_1694);																		}																	else																		{	/* Match/mexpand.scm 107 */																			obj_t BgL_arg1914z00_831;																			obj_t BgL_arg1915z00_832;																			BgL_arg1914z00_831 =																				CAR(BgL_prototypez00_828);																			{	/* Match/mexpand.scm 108 */																				obj_t BgL_arg1916z00_833;																				{	/* Match/mexpand.scm 108 */																					obj_t BgL_pairz00_1402;																					BgL_pairz00_1402 =//.........这里部分代码省略.........
开发者ID:mbrock,项目名称:bigloo-llvm,代码行数:101,


示例13: BGl_expandzd2matchzd2lambdaz00zz__match_expandz00

/* expand-match-lambda */	BGL_EXPORTED_DEF obj_t BGl_expandzd2matchzd2lambdaz00zz__match_expandz00(obj_t		BgL_expz00_1)	{		AN_OBJECT;		{	/* Match/mexpand.scm 71 */			{				obj_t BgL_clausesz00_798;				obj_t BgL_kz00_799;				{	/* Match/mexpand.scm 95 */					obj_t BgL_arg1894z00_801;					BgL_arg1894z00_801 = CDR(BgL_expz00_1);					{	/* Match/mexpand.scm 97 */						obj_t BgL_zc3anonymousza31896ze3z83_1689;						BgL_zc3anonymousza31896ze3z83_1689 =							make_fx_procedure							(BGl_zc3anonymousza31896ze3z83zz__match_expandz00,							(int) (((long) 2)), (int) (((long) 1)));						PROCEDURE_SET(BgL_zc3anonymousza31896ze3z83_1689,							(int) (((long) 0)), BgL_expz00_1);						BgL_clausesz00_798 = BgL_arg1894z00_801;						BgL_kz00_799 = BgL_zc3anonymousza31896ze3z83_1689;					BgL_clauseszd2ze3patternz31_800:						if (NULLP(BgL_clausesz00_798))							{	/* Match/mexpand.scm 75 */								return									PROCEDURE_ENTRY(BgL_kz00_799) (BgL_kz00_799,									BGl_list2305z00zz__match_expandz00,									BGl_za2thezd2emptyzd2envza2z00zz__match_expandz00, BEOA);							}						else							{	/* Match/mexpand.scm 77 */								bool_t BgL_testz00_1737;								{	/* Match/mexpand.scm 77 */									obj_t BgL_auxz00_1738;									BgL_auxz00_1738 = CAR(BgL_clausesz00_798);									BgL_testz00_1737 = PAIRP(BgL_auxz00_1738);								}								if (BgL_testz00_1737)									{	/* Match/mexpand.scm 80 */										obj_t BgL_patternz00_840;										obj_t BgL_actionsz00_841;										obj_t BgL_restz00_842;										{	/* Match/mexpand.scm 80 */											obj_t BgL_pairz00_1414;											BgL_pairz00_1414 = BgL_clausesz00_798;											BgL_patternz00_840 = CAR(CAR(BgL_pairz00_1414));										}										{	/* Match/mexpand.scm 81 */											obj_t BgL_pairz00_1418;											BgL_pairz00_1418 = BgL_clausesz00_798;											BgL_actionsz00_841 = CDR(CAR(BgL_pairz00_1418));										}										BgL_restz00_842 = CDR(BgL_clausesz00_798);										{	/* Match/mexpand.scm 83 */											obj_t BgL_tagz00_843;											BgL_tagz00_843 =												PROCEDURE_ENTRY(BGl_jimzd2gensymzd2zz__match_s2cfunz00)												(BGl_jimzd2gensymzd2zz__match_s2cfunz00,												BGl_string2311z00zz__match_expandz00, BEOA);											if ((BgL_patternz00_840 ==													BGl_symbol2312z00zz__match_expandz00))												{	/* Match/mexpand.scm 85 */													obj_t BgL_arg1923z00_845;													obj_t BgL_arg1924z00_846;													{	/* Match/mexpand.scm 85 */														obj_t BgL_arg1925z00_847;														obj_t BgL_arg1926z00_848;														BgL_arg1925z00_847 =															BGl_symbol2314z00zz__match_expandz00;														{	/* Match/mexpand.scm 85 */															obj_t BgL_arg1927z00_849;															obj_t BgL_arg1929z00_850;															BgL_arg1927z00_849 =																MAKE_PAIR(BGl_symbol2309z00zz__match_expandz00,																BNIL);															{	/* Match/mexpand.scm 85 */																obj_t BgL_arg1937z00_855;																obj_t BgL_arg1938z00_856;																BgL_arg1937z00_855 =//.........这里部分代码省略.........
开发者ID:mbrock,项目名称:bigloo-llvm,代码行数:101,


示例14: reader_getc

//.........这里部分代码省略.........	      else		{		  r->state->dotpair_mode = 1;		  reader_putc (r, nc);		}	    }	  else	    {	      /* Turn it into a decimal point. */	      reader_putc (r, nc);	      reader_putc (r, '.');	      reader_putc (r, '0');	    }	  break;	  /* Whitespace */	case '/n':	  r->linecnt++;	  print_prompt (r);	case ' ':	case '/t':	case '/r':	  break;	  /* Parenthesis */	case '(':	  push (r);	  break;	case ')':	  if (r->state->quote_mode)	    read_error (r, "unbalanced parenthesis");	  else if (r->state->vector_mode)	    read_error (r, "unbalanced brackets");	  else	    addpop (r);	  break;	  /* Vectors */	case '[':	  push (r);	  r->state->vector_mode = 1;	  break;	case ']':	  if (r->state->quote_mode)	    read_error (r, "unbalanced parenthesis");	  else if (!r->state->vector_mode)	    read_error (r, "unbalanced brackets");	  else	    addpop (r);	  break;	  /* Quoting */	case '/'':	  push (r);	  add (r, quote);	  if (!r->error)	    r->state->quote_mode = 1;	  break;	  /* strings */	case '"':	  buf_read (r, "/"");	  add (r, parse_str (r));	  reader_getc (r);	/* Throw away other quote. */	  break;	  /* numbers and symbols */	default:	  buf_append (r, c);	  buf_read (r, " /t/r/n()[];");	  object_t *o = parse_atom (r);	  if (!r->error)	    add (r, o);	  break;	}    }  if (!r->eof && !r->error)    consume_whitespace (r);  if (r->error)    return err_symbol;  /* Check state */  r->done = 1;  if (stack_height (r) > 1 || r->state->quote_mode      || r->state->dotpair_mode == 1)    {      read_error (r, "premature end of file");      return err_symbol;    }  if (list_empty (r))    {      obj_destroy (pop (r));      return NIL;    }  object_t *wrap = pop (r);  object_t *sexp = UPREF (CAR (wrap));  obj_destroy (wrap);  return sexp;}
开发者ID:qyqx,项目名称:wisp,代码行数:101,


示例15: RK_TRACE

//.........这里部分代码省略.........		childdata->length = childcount;		RData **children = new RData*[childcount];		childdata->data = children;		childdata->length = childcount;		for (unsigned int i = 0; i < childcount; ++i) {		// in case there is an error while fetching one of the children, let's pre-initialize everything.			children[i] = new RData;			children[i]->data = 0;			children[i]->length = 0;			children[i]->datatype = RData::NoData;		}		if (do_env) {			RK_DO (qDebug ("recurse into environment %s", name.toLatin1().data ()), RBACKEND, DL_DEBUG);			for (unsigned int i = 0; i < childcount; ++i) {				SEXP current_childname = install(CHAR(STRING_ELT(childnames_s, i)));				PROTECT (current_childname);				SEXP child = Rf_findVar (current_childname, value);				PROTECT (child);				bool child_misplaced = false;				if (with_namespace) {					/* before R 2.4.0, operator "::" would only work on true namespaces, not on package names (operator "::" work, if there is a namespace, and that namespace has the symbol in it)					TODO remove once we depend on R >= 2.4.0 */#					ifndef R_2_5					if (Rf_isNull (namespace_envir)) {						child_misplaced = true;					} else {						SEXP dummy = Rf_findVarInFrame (namespace_envir, current_childname);						if (Rf_isNull (dummy) || (dummy == R_UnboundValue)) child_misplaced = true;					}					/* for R 2.4.0 or greater: operator "::" works if package has no namespace at all, or has a namespace with the symbol in it */#					else					if (!Rf_isNull (namespace_envir)) {						SEXP dummy = Rf_findVarInFrame (namespace_envir, current_childname);						if (Rf_isNull (dummy) || (dummy == R_UnboundValue)) child_misplaced = true;					}#					endif				}				getStructureSafe (child, childnames[i], child_misplaced, children[i]);				UNPROTECT (2); /* childname, child */			}		} else if (do_cont) {			RK_DO (qDebug ("recurse into list %s", name.toLatin1().data ()), RBACKEND, DL_DEBUG);			// fewer elements than names() can happen, although I doubt it is supposed to happen.			// see http://sourceforge.net/tracker/?func=detail&aid=3002439&group_id=50231&atid=459007			bool may_be_special = Rf_length (value) < childcount;			if (Rf_isList (value) && (!may_be_special)) {		// old style list				for (unsigned int i = 0; i < childcount; ++i) {					SEXP child = CAR (value);					getStructureSafe (child, childnames[i], false, children[i]);					CDR (value);				}			} else if (Rf_isNewList (value) && (!may_be_special)) {				// new style list				for (unsigned int i = 0; i < childcount; ++i) {					SEXP child = VECTOR_ELT(value, i);					getStructureSafe (child, childnames[i], false, children[i]);				}			} else {		// probably an S4 object disguised as a list				SEXP index = Rf_allocVector(INTSXP, 1);				PROTECT (index);				for (unsigned int i = 0; i < childcount; ++i) {					INTEGER (index)[0] = (i + 1);					SEXP child = callSimpleFun2 (double_brackets_fun, value, index, R_BaseEnv);					getStructureSafe (child, childnames[i], false, children[i]);				}				UNPROTECT (1); /* index */			}		}		UNPROTECT (1);   /* childnames_s */		delete [] childnames;	} else if (is_function) {		RData *funargsdata = new RData;		funargsdata->datatype = RData::StringVector;		funargsdata->length = 0;		funargsdata->data = 0;		res[5] = funargsdata;		RData *funargvaluesdata = new RData;		funargvaluesdata->datatype = RData::StringVector;		funargvaluesdata->length = 0;		funargvaluesdata->data = 0;		res[6] = funargvaluesdata;// TODO: this is still the major bottleneck, but no idea, how to improve on this		SEXP formals_s = callSimpleFun (get_formals_fun, value, R_GlobalEnv);		PROTECT (formals_s);		// the default values		funargvaluesdata->data = SEXPToStringList (formals_s, &(funargvaluesdata->length));		// the argument names		SEXP names_s = getAttrib (formals_s, R_NamesSymbol);		PROTECT (names_s);		funargsdata->data = SEXPToStringList (names_s, &(funargsdata->length));		UNPROTECT (2); /* names_s, formals_s */	}	UNPROTECT (1); /* value */}
开发者ID:svn2github,项目名称:rkward-svn-mirror,代码行数:101,


示例16: erts_ioq_iolist_vec_len

/*  * Returns 0 if successful and a non-zero value otherwise. * * Return values through pointers: *    *vsize      - SysIOVec size needed for a writev *    *csize      - Number of bytes not in binary (in the common binary) *    *pvsize     - SysIOVec size needed if packing small binaries *    *pcsize     - Number of bytes in the common binary if packing *    *total_size - Total size of iolist in bytes */interts_ioq_iolist_vec_len(Eterm obj, int* vsize, Uint* csize,                        Uint* pvsize, Uint* pcsize,                        Uint* total_size, Uint blimit){    DECLARE_ESTACK(s);    Eterm* objp;    Uint v_size = 0;    Uint c_size = 0;    Uint b_size = 0;    Uint in_clist = 0;    Uint p_v_size = 0;    Uint p_c_size = 0;    Uint p_in_clist = 0;    Uint total;    goto L_jump_start;  /* avoid a push */    while (!ESTACK_ISEMPTY(s)) {	obj = ESTACK_POP(s);    L_jump_start:	if (is_list(obj)) {	L_iter_list:	    objp = list_val(obj);	    obj = CAR(objp);	    if (is_byte(obj)) {		c_size++;		if (c_size == 0) {		    goto L_overflow_error;		}		if (!in_clist) {		    in_clist = 1;		    v_size++;		}		p_c_size++;		if (!p_in_clist) {		    p_in_clist = 1;		    p_v_size++;		}	    }	    else if (is_binary(obj)) {                IO_LIST_VEC_COUNT(obj);	    }	    else if (is_list(obj)) {		ESTACK_PUSH(s, CDR(objp));		goto L_iter_list;   /* on head */	    }	    else if (!is_nil(obj)) {		goto L_type_error;	    }	    obj = CDR(objp);	    if (is_list(obj))		goto L_iter_list;   /* on tail */	    else if (is_binary(obj)) {  /* binary tail is OK */		IO_LIST_VEC_COUNT(obj);	    }	    else if (!is_nil(obj)) {		goto L_type_error;	    }	}	else if (is_binary(obj)) {	    IO_LIST_VEC_COUNT(obj);	}	else if (!is_nil(obj)) {	    goto L_type_error;	}    }    total = c_size + b_size;    if (total < c_size) {	goto L_overflow_error;    }    *total_size = total;    DESTROY_ESTACK(s);    *vsize = v_size;    *csize = c_size;    *pvsize = p_v_size;    *pcsize = p_c_size;    return 0; L_type_error: L_overflow_error:    DESTROY_ESTACK(s);    return 1;}
开发者ID:crownedgrouse,项目名称:otp,代码行数:98,


示例17: BGl_expandzd2dozd2zz__expander_doz00

/* expand-do */	BGL_EXPORTED_DEF obj_t BGl_expandzd2dozd2zz__expander_doz00(obj_t		BgL_expz00_1, obj_t BgL_ez00_2)	{		AN_OBJECT;		{	/* Eval/expddo.scm 57 */			{				obj_t BgL_bindingsz00_770;				obj_t BgL_endz00_771;				obj_t BgL_commandz00_772;				if (PAIRP(BgL_expz00_1))					{	/* Eval/expddo.scm 58 */						obj_t BgL_cdrzd21399zd2_777;						BgL_cdrzd21399zd2_777 = CDR(BgL_expz00_1);						if (PAIRP(BgL_cdrzd21399zd2_777))							{	/* Eval/expddo.scm 58 */								obj_t BgL_cdrzd21404zd2_779;								BgL_cdrzd21404zd2_779 = CDR(BgL_cdrzd21399zd2_777);								if (PAIRP(BgL_cdrzd21404zd2_779))									{	/* Eval/expddo.scm 58 */										BgL_bindingsz00_770 = CAR(BgL_cdrzd21399zd2_777);										BgL_endz00_771 = CAR(BgL_cdrzd21404zd2_779);										BgL_commandz00_772 = CDR(BgL_cdrzd21404zd2_779);										{	/* Eval/expddo.scm 60 */											obj_t BgL_varsz00_785;											BgL_varsz00_785 = BNIL;											{	/* Eval/expddo.scm 61 */												obj_t BgL_initsz00_786;												BgL_initsz00_786 = BNIL;												{	/* Eval/expddo.scm 62 */													obj_t BgL_stepsz00_787;													BgL_stepsz00_787 = BNIL;													{	/* Eval/expddo.scm 63 */														obj_t BgL_loopz00_788;														BgL_loopz00_788 =															BGl_gensymz00zz__r4_symbols_6_4z00															(BGl_string2221z00zz__expander_doz00);														{	/* Eval/expddo.scm 64 */															obj_t BgL_testz00_789;															if (PAIRP(BgL_endz00_771))																{	/* Eval/expddo.scm 65 */																	BgL_testz00_789 = CAR(BgL_endz00_771);																}															else																{	/* Eval/expddo.scm 65 */																	BgL_testz00_789 =																		BGl_errorz00zz__errorz00																		(BGl_string2222z00zz__expander_doz00,																		BGl_string2223z00zz__expander_doz00,																		BgL_expz00_1);																}															{	/* Eval/expddo.scm 65 */																obj_t BgL_endingz00_790;																if (NULLP(CDR(BgL_endz00_771)))																	{	/* Eval/expddo.scm 69 */																		obj_t BgL_list1957z00_850;																		BgL_list1957z00_850 =																			MAKE_PAIR(BFALSE, BNIL);																		BgL_endingz00_790 = BgL_list1957z00_850;																	}																else																	{	/* Eval/expddo.scm 68 */																		BgL_endingz00_790 = CDR(BgL_endz00_771);																	}																{	/* Eval/expddo.scm 71 */																	{	/* Eval/expddo.scm 72 */																		obj_t BgL_g1850z00_792;																		BgL_g1850z00_792 =																			bgl_reverse(BgL_bindingsz00_770);																		{																			obj_t BgL_l1848z00_794;																			BgL_l1848z00_794 = BgL_g1850z00_792;																		BgL_zc3anonymousza31899ze3z83_795:																			if (PAIRP(BgL_l1848z00_794))																				{	/* Eval/expddo.scm 85 */																					{	/* Eval/expddo.scm 74 */																						obj_t BgL_varzd2initzd2stepz00_797;																						BgL_varzd2initzd2stepz00_797 =																							CAR(BgL_l1848z00_794);																						{	/* Eval/expddo.scm 74 */																							bool_t BgL_testz00_1556;																							if (																								(bgl_list_length//.........这里部分代码省略.........
开发者ID:mbrock,项目名称:bigloo-llvm,代码行数:101,


示例18: iol2v_append_byte_seq

static int iol2v_append_byte_seq(iol2v_state_t *state, Eterm seq_start, Eterm *seq_end) {    Eterm lookahead, iterator;    Uint observed_bits;    SWord seq_length;    char *acc_data;    lookahead = seq_start;    seq_length = 0;    ASSERT(state->bytereds_available > state->bytereds_spent);    while (is_list(lookahead)) {        Eterm *cell = list_val(lookahead);        if (!is_small(CAR(cell))) {            break;        }        if (seq_length * 2 >= (state->bytereds_available - state->bytereds_spent)) {            break;        }        lookahead = CDR(cell);        seq_length += 1;    }    ASSERT(seq_length >= 1);    iol2v_expand_acc(state, seq_length);    /* Bump a few extra reductions to account for list traversal. */    state->bytereds_spent += seq_length;    acc_data = &(state->acc)->orig_bytes[state->acc_size];    state->acc_size += seq_length;    iterator = seq_start;    observed_bits = 0;    while (iterator != lookahead) {        Eterm *cell;        Uint byte;        cell = list_val(iterator);        iterator = CDR(cell);        byte = unsigned_val(CAR(cell));        observed_bits |= byte;        ASSERT(acc_data < &(state->acc)->orig_bytes[state->acc_size]);        *(acc_data++) = byte;    }    if (observed_bits > UCHAR_MAX) {        return 0;    }    ASSERT(acc_data == &(state->acc)->orig_bytes[state->acc_size]);    *seq_end = iterator;    return 1;}
开发者ID:crownedgrouse,项目名称:otp,代码行数:62,


示例19: do_sprintf

SEXP attribute_hidden do_sprintf(SEXP call, SEXP op, SEXP args, SEXP env){    int i, nargs, cnt, v, thislen, nfmt, nprotect = 0;    /* fmt2 is a copy of fmt with '*' expanded.       bit will hold numeric formats and %<w>s, so be quite small. */    char fmt[MAXLINE+1], fmt2[MAXLINE+10], *fmtp, bit[MAXLINE+1],	*outputString;    const char *formatString;    size_t n, cur, chunk;    SEXP format, _this, a[MAXNARGS], ans /* -Wall */ = R_NilValue;    int ns, maxlen, lens[MAXNARGS], nthis, nstar, star_arg = 0;    static R_StringBuffer outbuff = {NULL, 0, MAXELTSIZE};    Rboolean has_star, use_UTF8;#define _my_sprintf(_X_)						/    {									/	int nc = snprintf(bit, MAXLINE+1, fmtp, _X_);			/	if (nc > MAXLINE)						/	    error(_("required resulting string length %d is greater than maximal %d"), /		  nc, MAXLINE);						/    }    nargs = length(args);    /* grab the format string */    format = CAR(args);    if (!isString(format))	error(_("'fmt' is not a character vector"));    nfmt = length(format);    if (nfmt == 0) return allocVector(STRSXP, 0);    args = CDR(args); nargs--;    if(nargs >= MAXNARGS)	error(_("only %d arguments are allowed"), MAXNARGS);    /* record the args for possible coercion and later re-ordering */    for(i = 0; i < nargs; i++, args = CDR(args)) {	SEXPTYPE t_ai;	a[i] = CAR(args);	if((t_ai = TYPEOF(a[i])) == LANGSXP || t_ai == SYMSXP) /* << maybe add more .. */	    error(_("invalid type of argument[%d]: '%s'"),		  i+1, CHAR(type2str(t_ai)));	lens[i] = length(a[i]);	if(lens[i] == 0) return allocVector(STRSXP, 0);    }#define CHECK_maxlen							/    maxlen = nfmt;							/    for(i = 0; i < nargs; i++)						/	if(maxlen < lens[i]) maxlen = lens[i];				/    if(maxlen % nfmt)							/	error(_("arguments cannot be recycled to the same length"));	/    for(i = 0; i < nargs; i++)						/	if(maxlen % lens[i])						/	    error(_("arguments cannot be recycled to the same length"))    CHECK_maxlen;    outputString = R_AllocStringBuffer(0, &outbuff);    /* We do the format analysis a row at a time */    for(ns = 0; ns < maxlen; ns++) {	outputString[0] = '/0';	use_UTF8 = getCharCE(STRING_ELT(format, ns % nfmt)) == CE_UTF8;	if (!use_UTF8) {	    for(i = 0; i < nargs; i++) {		if (!isString(a[i])) continue;		if (getCharCE(STRING_ELT(a[i], ns % lens[i])) == CE_UTF8) {		    use_UTF8 = TRUE; break;		}	    }	}	formatString = TRANSLATE_CHAR(format, ns % nfmt);	n = strlen(formatString);	if (n > MAXLINE)	    error(_("'fmt' length exceeds maximal format length %d"), MAXLINE);	/* process the format string */	for (cur = 0, cnt = 0; cur < n; cur += chunk) {	    const char *curFormat = formatString + cur, *ss;	    char *starc;	    ss = NULL;	    if (formatString[cur] == '%') { /* handle special format command */		if (cur < n - 1 && formatString[cur + 1] == '%') {		    /* take care of %% in the format */		    chunk = 2;		    strcpy(bit, "%");		}		else {		    /* recognise selected types from Table B-1 of K&R */		    /* NB: we deal with "%%" in branch above. */		    /* This is MBCS-OK, as we are in a format spec */		    chunk = strcspn(curFormat + 1, "diosfeEgGxXaA") + 2;		    if (cur + chunk > n)			error(_("unrecognised format specification '%s'"), curFormat);		    strncpy(fmt, curFormat, chunk);		    fmt[chunk] = '/0';		    nthis = -1;//.........这里部分代码省略.........
开发者ID:SvenDowideit,项目名称:clearlinux,代码行数:101,


示例20: do_getGraphicsEvent

SEXPdo_getGraphicsEvent(SEXP call, SEXP op, SEXP args, SEXP env){    SEXP result = R_NilValue, prompt;    pDevDesc dd;    pGEDevDesc gd;    int i, count=0, devNum;    checkArity(op, args);        prompt = CAR(args);    if (!isString(prompt) || !length(prompt)) error(_("invalid prompt"));    /* NB:  cleanup of event handlers must be done by driver in onExit handler */        if (!NoDevices()) {        /* Initialize all devices */        i = 1;	devNum = curDevice();	while (i++ < NumDevices()) {	    gd = GEgetDevice(devNum);	    dd = gd->dev;	    if (dd->gettingEvent)	    	error(_("recursive use of 'getGraphicsEvent' not supported"));	    if (dd->eventEnv != R_NilValue) {	        if (dd->eventHelper) dd->eventHelper(dd, 1);	        dd->gettingEvent = TRUE;	        defineVar(install("result"), R_NilValue, dd->eventEnv);	        count++;	    }	    devNum = nextDevice(devNum);	}	if (!count)	    error(_("no graphics event handlers set"));	    	Rprintf("%s/n", CHAR(asChar(prompt)));	R_FlushConsole();	/* Poll them */	while (result == R_NilValue) {	    R_ProcessEvents();	    R_CheckUserInterrupt();	    i = 1;	    devNum = curDevice();	    while (i++ < NumDevices()) {		gd = GEgetDevice(devNum);		dd = gd->dev;		if (dd->eventEnv != R_NilValue) {		    if (dd->eventHelper) dd->eventHelper(dd, 2);		    result = findVar(install("result"), dd->eventEnv);		    if (result != R_NilValue && result != R_UnboundValue) {		        break;		    }		}		devNum = nextDevice(devNum);	    }	}	/* clean up */        i = 1;	devNum = curDevice();	while (i++ < NumDevices()) {	    gd = GEgetDevice(devNum);	    dd = gd->dev;	    if (dd->eventEnv != R_NilValue) {	        if (dd->eventHelper) dd->eventHelper(dd, 0);	        dd->gettingEvent = FALSE;	    }	    devNum = nextDevice(devNum);	}	    }    return(result);}
开发者ID:csilles,项目名称:cxxr,代码行数:73,


示例21: ocamlr_inspect_listsxp_carval

/**  Returns the head element of a pairlist.  *  *  @param sexp An R pairlist.  *  @return The head element of the R pairlist.  */CAMLprim value ocamlr_inspect_listsxp_carval (value sexp) {  return(Val_sexp(CAR(Sexp_val(sexp))));}
开发者ID:agarwal,项目名称:OCaml-R,代码行数:8,


示例22: KlwGetBinding

LPEXP KlwGetBinding(ATOMID idVarName){    varctx ctx = varstack ? (varctx) GLOBALLOCK(varstack->hCtx) : NULL;    while (ctx) {        GLOBALHANDLE hPrev = ctx->hPrev;        LPEXP lpBinding = NULL;                if (ctx->idCode && ctx->idCode != srclns.idCode ||            ctx->wType && ctx->wType != srclns.wType)        {            GLOBALUNLOCK(ctx->hCtx);            return NULL;        }                if (ctx->idVarList)        {            VARID idVar;            LIST_LOOP loop;                        kpc_init_loop(ctx->idVarList, &loop);                        while (idVar = next(&loop)) {                LPVAR lpVar = (LPVAR) KppGetItem(VAR, idVar);                                if (lpVar)                {                    LISTID idBindings = BINDINGS(lpVar);                    ITEMID idValue = VARVALUE(lpVar);                    ATOMID idName = VARNAME(lpVar);                    WORD wFlags = VARFLAGS(lpVar);                                    KppReleaseItem(VAR, idVar);                    if (idName == idVarName)                    {                        if (wFlags & EXPBOUND)                        {                            EXPFLAGS(&resexp) = wFlags;                            CAR(&resexp) = idValue;                            lpBinding = &resexp;                        }                        else if (idBindings)                        {                            WORD wIndex = KppGetElem(idBindings, 1);                                                    if (!wIndex)                                break;                            lpBinding = ctx->lpBody + wIndex - 1;                        }                        break;                    }                }            }        }                GLOBALUNLOCK(ctx->hCtx);                    if (lpBinding)            return lpBinding;                    if (hPrev)            ctx = (varctx) GLOBALLOCK(hPrev);        else            return NULL;    }        return NULL;}
开发者ID:thearttrooper,项目名称:KappaPC,代码行数:68,


示例23: copy_struct

Eterm copy_struct(Eterm obj, Uint sz, Eterm** hpp, ErlOffHeap* off_heap)#endif{    char* hstart;    Uint hsize;    Eterm* htop;    Eterm* hbot;    Eterm* hp;    Eterm* objp;    Eterm* tp;    Eterm  res;    Eterm  elem;    Eterm* tailp;    Eterm* argp;    Eterm* const_tuple;    Eterm hdr;    int i;#ifdef DEBUG    Eterm org_obj = obj;    Uint org_sz = sz;#endif    if (IS_CONST(obj))	return obj;    DTRACE1(copy_struct, (int32_t)sz);    hp = htop = *hpp;    hbot   = htop + sz;    hstart = (char *)htop;    hsize = (char*) hbot - hstart;    const_tuple = 0;    /* Copy the object onto the heap */    switch (primary_tag(obj)) {    case TAG_PRIMARY_LIST:	argp = &res;	objp = list_val_rel(obj,src_base);	goto L_copy_list;    case TAG_PRIMARY_BOXED: argp = &res; goto L_copy_boxed;    default:	erl_exit(ERTS_ABORT_EXIT,		 "%s, line %d: Internal error in copy_struct: 0x%08x/n",		 __FILE__, __LINE__,obj);    } L_copy:    while (hp != htop) {	obj = *hp;	switch (primary_tag(obj)) {	case TAG_PRIMARY_IMMED1:	    hp++;	    break;	case TAG_PRIMARY_LIST:	    objp = list_val_rel(obj,src_base);	#if !HALFWORD_HEAP || defined(DEBUG)	    if (in_area(objp,hstart,hsize)) {		ASSERT(!HALFWORD_HEAP);		hp++;		break;	    }	#endif	    argp = hp++;	    /* Fall through */	L_copy_list:	    tailp = argp;	    for (;;) {		tp = tailp;		elem = CAR(objp);		if (IS_CONST(elem)) {		    hbot -= 2;		    CAR(hbot) = elem;		    tailp = &CDR(hbot);		}		else {		    CAR(htop) = elem;		#if HALFWORD_HEAP		    CDR(htop) = CDR(objp);		    *tailp = make_list_rel(htop,dst_base);		    htop += 2;		    goto L_copy;		#else		    tailp = &CDR(htop);		    htop += 2;		#endif		}		ASSERT(!HALFWORD_HEAP || tp < hp || tp >= hbot);		*tp = make_list_rel(tailp - 1, dst_base);		obj = CDR(objp);		if (!is_list(obj)) {		    break;		}		objp = list_val_rel(obj,src_base);	    }	    switch (primary_tag(obj)) {	    case TAG_PRIMARY_IMMED1: *tailp = obj; goto L_copy;	    case TAG_PRIMARY_BOXED: argp = tailp; goto L_copy_boxed;	    default://.........这里部分代码省略.........
开发者ID:Airon2014,项目名称:otp,代码行数:101,


示例24: KppErrorLH

/********************************************************** *	 start of g_error_ops library function		  * **********************************************************/short W_EXPORT KppErrorLH (LPEXP lpExp){    ITEMID idfName;    short sResult;    WORD i;    LPEXP lpExp2=NULL;        idfName = CAR(lpExp);    KppGetAtomName(idfName, (LPSTR)stName, SIZE-1);    switch(stName[0])	{	case 'C':	/* CatchError */	    if (CDR(lpExp) == 0)		return RegisterKappaMessage(				IDE_MISSINGARGS, idfName,NULLID,NULLID);	    lpExp += CDR(lpExp);        if (CDR(lpExp) != 0)	/* error handling expression */        {            lpExp2 = lpExp + CDR(lpExp);            if (CDR(lpExp2) != 0)                return RegisterKappaMessage(                    IDE_TOOMANYARGS, idfName,NULLID,NULLID);        }        kal_catch_level++;        i = Kpp_EvalArgWithList(lpExp);        kal_catch_level--;        if (i) return i; 	    /* Clear the error stack only to the point where of lpExp */	    KppClearPartialTraceStack (lpExp, FALSE);		    /* AN ERROR HAS OCCURED */	    if (lpExp2 == NULL)  /* No error handling expression */            KappaReturnAtom(lpIDs->idNull);	    return Kpp_EvalArgWithList(lpExp2);	 case 'P':	/* PostError */	    *szMsgBuffer = '/0';        if (CDR(lpExp) != 0)	/* Message Is Passed */        {            lpExp += CDR (lpExp);                        sResult = KppAppendArgsAsString (szMsgBuffer,                RET_BUFFER_LEN -1, CAR(lpExp), &lpExp);                        if (sResult == ERROR) KappaReturnError;        } /* Message Is Passed */		RegisterKappaMessage(IDE_ERRORUSER,            KppAddAtom (szMsgBuffer), NULLID, NULLID);        KappaReturnError;    } /* switch */    KappaReturnError;}
开发者ID:thearttrooper,项目名称:KappaPC,代码行数:65,


示例25: Instruction

Elem & Machine::execute(std::ostream &out){    Instruction *command;    std::shared_ptr<Elem> command_ptr;    Elem *ADD(new Instruction("ADD"));    Elem *MUL(new Instruction("MUL"));    Elem *SUB(new Instruction("SUB"));    Elem *DIV(new Instruction("DIV"));    Elem *REM(new Instruction("REM"));    Elem *EQ(new Instruction("EQ"));    Elem *LEQ(new Instruction("LEQ"));    Elem *SEL(new Instruction("SEL"));    Elem *LD(new Instruction("LD"));    Elem *LDC(new Instruction("LDC"));    Elem *LDF(new Instruction("LDF"));    Elem *CAR(new Instruction("CAR"));    Elem *CDR(new Instruction("CDR"));    Elem *CONS(new Instruction("CONS"));    Elem *NIL(new Instruction("NIL"));    Elem *DUM(new Instruction("DUM"));    Elem *AP(new Instruction("AP"));    Elem *RAP(new Instruction("RAP"));    Elem *RTN(new Instruction("RTN"));    Elem *JOIN(new Instruction("JOIN"));    Elem *STOP(new Instruction("STOP"));    while (!C->empty())    {        if (out != 0x0)        {            print_S(out);            print_E(out);            print_C(out);            out << std::endl;        }        command_ptr = C->pop_ret();        command = dynamic_cast<Instruction*>(&*command_ptr);        if (command == nullptr) throw Exception("Execute", "FatalError");        if (*command == *ADD)       this->ADD();        else if (*command == *MUL)  this->MUL();        else if (*command == *SUB)  this->SUB();        else if (*command == *DIV)  this->DIV();        else if (*command == *REM)  this->REM();        else if (*command == *EQ)   this->EQ();        else if (*command == *LEQ)  this->LEQ();        else if (*command == *SEL)  this->SEL();        else if (*command == *LD)   this->LD();        else if (*command == *LDC)  this->LDC();        else if (*command == *LDF)  this->LDF();        else if (*command == *CAR)  this->CAR();        else if (*command == *CDR)  this->CDR();        else if (*command == *CONS) this->CONS();        else if (*command == *NIL)  this->NIL();        else if (*command == *DUM)  this->DUM();        else if (*command == *AP)   this->AP();        else if (*command == *RAP)  this->RAP();        else if (*command == *RTN)  this->RTN();        else if (*command == *JOIN)  this->JOIN();        else if (*command == *STOP) { return (*(this->STOP()));}        else throw Exception("Execute", "Expected 'instruction' but greeted constant.");    }    throw Exception("Execute", "FatalError");}
开发者ID:DeveloperHacker,项目名称:SECD,代码行数:67,


示例26: do_edit

SEXP attribute_hidden do_edit(SEXP call, SEXP op, SEXP args, SEXP rho){    int   i, rc;    ParseStatus status;    SEXP  x, fn, envir, ed, src, srcfile, Rfn;    char *filename, *editcmd;    const char *cmd;    const void *vmaxsave;    FILE *fp;#ifdef Win32    SEXP ti;    char *title;#endif	checkArity(op, args);    vmaxsave = vmaxget();    x = CAR(args); args = CDR(args);    if (TYPEOF(x) == CLOSXP) envir = CLOENV(x);    else envir = R_NilValue;    PROTECT(envir);    fn = CAR(args); args = CDR(args);    if (!isString(fn))	error(_("invalid argument to edit()"));    if (LENGTH(STRING_ELT(fn, 0)) > 0) {	const char *ss = translateChar(STRING_ELT(fn, 0));	filename = R_alloc(strlen(ss), sizeof(char));	strcpy(filename, ss);    }    else filename = DefaultFileName;    if (x != R_NilValue) {	if((fp=R_fopen(R_ExpandFileName(filename), "w")) == NULL)	    errorcall(call, _("unable to open file"));	if (LENGTH(STRING_ELT(fn, 0)) == 0) EdFileUsed++;	if (TYPEOF(x) != CLOSXP || isNull(src = getAttrib(x, R_SourceSymbol)))	    src = deparse1(x, 0, FORSOURCING); /* deparse for sourcing, not for display */	for (i = 0; i < LENGTH(src); i++)	    fprintf(fp, "%s/n", translateChar(STRING_ELT(src, i)));	fclose(fp);    }#ifdef Win32    ti = CAR(args);#endif    args = CDR(args);    ed = CAR(args);    if (!isString(ed)) errorcall(call, _("argument 'editor' type not valid"));    cmd = translateChar(STRING_ELT(ed, 0));    if (strlen(cmd) == 0) errorcall(call, _("argument 'editor' is not set"));    editcmd = R_alloc(strlen(cmd) + strlen(filename) + 6, sizeof(char));#ifdef Win32    if (!strcmp(cmd,"internal")) {	if (!isString(ti))	    error(_("'title' must be a string"));	if (LENGTH(STRING_ELT(ti, 0)) > 0) {	    title = R_alloc(strlen(CHAR(STRING_ELT(ti, 0)))+1, sizeof(char));	    strcpy(title, CHAR(STRING_ELT(ti, 0)));	} else {	    title = R_alloc(strlen(filename)+1, sizeof(char));	    strcpy(title, filename);	}	Rgui_Edit(filename, CE_NATIVE, title, 1);    }    else {	/* Quote path if necessary */	if(cmd[0] != '"' && Rf_strchr(cmd, ' '))	    sprintf(editcmd, "/"%s/" /"%s/"", cmd, filename);	else	    sprintf(editcmd, "%s /"%s/"", cmd, filename);	rc = runcmd(editcmd, CE_NATIVE, 1, 1, NULL, NULL, NULL);	if (rc == NOLAUNCH)	    errorcall(call, _("unable to run editor '%s'"), cmd);	if (rc != 0)	    warningcall(call, _("editor ran but returned error status"));    }#else    if (ptr_R_EditFile)	rc = ptr_R_EditFile(filename);    else {	sprintf(editcmd, "%s %s", cmd, filename);	rc = R_system(editcmd);    }    if (rc != 0)	errorcall(call, _("problem with running editor %s"), cmd);#endif    if (asLogical(GetOption1(install("keep.source")))) {	PROTECT(Rfn = findFun(install("readLines"), R_BaseEnv));	PROTECT(src = lang2(Rfn, ScalarString(mkChar(R_ExpandFileName(filename)))));	PROTECT(src = eval(src, R_BaseEnv));	PROTECT(Rfn = findFun(install("srcfilecopy"), R_BaseEnv));	PROTECT(srcfile = lang3(Rfn, ScalarString(mkChar("<tmp>")), src));	srcfile = eval(srcfile, R_BaseEnv);	UNPROTECT(5);    } else    	srcfile = R_NilValue;    PROTECT(srcfile);//.........这里部分代码省略.........
开发者ID:SensePlatform,项目名称:R,代码行数:101,


示例27: R_subset3_dflt

/* used in eval.c */SEXP attribute_hidden R_subset3_dflt(SEXP x, SEXP input, SEXP call){    SEXP y, nlist;    size_t slen;    PROTECT(input);    PROTECT(x);    /* Optimisation to prevent repeated recalculation */    slen = strlen(translateChar(input));     /* The mechanism to allow a class extending "environment" */    if( IS_S4_OBJECT(x) && TYPEOF(x) == S4SXP ){        x = R_getS4DataSlot(x, ANYSXP);	if(x == R_NilValue)	    errorcall(call, "$ operator not defined for this S4 class");    }    UNPROTECT(1); /* x */    PROTECT(x);    /* If this is not a list object we return NULL. */    if (isPairList(x)) {	SEXP xmatch = R_NilValue;	int havematch;	UNPROTECT(2); /* input, x */	havematch = 0;	for (y = x ; y != R_NilValue ; y = CDR(y)) {	    switch(pstrmatch(TAG(y), input, slen)) {	    case EXACT_MATCH:		y = CAR(y);		if (NAMED(x) > NAMED(y)) SET_NAMED(y, NAMED(x));		return y;	    case PARTIAL_MATCH:		havematch++;		xmatch = y;		break;	    case NO_MATCH:		break;	    }	}	if (havematch == 1) { /* unique partial match */	    if(R_warn_partial_match_dollar) {		const char *st = "";		SEXP target = TAG(xmatch);		switch (TYPEOF(target)) {		case SYMSXP:		    st = CHAR(PRINTNAME(target));		    break;		case CHARSXP:		    st = translateChar(target);		    break;		}		warningcall(call, _("partial match of '%s' to '%s'"),			    translateChar(input), st);	    }	    y = CAR(xmatch);	    if (NAMED(x) > NAMED(y)) SET_NAMED(y, NAMED(x));	    return y;	}	return R_NilValue;    }    else if (isVectorList(x)) {	R_xlen_t i, n, imatch = -1;	int havematch;	nlist = getAttrib(x, R_NamesSymbol);	UNPROTECT(2); /* input, x */	n = xlength(nlist);	havematch = 0;	for (i = 0 ; i < n ; i = i + 1) {	    switch(pstrmatch(STRING_ELT(nlist, i), input, slen)) {	    case EXACT_MATCH:		y = VECTOR_ELT(x, i);		if (NAMED(x) > NAMED(y))		    SET_NAMED(y, NAMED(x));		return y;	    case PARTIAL_MATCH:		havematch++;		if (havematch == 1) {		    /* partial matches can cause aliasing in eval.c:evalseq		       This is overkill, but alternative ways to prevent		       the aliasing appear to be even worse */		    y = VECTOR_ELT(x,i);		    SET_NAMED(y,2);		    SET_VECTOR_ELT(x,i,y);		}		imatch = i;		break;	    case NO_MATCH:		break;	    }	}	if(havematch == 1) { /* unique partial match */	    if(R_warn_partial_match_dollar) {		const char *st = "";		SEXP target = STRING_ELT(nlist, imatch);		switch (TYPEOF(target)) {		case SYMSXP:		    st = CHAR(PRINTNAME(target));		    break;//.........这里部分代码省略.........
开发者ID:Maxsl,项目名称:r-source,代码行数:101,


示例28: BGl_readzd2accesszd2filesz00zzread_accessz00

/* read-access-files */	BGL_EXPORTED_DEF obj_t BGl_readzd2accesszd2filesz00zzread_accessz00()	{		AN_OBJECT;		{	/* Read/access.scm 26 */			if (NULLP(BGl_za2accesszd2filesza2zd2zzengine_paramz00))				{	/* Read/access.scm 30 */					if (fexists(BSTRING_TO_STRING							(BGl_za2accesszd2filezd2defaultza2z00zzengine_paramz00)))						{	/* Read/access.scm 31 */							return								BGl_innerzd2readzd2accesszd2filezd2zzread_accessz00								(BGl_za2accesszd2filezd2defaultza2z00zzengine_paramz00);						}					else						{	/* Read/access.scm 31 */							return BFALSE;						}				}			else				{					obj_t BgL_l1508z00_90;					{	/* Read/access.scm 33 */						bool_t BgL_auxz00_129;						BgL_l1508z00_90 = BGl_za2accesszd2filesza2zd2zzengine_paramz00;					BgL_zc3anonymousza31512ze3z83_91:						if (PAIRP(BgL_l1508z00_90))							{	/* Read/access.scm 33 */								{	/* Read/access.scm 34 */									obj_t BgL_fz00_93;									BgL_fz00_93 = CAR(BgL_l1508z00_90);									if (fexists(BSTRING_TO_STRING(BgL_fz00_93)))										{	/* Read/access.scm 34 */											BGl_innerzd2readzd2accesszd2filezd2zzread_accessz00												(BgL_fz00_93);										}									else										{	/* Read/access.scm 34 */											BGl_userzd2errorzd2zztools_errorz00												(BGl_string1524z00zzread_accessz00,												BGl_string1525z00zzread_accessz00, BgL_fz00_93, BNIL);										}								}								{									obj_t BgL_l1508z00_138;									BgL_l1508z00_138 = CDR(BgL_l1508z00_90);									BgL_l1508z00_90 = BgL_l1508z00_138;									goto BgL_zc3anonymousza31512ze3z83_91;								}							}						else							{	/* Read/access.scm 33 */								BgL_auxz00_129 = ((bool_t) 1);							}						return BBOOL(BgL_auxz00_129);					}				}		}	}
开发者ID:8l,项目名称:bigloo-llvm,代码行数:63,


示例29: ArraySubset

static SEXP ArraySubset(SEXP x, SEXP s, SEXP call, int drop){    int k, mode;    SEXP dimnames, dimnamesnames, p, q, r, result, xdims;    const void *vmaxsave = vmaxget();    mode = TYPEOF(x);    xdims = getAttrib(x, R_DimSymbol);    k = length(xdims);    /* k is now the number of dims */    int **subs = (int**)R_alloc(k, sizeof(int*));    int *indx = (int*)R_alloc(k, sizeof(int));    int *bound = (int*)R_alloc(k, sizeof(int));    R_xlen_t *offset = (R_xlen_t*)R_alloc(k, sizeof(R_xlen_t));    /* Construct a vector to contain the returned values. */    /* Store its extents. */    R_xlen_t n = 1;    r = s;    for (int i = 0; i < k; i++) {	SETCAR(r, int_arraySubscript(i, CAR(r), xdims, x, call));	bound[i] = LENGTH(CAR(r));	n *= bound[i];	r = CDR(r);    }    PROTECT(result = allocVector(mode, n));    r = s;    for (int i = 0; i < k; i++) {	indx[i] = 0;	subs[i] = INTEGER(CAR(r));	r = CDR(r);    }    offset[0] = 1;    for (int i = 1; i < k; i++)	offset[i] = offset[i - 1] * INTEGER(xdims)[i - 1];    /* Transfer the subset elements from "x" to "a". */    for (R_xlen_t i = 0; i < n; i++) {	R_xlen_t ii = 0;	for (int j = 0; j < k; j++) {	    int jj = subs[j][indx[j]];	    if (jj == NA_INTEGER) {		ii = NA_INTEGER;		goto assignLoop;	    }	    if (jj < 1 || jj > INTEGER(xdims)[j])		errorcall(call, R_MSG_subs_o_b);	    ii += (jj - 1) * offset[j];	}      assignLoop:	switch (mode) {	case LGLSXP:	    if (ii != NA_INTEGER)		LOGICAL(result)[i] = LOGICAL(x)[ii];	    else		LOGICAL(result)[i] = NA_LOGICAL;	    break;	case INTSXP:	    if (ii != NA_INTEGER)		INTEGER(result)[i] = INTEGER(x)[ii];	    else		INTEGER(result)[i] = NA_INTEGER;	    break;	case REALSXP:	    if (ii != NA_INTEGER)		REAL(result)[i] = REAL(x)[ii];	    else		REAL(result)[i] = NA_REAL;	    break;	case CPLXSXP:	    if (ii != NA_INTEGER) {		COMPLEX(result)[i] = COMPLEX(x)[ii];	    }	    else {		COMPLEX(result)[i].r = NA_REAL;		COMPLEX(result)[i].i = NA_REAL;	    }	    break;	case STRSXP:	    if (ii != NA_INTEGER)		SET_STRING_ELT(result, i, STRING_ELT(x, ii));	    else		SET_STRING_ELT(result, i, NA_STRING);	    break;	case VECSXP:	    if (ii != NA_INTEGER)		SET_VECTOR_ELT(result, i, VECTOR_ELT_FIX_NAMED(x, ii));	    else		SET_VECTOR_ELT(result, i, R_NilValue);	    break;	case RAWSXP:	    if (ii != NA_INTEGER)		RAW(result)[i] = RAW(x)[ii];	    else		RAW(result)[i] = (Rbyte) 0;	    break;//.........这里部分代码省略.........
开发者ID:Maxsl,项目名称:r-source,代码行数:101,


示例30: main

//.........这里部分代码省略.........	       targetname = newsuffixbase(argv[i],"");	       f = readfile(argv[i]);	       if (debug) {		    char *n = newsuffixbase(argv[i],".out");		    if (NULL == freopen(n,"w", stdout)) {			 fatal("can't open file %s",n);			 }		    put("After parsing:/n");		    pp(f);		    fflush(stdout);		    }	       outfilename = newsuffixbase(argv[i], do_this_cxx ? "-tmp.cc" : "-tmp.c");	       {		    char *n = newsuffixbase(argv[i],".dep.tmp");		    dependfile = fopen(n,"w");		    if (dependfile == NULL) fatal("can't open file %s",n);		    }	       f = chkprogram(f);	       if (debug) {		    char *n = newsuffixbase(argv[i],".log");		    if (NULL == freopen(n,"w", stdout)) {			 fatal("can't open file %s",n);			 }		    pprintl(f);		    }	       {		    node t = global_scope->signature;		    char *n = newsuffixbase(argv[i],".sig.tmp");		    if (NULL == freopen(n,"w", stdout)) {			 fatal("can't open file %s",n);			 }		    printf("-- generated by %s/n/n",progname);		    while (t != NULL) {			 dprint(CAR(t));			 put(";/n");			 t = CDR(t);			 }		    }	       if (stop_after_dep) quit();	       checkfordeferredsymbols();	       if (debug) {		    char *n = newsuffixbase(argv[i],".sym");		    if (NULL == freopen(n,"w", stdout)) {			 fatal("can't open file %s",n);			 }		    printsymboltable();		    printtypelist();		    printstringlist();		    }	       if (n_errors > 0) {		    quit();		    }	       if (TRUE) {		    char *n = newsuffixbase(argv[i],"-exports.h.tmp");		    if (NULL == freopen(n,"w", stdout)) {			 fatal("can't open file %s",n);			 }		    printf("#ifndef %s_included/n",targetname);		    printf("#define %s_included/n",targetname);		    declarationsstrings = reverse(declarationsstrings);		    while (declarationsstrings) {			 node s = unpos(car(declarationsstrings));			 assert(isstrconst(s));			 put_unescape(s->body.string_const.characters);			 put("/n");			 declarationsstrings = cdr(declarationsstrings);
开发者ID:garyfurnish,项目名称:M2,代码行数:67,



注:本文中的CAR函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ CASE函数代码示例
C++ CAP_U函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。