/*
* call-seq:
* new(record_unit=Senna::Records::DOCUMENT, subrec_unit=Senna::Records::NONE, max_n_subrecs=0)
*
* 結果レコードオブジェクトの生成。
*
* === Argument
* record_unit [Integer] :: レコードの単位。次のいずれか。Senna::Records::DOCUMENT(default), Senna::Records::SECTION, Senna::Records::POSITION, Senna::Records::USERDEF, Senna::Records::NONE(default)
* subrec_unit [Integer] :: サブレコードの単位。指定できる値は record_unit と同じ。
* max_n_subrecs [Integer] :: レコード内のサブレコードの最大数。
*
* === Return
* Senna::Records
*/
static VALUE records_new(int argc, VALUE *argv, VALUE klass)
{
VALUE record_unit;
VALUE subrec_unit;
VALUE max_n_subrecs;
sen_records *recs;
VALUE obj;
sen_rec_unit _record_unit, _subrec_unit;
int _max_n_subrecs;
rb_scan_args(argc, argv, "03", &record_unit, &subrec_unit, &max_n_subrecs);
_record_unit = NIL_P(record_unit) ? sen_rec_document : NUM2INT(record_unit);
_subrec_unit = NIL_P(subrec_unit) ? sen_rec_none : NUM2INT(subrec_unit);
_max_n_subrecs = NIL_P(max_n_subrecs) ? 0 : NUM2INT(max_n_subrecs);
recs = sen_records_open(_record_unit, _subrec_unit, _max_n_subrecs);
obj = Data_Wrap_Struct(klass, 0, sen_records_close, recs);
rb_funcall(obj, rb_intern("initialize"), 3, record_unit, subrec_unit, max_n_subrecs);
return obj;
}