Class: NumRu::NetCDFAtt
- Inherits:
-
Object
- Object
- NumRu::NetCDFAtt
- Defined in:
- lib/numru/netcdf.rb,
ext/netcdfraw.c
Instance Method Summary collapse
- #==(Attb) ⇒ Object
- #atttype ⇒ Object
-
#clone ⇒ Object
The methods of the NetCDFAtt class.
- #copy(Var_or_File) ⇒ Object
- #delete ⇒ Object
- #get ⇒ Object
- #inspect ⇒ Object
- #name ⇒ Object
- #name=(new_att_name) ⇒ Object
- #put(val, atttype = nil) ⇒ Object
-
#putraw ⇒ Object
atttype: nil or a String (“string”,“int”,etc).
- #typecode ⇒ Object
Instance Method Details
#==(Attb) ⇒ Object
1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 |
# File 'ext/netcdfraw.c', line 1905
VALUE
NetCDF_att_eql(VALUE Atta,VALUE Attb)
{
struct NetCDFAtt *Netcdf_atta;
struct NetCDFAtt *Netcdf_attb;
if( rb_obj_is_kind_of(Attb, cNetCDFAtt) ){
Data_Get_Struct(Atta,struct NetCDFAtt,Netcdf_atta);
Data_Get_Struct(Attb,struct NetCDFAtt,Netcdf_attb);
if(Netcdf_atta->ncid == Netcdf_atta->ncid &&
Netcdf_atta->varid == Netcdf_attb->varid &&
strcmp(Netcdf_atta->name,Netcdf_attb->name)==0){
return Qtrue;
} else {
return Qfalse;
}
} else {
return Qfalse;
}
}
|
#atttype ⇒ Object
1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 |
# File 'ext/netcdfraw.c', line 1473
VALUE
NetCDF_att_atttype(VALUE Att)
{
int ncid;
int varid;
int status;
char *att_name;
const char *Attname;
struct NetCDFAtt *Netcdf_att;
nc_type xtypep;
Data_Get_Struct(Att,struct NetCDFAtt,Netcdf_att);
ncid = Netcdf_att->ncid;
varid = Netcdf_att->varid;
att_name = Netcdf_att->name;
status = nc_inq_atttype(ncid,varid,att_name,&xtypep);
if(status != NC_NOERR) NC_RAISE(status);
Attname = nctype2natype(xtypep);
return(rb_str_new2(Attname));
}
|
#clone ⇒ Object
The methods of the NetCDFAtt class
532 533 534 535 536 537 538 539 540 541 542 543 |
# File 'ext/netcdfraw.c', line 532
VALUE
NetCDF_att_clone(VALUE att)
{
VALUE clone;
struct NetCDFAtt *na1, *na2;
Data_Get_Struct(att, struct NetCDFAtt, na1);
na2 = NetCDF_att_init(na1->ncid, na1->varid, na1->name);
clone = Data_Wrap_Struct(cNetCDFAtt, 0, Netcdf_att_free, na2);
CLONESETUP(clone, att);
return clone;
}
|
#copy(Var_or_File) ⇒ Object
1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 |
# File 'ext/netcdfraw.c', line 1437
VALUE
NetCDF_att_copy(VALUE Att,VALUE Var_or_File)
{
int ncid_in,ncid_out;
int status;
int varid_in,varid_out;
char *att_name;
struct NetCDFAtt *Netcdf_att;
struct NetCDFVar *Netcdf_var;
struct Netcdf *ncfile;
struct NetCDFAtt *Netcdf_att_out;
rb_secure(4);
Data_Get_Struct(Att,struct NetCDFAtt,Netcdf_att);
ncid_in=Netcdf_att->ncid;
varid_in=Netcdf_att->varid;
att_name=Netcdf_att->name;
if( rb_obj_is_kind_of(Var_or_File, cNetCDFVar) ){
Data_Get_Struct(Var_or_File,struct NetCDFVar, Netcdf_var);
ncid_out=Netcdf_var->ncid;
varid_out=Netcdf_var->varid;
} else if ( rb_obj_is_kind_of(Var_or_File, cNetCDF) ){
Data_Get_Struct(Var_or_File,struct Netcdf, ncfile);
ncid_out=ncfile->ncid;
varid_out=NC_GLOBAL;
} else {
rb_raise(rb_eNetcdfError,"The argument must be a NetCDFVar or a NetCDF");
}
status = nc_copy_att(ncid_in,varid_in,att_name,ncid_out,varid_out);
if(status != NC_NOERR) NC_RAISE(status);
Netcdf_att_out = NetCDF_att_init(ncid_out,varid_out,att_name);
return (Data_Wrap_Struct(cNetCDFAtt,0,Netcdf_att_free,Netcdf_att_out));
}
|
#delete ⇒ Object
1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 |
# File 'ext/netcdfraw.c', line 1517
VALUE
NetCDF_att_delete(VALUE Att)
{
int ncid;
int status;
int varid;
char *c_att_name;
struct NetCDFAtt *Netcdf_att;
rb_secure(4);
Data_Get_Struct(Att,struct NetCDFAtt,Netcdf_att);
ncid=Netcdf_att->ncid;
varid=Netcdf_att->varid;
c_att_name=Netcdf_att->name;
status = nc_del_att(ncid,varid,c_att_name);
if(status != NC_NOERR) NC_RAISE(status);
return Qnil;
}
|
#get ⇒ Object
1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 |
# File 'ext/netcdfraw.c', line 1554
VALUE
NetCDF_att_get(VALUE Att)
{
int ncid;
int varid;
char *c_attname;
int status;
struct NetCDFAtt *Netcdf_att;
nc_type xtypep;
size_t lenp;
int attlen[1]; /* NArray uses int instead of size_t */
char *tp;
unsigned char *up;
short *sp;
int *ip;
float *fp;
double *dp;
VALUE NArray;
VALUE str;
Data_Get_Struct(Att,struct NetCDFAtt,Netcdf_att);
ncid = Netcdf_att->ncid;
varid = Netcdf_att->varid;
c_attname = Netcdf_att->name;
status = nc_inq_atttype(ncid,varid,c_attname,&xtypep);
if(status != NC_NOERR) NC_RAISE(status);
switch(xtypep){
case NC_CHAR:
status = nc_inq_attlen(ncid,varid,c_attname,&lenp);
if(status != NC_NOERR) NC_RAISE(status);
tp = ALLOCA_N(char,lenp+1);
tp[lenp]= '\0';
status = nc_get_att_text(ncid,varid,c_attname,tp);
if(status != NC_NOERR) NC_RAISE(status);
str = rb_str_new2(tp);
OBJ_TAINT(str);
return(str);
break;
case NC_BYTE:
status = nc_inq_attlen(ncid,varid,c_attname,&lenp);
if(status != NC_NOERR) NC_RAISE(status);
attlen[0]=lenp;
Cbyte_to_NArray(NArray,1,attlen,up);
status = nc_get_att_uchar(ncid,varid,c_attname,up);
if(status != NC_NOERR) NC_RAISE(status);
OBJ_TAINT(NArray);
return NArray;
break;
case NC_SHORT:
status = nc_inq_attlen(ncid,varid,c_attname,&lenp);
if(status != NC_NOERR) NC_RAISE(status);
attlen[0]=lenp;
Csint_to_NArray(NArray,1,attlen,sp);
status = nc_get_att_short(ncid,varid,c_attname,sp);
if(status != NC_NOERR) NC_RAISE(status);
OBJ_TAINT(NArray);
return NArray;
break;
case NC_INT:
status = nc_inq_attlen(ncid,varid,c_attname,&lenp);
if(status != NC_NOERR) NC_RAISE(status);
attlen[0]=lenp;
Clint_to_NArray(NArray,1,attlen,ip);
status = nc_get_att_int(ncid,varid,c_attname,ip);
if(status != NC_NOERR) NC_RAISE(status);
OBJ_TAINT(NArray);
return NArray;
break;
case NC_FLOAT:
status = nc_inq_attlen(ncid,varid,c_attname,&lenp);
if(status != NC_NOERR) NC_RAISE(status);
attlen[0]=lenp;
Cfloat_to_NArray(NArray,1,attlen,fp);
status = nc_get_att_float(ncid,varid,c_attname,fp);
if(status != NC_NOERR) NC_RAISE(status);
OBJ_TAINT(NArray);
return NArray;
break;
case NC_DOUBLE:
status = nc_inq_attlen(ncid,varid,c_attname,&lenp);
if(status != NC_NOERR) NC_RAISE(status);
attlen[0]=lenp;
Cdouble_to_NArray(NArray,1,attlen,dp);
status = nc_get_att_double(ncid,varid,c_attname,dp);
if(status != NC_NOERR) NC_RAISE(status);
OBJ_TAINT(NArray);
return NArray;
break;
default:
rb_raise(rb_eNetcdfError,"atttype isn't supported in netCDF");
}
return Qnil;
}
|
#inspect ⇒ Object
773 774 775 |
# File 'lib/numru/netcdf.rb', line 773 def inspect 'NetCDFAtt:'+name end |
#name ⇒ Object
1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 |
# File 'ext/netcdfraw.c', line 1251
VALUE
NetCDF_att_inq_name(VALUE Att)
{
char *c_att_name;
struct NetCDFAtt *Netcdf_att;
VALUE str;
Data_Get_Struct(Att,struct NetCDFAtt,Netcdf_att);
c_att_name=Netcdf_att->name;
str = rb_str_new2(c_att_name);
OBJ_TAINT(str);
return(str);
}
|
#name=(new_att_name) ⇒ Object
1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 |
# File 'ext/netcdfraw.c', line 1266
VALUE
NetCDF_att_rename(VALUE Att,VALUE new_att_name)
{
int ncid;
int status;
int varid;
char *c_att_name;
char *c_new_att_name;
struct NetCDFAtt *Netcdf_att;
Data_Get_Struct(Att,struct NetCDFAtt,Netcdf_att);
ncid=Netcdf_att->ncid;
varid=Netcdf_att->varid;
c_att_name=Netcdf_att->name;
Check_Type(new_att_name,T_STRING);
SafeStringValue(new_att_name);
c_new_att_name=StringValueCStr(new_att_name);
status = nc_rename_att(ncid,varid,c_att_name,c_new_att_name);
if(status != NC_NOERR) NC_RAISE(status);
strcpy(Netcdf_att->name,c_new_att_name);
return Qnil;
}
|
#put(val, atttype = nil) ⇒ Object
769 770 771 |
# File 'lib/numru/netcdf.rb', line 769 def put(val,atttype=nil) putraw(val,atttype) end |
#putraw ⇒ Object
atttype: nil or a String (“string”,“int”,etc). If nil,
the type of attribute is determined from the type of value
1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 |
# File 'ext/netcdfraw.c', line 1539
VALUE
NetCDF_att_put(VALUE Att,VALUE value,VALUE atttype)
/*
* atttype: nil or a String ("string","int",etc). If nil,
* the type of attribute is determined from the type of value
*/
{
struct NetCDFAtt *ncatt;
rb_secure(4);
Data_Get_Struct(Att,struct NetCDFAtt,ncatt);
return( NetCDF_put_att__(ncatt->ncid, ncatt->name, value,
atttype, ncatt->varid) );
}
|
#typecode ⇒ Object
1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 |
# File 'ext/netcdfraw.c', line 1496
VALUE
NetCDF_att_typecode(VALUE Att)
{
int ncid;
int varid;
int status;
char *att_name;
struct NetCDFAtt *Netcdf_att;
nc_type xtypep;
Data_Get_Struct(Att,struct NetCDFAtt,Netcdf_att);
ncid = Netcdf_att->ncid;
varid = Netcdf_att->varid;
att_name = Netcdf_att->name;
status = nc_inq_atttype(ncid,varid,att_name,&xtypep);
if(status != NC_NOERR) NC_RAISE(status);
return(INT2NUM(nctype2natypecode(xtypep)));
}
|