Пример #1
0
cudaMemcpyKind rbcu_memcopy_kind(VALUE sym) {
  ID sym_id = SYM2ID(sym);

  for (size_t index = 0; index < 5; ++index) {
    if (sym_id == rb_intern(Cuda_MemcpyKind[index])) {
      return static_cast<cudaMemcpyKind>(index);
    }
  }

  VALUE str = rb_any_to_s(sym);
  rb_raise(rb_eArgError, "invalid data type symbol (:%s) specified", RSTRING_PTR(str));
}
Пример #2
0
cudaSharedMemConfig rb_cu_shared_mem_from_rbsymbol(VALUE sym) {
  ID sym_id = SYM2ID(sym);

  for (size_t index = 0; index < 9; ++index) {
    if (sym_id == rb_intern(RbcudaSharedMemConfig_enum[index])) {
      return static_cast<cudaSharedMemConfig>(index);
    }
  }

  VALUE str = rb_any_to_s(sym);
  rb_raise(rb_eArgError, "invalid shared memory config symbol (:%s) specified", RSTRING_PTR(str));
}
Пример #3
0
cudaDeviceAttr rb_cudaDeviceAttr_from_rbsymbol(VALUE sym) {
  ID sym_id = SYM2ID(sym);

  for(std::map<char*, size_t>::value_type& entry : RbcudaDeviceAttr_enum) {
    if (sym_id == rb_intern(entry.first)) {
      return static_cast<cudaDeviceAttr>(entry.second);
    }
  }

  VALUE str = rb_any_to_s(sym);
  rb_raise(rb_eArgError, "invalid cuda device attribute symbol (:%s) specified", RSTRING_PTR(str));
}
Пример #4
0
CUfunction_attribute rb_cu_function_attribute_from_rbsymbol(VALUE sym) {
  ID sym_id = SYM2ID(sym);

  for (size_t index = 0; index < 9; ++index) {
    if (sym_id == rb_intern(RbCUfunction_attribute_enum[index])) {
      return static_cast<CUfunction_attribute>(index);
    }
  }

  VALUE str = rb_any_to_s(sym);
  rb_raise(rb_eArgError, "invalid function attribute symbol (:%s) specified", RSTRING_PTR(str));
}
Пример #5
0
CUlimit rb_cu_limit_from_rbsymbol(VALUE sym) {
  ID sym_id = SYM2ID(sym);

  for (size_t index = 0; index < 6; ++index) {
    if (sym_id == rb_intern(RbCUlimit_enum[index])) {
      return static_cast<CUlimit>(index);
    }
  }

  VALUE str = rb_any_to_s(sym);
  rb_raise(rb_eArgError, "invalid Limit type symbol (:%s) specified", RSTRING_PTR(str));
}
Пример #6
0
CUevent_flags rb_cu_event_flags_from_rbsymbol(VALUE sym) {
  ID sym_id = SYM2ID(sym);

  for (size_t index = 0; index < 4; ++index) {
    if (sym_id == rb_intern(RbCUevent_flags_enum[index])) {
      return static_cast<CUevent_flags>(index);
    }
  }

  VALUE str = rb_any_to_s(sym);
  rb_raise(rb_eArgError, "invalid events symbol (:%s) specified", RSTRING_PTR(str));
}
Пример #7
0
CUarray_format rb_cuarray_format_from_rbsymbol(VALUE sym) {
  ID sym_id = SYM2ID(sym);

  for(std::map<char*, size_t>::value_type& entry : RbCUarray_format_enum) {
    if (sym_id == rb_intern(entry.first)) {
      return static_cast<CUarray_format>(entry.second);
    }
  }

  VALUE str = rb_any_to_s(sym);
  rb_raise(rb_eArgError, "invalid CUresult type symbol (:%s) specified", RSTRING_PTR(str));
}
Пример #8
0
CUjitInputType rb_cu_jit_type_from_rbsymbol(VALUE sym) {
  ID sym_id = SYM2ID(sym);

  for (size_t index = 0; index < 6; ++index) {
    if (sym_id == rb_intern(RbCUjitInputType_enum[index])) {
      return static_cast<CUjitInputType>(index);
    }
  }

  VALUE str = rb_any_to_s(sym);
  rb_raise(rb_eArgError, "invalid jit option symbol (:%s) specified", RSTRING_PTR(str));
}
Пример #9
0
CUsharedconfig rb_cu_shared_config_from_rbsymbol(VALUE sym) {
  ID sym_id = SYM2ID(sym);

  for (size_t index = 0; index < 3; ++index) {
    if (sym_id == rb_intern(RbCUsharedconfig_enum[index])) {
      return static_cast<CUsharedconfig>(index);
    }
  }

  VALUE str = rb_any_to_s(sym);
  rb_raise(rb_eArgError, "invalid Shared config name symbol (:%s) specified", RSTRING_PTR(str));
}
Пример #10
0
cudaOutputMode_t rb_cuda_output_from_rbsymbol(VALUE sym) {
  ID sym_id = SYM2ID(sym);

  for(std::map<char*, size_t>::value_type& entry : Cuda_OutputMode) {
    if (sym_id == rb_intern(entry.first)) {
      return static_cast<cudaOutputMode_t>(entry.second);
    }
  }

  VALUE str = rb_any_to_s(sym);
  rb_raise(rb_eArgError, "invalid matrix type symbol (:%s) specified", RSTRING_PTR(str));
}
Пример #11
0
cudaFuncCache rb_cu_function_cache_from_rbsymbol(VALUE sym) {
  ID sym_id = SYM2ID(sym);

  for (size_t index = 0; index < 3; ++index) {
    if (sym_id == rb_intern(RbcudaFuncCache[index])) {
      return static_cast<cudaFuncCache>(index);
    }
  }

  VALUE str = rb_any_to_s(sym);
  rb_raise(rb_eArgError, "invalid function cache symbol (:%s) specified", RSTRING_PTR(str));
}
Пример #12
0
/* :nodoc: */
static VALUE
name_err_mesg_to_str(VALUE obj, SEL sel)
{
    VALUE *ptr, mesg;
    Data_Get_Struct(obj, VALUE, ptr);

    mesg = ptr[0];
    if (NIL_P(mesg)) {
	return Qnil;
    }
    else {
	const char *desc = 0;
	VALUE d = 0, args[3];

	obj = ptr[1];
	switch (TYPE(obj)) {
	  case T_NIL:
	    desc = "nil";
	    break;
	  case T_TRUE:
	    desc = "true";
	    break;
	  case T_FALSE:
	    desc = "false";
	    break;
	  default:
	    d = rb_protect(safe_inspect, obj, NULL);
	    if (NIL_P(d) || RSTRING_LEN(d) > 65) {
		d = rb_any_to_s(obj);
	    }
	    desc = RSTRING_PTR(d);
	    break;
	}
	if (desc && desc[0] != '#') {
	    d = d ? rb_str_dup(d) : rb_str_new2(desc);
	    rb_str_cat2(d, ":");
	    rb_str_cat2(d, rb_obj_classname(obj));
	}
	args[0] = mesg;
	args[1] = ptr[2];
	args[2] = d;
	mesg = rb_f_sprintf(3, args);
    }
    if (OBJ_TAINTED(obj)) {
	OBJ_TAINT(mesg);
    }
    return mesg;
}
Пример #13
0
/* :nodoc: */
static VALUE
name_err_mesg_to_str(VALUE obj)
{
    VALUE *ptr, mesg;
    TypedData_Get_Struct(obj, VALUE, &name_err_mesg_data_type, ptr);

    mesg = ptr[0];
    if (NIL_P(mesg)) return Qnil;
    else {
	const char *desc = 0;
	VALUE d = 0, args[NAME_ERR_MESG_COUNT];
	int state = 0;

	obj = ptr[1];
	switch (obj) {
	  case Qnil:
	    desc = "nil";
	    break;
	  case Qtrue:
	    desc = "true";
	    break;
	  case Qfalse:
	    desc = "false";
	    break;
	  default:
	    d = rb_protect(rb_inspect, obj, &state);
	    if (state)
		rb_set_errinfo(Qnil);
	    if (NIL_P(d) || RSTRING_LEN(d) > 65) {
		d = rb_any_to_s(obj);
	    }
	    desc = RSTRING_PTR(d);
	    break;
	}
	if (desc && desc[0] != '#') {
	    d = d ? rb_str_dup(d) : rb_str_new2(desc);
	    rb_str_cat2(d, ":");
	    rb_str_append(d, rb_class_name(CLASS_OF(obj)));
	}
	args[0] = mesg;
	args[1] = ptr[2];
	args[2] = d;
	mesg = rb_f_sprintf(NAME_ERR_MESG_COUNT, args);
    }
    return mesg;
}
Пример #14
0
Файл: error.c Проект: evan/ruby
/* :nodoc: */
static VALUE
name_err_mesg_to_str(VALUE obj)
{
    VALUE *ptr, mesg;
    TypedData_Get_Struct(obj, VALUE, &name_err_mesg_data_type, ptr);

    mesg = ptr[0];
    if (NIL_P(mesg)) return Qnil;
    else {
	const char *desc = 0;
	VALUE d = 0, args[NAME_ERR_MESG_COUNT];

	obj = ptr[1];
	switch (TYPE(obj)) {
	  case T_NIL:
	    desc = "nil";
	    break;
	  case T_TRUE:
	    desc = "true";
	    break;
	  case T_FALSE:
	    desc = "false";
	    break;
	  default:
	    d = rb_protect(rb_inspect, obj, 0);
	    if (NIL_P(d) || RSTRING_LEN(d) > 65) {
		d = rb_any_to_s(obj);
	    }
	    desc = RSTRING_PTR(d);
	    break;
	}
	if (desc && desc[0] != '#') {
	    d = d ? rb_str_dup(d) : rb_str_new2(desc);
	    rb_str_cat2(d, ":");
	    rb_str_cat2(d, rb_obj_classname(obj));
	}
	args[0] = mesg;
	args[1] = ptr[2];
	args[2] = d;
	mesg = rb_f_sprintf(NAME_ERR_MESG_COUNT, args);
    }
    OBJ_INFECT(mesg, obj);
    return mesg;
}
Пример #15
0
static mustache_value_t* convert_value(
    VALUE rb_value,
    mustache_context_t* m_ctx)
{
    switch (TYPE(rb_value)) {
        case T_OBJECT: return create_mustache_object(m_ctx, rb_value);
        case T_STRUCT: return create_mustache_object(m_ctx, rb_value);
        case T_HASH:   return create_mustache_object(m_ctx, rb_value);
        case T_TRUE:   return create_mustache_value(m_ctx, rb_str_new2("true"));
        case T_FALSE:  return create_mustache_value(m_ctx, Qnil);
        case T_NONE:   return create_mustache_value(m_ctx, Qnil);
        case T_NIL:    return create_mustache_value(m_ctx, Qnil);
        case T_FLOAT:  return create_mustache_value(m_ctx, rb_funcall(rb_value, rb_intern("to_s"), 0, 0));
        case T_STRING: return create_mustache_value(m_ctx, rb_value);
        case T_FIXNUM: return create_mustache_value(m_ctx, rb_fix2str(rb_value, 10));
        case T_BIGNUM: return create_mustache_value(m_ctx, rb_big2str(rb_value, 10));
        case T_ARRAY:  return create_mustache_list(m_ctx, rb_value);
        default:
            if (rb_class_of(rb_value) == rb_cProc) {
                return convert_value(rb_funcall(rb_value, rb_intern("call"), 0, 0), m_ctx);
            }
            return create_mustache_value(m_ctx, rb_any_to_s(rb_value));
    }
}
Пример #16
0
VALUE
rb_rtype_valid(VALUE self, VALUE expected, VALUE value) {
	long i;
	VALUE e_keys;
	VALUE v_keys;
	
	switch(TYPE(expected)) {
		case T_MODULE:
		case T_CLASS:
			return rb_obj_is_kind_of(value, expected) ? Qtrue : Qfalse;
		case T_SYMBOL:
			return rb_respond_to(value, rb_to_id(expected)) ? Qtrue : Qfalse;
		case T_REGEXP:
			return rb_reg_match( expected, rb_funcall(value, id_to_s, 0) ) != Qnil ? Qtrue : Qfalse;
		case T_HASH:
			if( !RB_TYPE_P(value, T_HASH) ) {
				return Qfalse;
			}
			e_keys = rb_funcall(expected, id_keys, 0);
			v_keys = rb_funcall(value, id_keys, 0);
			if( !RTEST(rb_funcall(e_keys, id_eqeq, 1, v_keys)) ) {
				return Qfalse;
			}
			
			for(i = 0; i < RARRAY_LEN(e_keys); i++) {
				VALUE e_k = rb_ary_entry(e_keys, i);
				VALUE e_v = rb_hash_aref(expected, e_k);
				if(rb_rtype_valid(self, e_v, rb_hash_aref(value, e_k)) == Qfalse) {
					return Qfalse;
				}
			}
			return Qtrue;
		case T_ARRAY:
			for(i = 0; i < RARRAY_LEN(expected); i++) {
				VALUE e = rb_ary_entry(expected, i);
				VALUE valid = rb_rtype_valid(self, e, value);
				if(valid == Qtrue) {
					return Qtrue;
				}
			}
			return Qfalse;
		case T_TRUE:
			return RTEST(value) ? Qtrue : Qfalse;
		case T_FALSE:
			return !RTEST(value) ? Qtrue : Qfalse;
		case T_NIL:
			return value == Qnil;
		default:
			if(rb_obj_is_kind_of(expected, rb_cRange)) {
				return rb_funcall(expected, id_include, 1, value);
			}
			else if(rb_obj_is_kind_of(expected, rb_cProc)) {
				return RTEST(rb_funcall(expected, id_call, 1, value)) ? Qtrue : Qfalse;
			}
			else if( RTEST(rb_obj_is_kind_of(expected, rb_cRtypeBehaviorBase)) ) {
				return rb_funcall(expected, id_valid, 1, value);
			}
			else {
				VALUE str = rb_any_to_s(expected);
				rb_raise(rb_eRtypeTypeSignatureError, "Invalid type signature: Unknown type behavior %s", StringValueCStr(str));
				return Qfalse;
			}
	}
}
Пример #17
0
static VALUE object_spec_rb_any_to_s(VALUE self, VALUE obj) {
  return rb_any_to_s(obj);
}