本文整理汇总了C++中RARRAY_AREF函数的典型用法代码示例。如果您正苦于以下问题:C++ RARRAY_AREF函数的具体用法?C++ RARRAY_AREF怎么用?C++ RARRAY_AREF使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了RARRAY_AREF函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Check_Type
rgb_color
Convert<rgb_color>::FromValue(VALUE v)
{
int value;
rgb_color c;
Check_Type(v, T_ARRAY);
switch (RARRAY_LEN(v)) {
case 3:
value = 0;
break;
case 4:
value = NUM2INT(RARRAY_AREF(v, 3));
break;
default:
rb_raise(rb_eRangeError, "given array cannot be interpreted as rgb_color (length should be 4)");
}
if (value < 0 || value > 255)
rb_raise(rb_eRangeError, "given array cannot be interpreted as rgb_color (alpha out of range (0..255))");
c. alpha = (uint8) value;
value = NUM2INT(RARRAY_AREF(v, 0));
if (value < 0 || value > 255)
rb_raise(rb_eRangeError, "given array cannot be interpreted as rgb_color (red out of range (0..255))");
c.red = (uint8)value;
value = NUM2INT(RARRAY_AREF(v, 1));
if (value < 0 || value > 255)
rb_raise(rb_eRangeError, "given array cannot be interpreted as rgb_color (green out of range (0..255))");
c.green = (uint8)value;
value = NUM2INT(RARRAY_AREF(v, 2));
if (value < 0 || value > 255)
rb_raise(rb_eRangeError, "given array cannot be interpreted as rgb_color (blue out of range (0..255))");
c.blue = (uint8)value;
return c;
}
示例2: ossl_x509crl_set_revoked
static VALUE
ossl_x509crl_set_revoked(VALUE self, VALUE ary)
{
X509_CRL *crl;
X509_REVOKED *rev;
STACK_OF(X509_REVOKED) *sk;
long i;
Check_Type(ary, T_ARRAY);
/* All ary members should be X509 Revoked */
for (i=0; i<RARRAY_LEN(ary); i++) {
OSSL_Check_Kind(RARRAY_AREF(ary, i), cX509Rev);
}
GetX509CRL(self, crl);
if ((sk = X509_CRL_get_REVOKED(crl))) {
while ((rev = sk_X509_REVOKED_pop(sk)))
X509_REVOKED_free(rev);
}
for (i=0; i<RARRAY_LEN(ary); i++) {
rev = DupX509RevokedPtr(RARRAY_AREF(ary, i));
if (!X509_CRL_add0_revoked(crl, rev)) { /* NO DUP - don't free! */
X509_REVOKED_free(rev);
ossl_raise(eX509CRLError, "X509_CRL_add0_revoked");
}
}
X509_CRL_sort(crl);
return ary;
}
示例3: setClassName
AccessClass::AccessClass(RubyValue className, RubyValue methodInfos, RubyValue signalInfos, RubyValue propertyInfos)
{
setClassName(className.to<QByteArray>());
protect([&] {
rb_check_array_type(methodInfos);
rb_check_array_type(signalInfos);
rb_check_array_type(propertyInfos);
});
for (int i = 0; i < RARRAY_LEN(VALUE(methodInfos)); ++i) {
RubyValue info = RARRAY_AREF(VALUE(methodInfos), i);
auto nameSym = info.send("name");
addMethod(nameSym.to<QByteArray>(),
nameSym.toID(),
info.send("params").to<QList<QByteArray>>());
}
for (int i = 0; i < RARRAY_LEN(VALUE(signalInfos)); ++i) {
RubyValue info = RARRAY_AREF(VALUE(signalInfos), i);
auto nameSym = info.send("name");
addSignal(nameSym.to<QByteArray>(),
nameSym.toID(),
info.send("params").to<QList<QByteArray>>());
}
for (int i = 0; i < RARRAY_LEN(VALUE(propertyInfos)); ++i) {
RubyValue info = RARRAY_AREF(VALUE(propertyInfos), i);
addProperty(info.send("name").to<QByteArray>(),
info.send("getter").toID(),
info.send("setter").toID(),
Property::Flag::Readable | Property::Flag::Writable,
true,
info.send("notifier").toID());
}
}
示例4: if
wxSize unwrap< wxSize >(const VALUE &vsize)
{
if(rb_obj_is_kind_of(vsize, rb_cArray) && RARRAY_LEN(vsize) == 2 ){
wxSize size;
size.SetWidth(RB_NUM2INT(RARRAY_AREF(vsize,0)));
size.SetHeight(RB_NUM2INT(RARRAY_AREF(vsize,1)));
return size;
}else if(rb_obj_is_kind_of(vsize, rb_cHash)){
wxSize size;
size.SetWidth(RB_NUM2INT(rb_hash_aref(vsize,RB_ID2SYM(rwxID_width))));
size.SetHeight(RB_NUM2INT(rb_hash_aref(vsize,RB_ID2SYM(rwxID_height))));
return size;
}else if(rb_obj_is_kind_of(vsize, rb_cWXRect)){
return unwrapTypedPtr<wxRect>(vsize, rb_cWXRect)->GetSize();
}else if(!rb_obj_is_kind_of(vsize, rb_cWXSize) &&
rb_respond_to(vsize,rwxID_width) &&
rb_respond_to(vsize,rwxID_height)){
wxSize size;
size.SetWidth(RB_NUM2INT(rb_funcall(vsize,rwxID_width,0)));
size.SetHeight(RB_NUM2INT(rb_funcall(vsize,rwxID_height,0)));
return size;
}else{
return *unwrap<wxSize*>(vsize);
}
}
示例5: iter_nstruct_to_a
static void
iter_nstruct_to_a(na_loop_t *const lp)
{
long i, len;
VALUE opt, types, defs, def;
VALUE elmt, velm, vary;
size_t ofs, pos;
narray_view_t *ne;
opt = lp->option;
types = RARRAY_AREF(opt,0);
defs = RARRAY_AREF(opt,1);
pos = lp->args[0].iter[0].pos;
len = RARRAY_LEN(types);
vary = rb_ary_new2(len);
for (i=0; i<len; i++) {
def = RARRAY_AREF(defs,i);
ofs = NUM2SIZET(RARRAY_AREF(def,2));
//ofs = NUM2SIZET(RARRAY_AREF(ofsts,i));
elmt = RARRAY_AREF(types,i);
GetNArrayView(elmt,ne);
ne->offset = pos + ofs;
if (ne->base.ndim==0) {
velm = rb_funcall(elmt,rb_intern("extract"),0);
} else {
velm = rb_funcall(elmt,rb_intern("to_a"),0);
}
rb_ary_push(vary, velm);
}
rb_ary_push(lp->args[1].value, vary);
}
示例6: rb_respond_to
sf::Color unwrap< sf::Color >(const VALUE &vcolor)
{
if(!rb_obj_is_kind_of(vcolor, rb_cSFMLColor) &&
rb_respond_to(vcolor,rbSFML_IDred) &&
rb_respond_to(vcolor,rbSFML_IDgreen) &&
rb_respond_to(vcolor,rbSFML_IDblue) &&
rb_respond_to(vcolor,rbSFML_IDalpha)){
sf::Color color;
set_value(color.r,vcolor,rbSFML_IDred);
set_value(color.g,vcolor,rbSFML_IDgreen);
set_value(color.b,vcolor,rbSFML_IDblue);
set_value(color.a,vcolor,rbSFML_IDalpha);
return color;
}else if(rb_obj_is_kind_of(vcolor,rb_cArray)) {
sf::Color color;
color.r = NUM2INT(RARRAY_AREF(vcolor,0));
color.g = NUM2INT(RARRAY_AREF(vcolor,1));
color.b = NUM2INT(RARRAY_AREF(vcolor,2));
if(RARRAY_LEN(vcolor) > 3) {
VALUE val = RARRAY_AREF(vcolor,3);
if(!NIL_P(val))
color.a = NUM2INT(val);
}
return color;
}else{
return *unwrap<sf::Color*>(vcolor);
}
}
示例7: _marshal_load
/*
* call-seq:
* marshal_load(array) -> nil
*
* Provides marshalling support for use by the Marshal library.
*
*
*/
DLL_LOCAL VALUE _marshal_load(VALUE self, VALUE data)
{
data = rb_Array(data);
_setWidth(self, RARRAY_AREF(data,0));
_setHeight(self, RARRAY_AREF(data,1));
return Qnil;
}
示例8: console_cursor_set
static VALUE
console_cursor_set(VALUE io, VALUE cpos)
{
cpos = rb_convert_type(cpos, T_ARRAY, "Array", "to_ary");
if (RARRAY_LEN(cpos) != 2) rb_raise(rb_eArgError, "expected 2D coordinate");
return console_goto(io, RARRAY_AREF(cpos, 0), RARRAY_AREF(cpos, 1));
}
示例9: lazy_zip_func
static VALUE
lazy_zip_func(VALUE val, VALUE zip_args, int argc, VALUE *argv)
{
VALUE yielder, ary, arg, v;
long i;
yielder = argv[0];
arg = rb_attr_get(yielder, id_memo);
if (NIL_P(arg)) {
arg = rb_ary_new2(RARRAY_LEN(zip_args));
for (i = 0; i < RARRAY_LEN(zip_args); i++) {
rb_ary_push(arg, rb_funcall(RARRAY_AREF(zip_args, i), id_to_enum, 0));
}
rb_ivar_set(yielder, id_memo, arg);
}
ary = rb_ary_new2(RARRAY_LEN(arg) + 1);
rb_ary_push(ary, argv[1]);
for (i = 0; i < RARRAY_LEN(arg); i++) {
v = rb_rescue2(call_next, RARRAY_AREF(arg, i), next_stopped, 0,
rb_eStopIteration, (VALUE)0);
rb_ary_push(ary, v);
}
rb_funcall(yielder, id_yield, 1, ary);
return Qnil;
}
示例10: _marshal_load
/*
* call-seq:
* marshal_load(array) -> nil
*
* Provides marshalling support for use by the Marshal library.
*
*
*/
VALUE _marshal_load(VALUE self, VALUE data)
{
_set_r(self, RARRAY_AREF(data,0));
_set_g(self, RARRAY_AREF(data,1));
_set_b(self, RARRAY_AREF(data,2));
_set_a(self, RARRAY_AREF(data,3));
return Qnil;
}
示例11: nst_check_compatibility
VALUE
nst_check_compatibility(VALUE nst, VALUE ary)
{
VALUE defs, def, type, item;
long len, i;
narray_t *nt;
if (TYPE(ary) != T_ARRAY) {
if (nst==CLASS_OF(ary)) { // same Struct
return Qtrue;
}
return Qfalse;
}
defs = nst_definitions(nst);
len = RARRAY_LEN(defs);
if (len != RARRAY_LEN(ary)) {
//puts("pass2");
return Qfalse;
}
for (i=0; i<len; i++) {
def = RARRAY_AREF(defs,i);
type = RARRAY_AREF(def,1);
GetNArray(type,nt);
item = RARRAY_AREF(ary,i);
if (nt->ndim == 0) {
if (check_array(item)) {
//puts("pass3");
return Qfalse;
}
} else if (nt->ndim == 1) {
if (!check_array_1d(item, nt->size)) {
//puts("pass4");
return Qfalse;
}
} else {
// multi-dimension member
volatile VALUE vnc;
na_compose_t *nc;
int j;
//rb_p(item);
vnc = na_ary_composition(item);
//puts("pass2");
Data_Get_Struct(vnc, na_compose_t, nc);
if (nt->ndim != nc->ndim) {
return Qfalse;
}
for (j=0; j<nc->ndim; j++) {
if (nc->shape[j] != nt->shape[j]) {
return Qfalse;
}
}
return Qtrue;
}
}
return Qtrue;
}
示例12: _marshal_load
/*
* call-seq:
* marshal_load(array) -> nil
*
* Provides marshalling support for use by the Marshal library.
*
*
*/
VALUE _marshal_load( VALUE self, VALUE data )
{
_set_left(self, RARRAY_AREF(data,0));
_set_top(self, RARRAY_AREF(data,1));
_set_width(self, RARRAY_AREF(data,2));
_set_height(self, RARRAY_AREF(data,3));
return Qnil;
}
示例13: nucomp_marshal_load
/* :nodoc: */
static VALUE
nucomp_marshal_load(VALUE self, VALUE a)
{
Check_Type(a, T_ARRAY);
if (RARRAY_LEN(a) != 2)
rb_raise(rb_eArgError, "marshaled complex must have an array whose length is 2 but %ld", RARRAY_LEN(a));
rb_ivar_set(self, id_i_real, RARRAY_AREF(a, 0));
rb_ivar_set(self, id_i_imag, RARRAY_AREF(a, 1));
return self;
}
示例14: Check_Type
OCIInterval *oci8_set_ociinterval_ym(OCIInterval *intvl, VALUE val)
{
sb4 year;
sb4 month;
Check_Type(val, T_ARRAY);
if (RARRAY_LEN(val) != 2) {
rb_raise(rb_eRuntimeError, "invalid array size %ld", RARRAY_LEN(val));
}
year = NUM2INT(RARRAY_AREF(val, 0));
month = NUM2INT(RARRAY_AREF(val, 1));
chkerr(OCIIntervalSetYearMonth(oci8_envhp, oci8_errhp,
year, month, intvl));
return intvl;
}
示例15: nst_field_view
VALUE
nst_field_view(VALUE self, VALUE idx)
{
VALUE def, type, ofs;
def = nst_definition(self, idx);
if (!RTEST(def)) {
idx = rb_funcall(idx, rb_intern("to_s"), 0);
rb_raise(rb_eTypeError, "Invalid field: '%s' for struct %s",
StringValuePtr(idx), rb_class2name(CLASS_OF(self)));
}
type = RARRAY_AREF(def,1);
ofs = RARRAY_AREF(def,2);
return na_make_view_struct(self, type, ofs);
}