.\" header.tmac. GetData manual macros. .\" .\" Copyright (C) 2016 D. V. Wiebe .\" .\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .\" .\" This file is part of the GetData project. .\" .\" Permission is granted to copy, distribute and/or modify this document .\" under the terms of the GNU Free Documentation License, Version 1.2 or .\" any later version published by the Free Software Foundation; with no .\" Invariant Sections, with no Front-Cover Texts, and with no Back-Cover .\" Texts. A copy of the license is included in the `COPYING.DOC' file .\" as part of this distribution. .\" Format a function name with optional trailer: func_name()trailer .de FN \" func_name [trailer] .nh .BR \\$1 ()\\$2 .hy .. .\" Format a reference to section 3 of the manual: name(3)trailer .de F3 \" func_name [trailer] .nh .BR \\$1 (3)\\$2 .hy .. .\" Format the header of a list of definitons .de DD \" name alt... .ie "\\$2"" \{ \ .TP 8 .PD .B \\$1 \} .el \{ \ .PP .B \\$1 .PD 0 .DD \\$2 \\$3 \} .. .\" Start a code block: Note: groff defines an undocumented .SC for .\" Bell Labs man legacy reasons. .de SC .fam C .na .nh .. .\" End a code block .de EC .hy .ad .fam .. .\" Format a structure pointer member: struct->member\fRtrailer .de SPM \" struct member trailer .nh .ie "\\$3"" .IB \\$1 ->\: \\$2 .el .IB \\$1 ->\: \\$2\fR\\$3 .hy .. .\" Format a function argument .de ARG \" name trailer .nh .ie "\\$2"" .I \\$1 .el .IR \\$1 \\$2 .hy .. .\" Hyphenation exceptions .hw sarray carray lincom linterp .\" gd_madd_bit.3. The gd_madd_bit man page. .\" .\" Copyright (C) 2008, 2009, 2010, 2012, 2013, 2016 D. V. Wiebe .\" .\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .\" .\" This file is part of the GetData project. .\" .\" Permission is granted to copy, distribute and/or modify this document .\" under the terms of the GNU Free Documentation License, Version 1.2 or .\" any later version published by the Free Software Foundation; with no .\" Invariant Sections, with no Front-Cover Texts, and with no Back-Cover .\" Texts. A copy of the license is included in the `COPYING.DOC' file .\" as part of this distribution. .\" .TH gd_madd_bit 3 "25 December 2016" "Version 0.10.0" "GETDATA" .SH NAME gd_madd_bit, gd_madd_carray, gd_madd_clincom, gd_madd_const, gd_madd_cpolynom, gd_madd_crecip, gd_madd_divide, gd_madd_indir, gd_madd_lincom, gd_madd_linterp, gd_madd_multiply, gd_madd_phase, gd_madd_polynom, gd_madd_recip, gd_madd_sarray, gd_madd_sbit, gd_madd_sindir, gd_madd_string \(em add a field to a Dirfile .SH SYNOPSIS .SC .B #include .HP .BI "int gd_madd_bit(DIRFILE *" dirfile , .BI "const char *" parent ", const char *" field_name , .BI "const char *" in_field ", int " bitnum ", int " numbits ); .HP .BI "int gd_madd_carray(DIRFILE *" dirfile , .BI "const char *" parent ", const char *" field_name , .BI "gd_type_t " const_type ", size_t " array_len ", gd_type_t " data_type , .BI "void *" value ); .HP .BI "int gd_madd_clincom(DIRFILE *" dirfile ", const char *" parent , .BI "const char *" field_name ", int " n_fields ", const char **" in_fields , .BI "const double complex *" cm ", const double complex *" cb ); .HP .BI "int gd_madd_const(DIRFILE *" dirfile , .BI "const char *" parent ", const char *" field_name , .BI "gd_type_t " const_type ", gd_type_t " data_type ", void *" value ); .HP .BI "int gd_madd_cpolynom(DIRFILE *" dirfile ", const char *" parent , .BI "const char *" field_name ", int " poly_ord ", const char *" in_field , .BI "const double complex *" ca ); .HP .BI "int gd_madd_crecip(DIRFILE *" dirfile ", const char *" parent , .BI "const char *" field_name ", const char *" in_field , .BI "double complex " cdividend ", int " fragment_index ); .HP .BI "int gd_madd_divide(DIRFILE *" dirfile , .BI "const char *" parent ", const char *" field_name , .BI " const char *" in_field1 ", const char *" in_field2 ); .HP .BI "int gd_madd_indir(DIRFILE *" dirfile , .BI "const char *" parent ", const char *" field_name , .BI " const char *" index_field ", const char *" carray_field ); .HP .BI "int gd_madd_lincom(DIRFILE *" dirfile ", const char *" parent , .BI "const char *" field_name ", int " n_fields ", const char **" in_fields , .BI "const double *" m ", const double *" b ); .HP .BI "int gd_madd_linterp(DIRFILE *" dirfile , .BI "const char *" parent ", const char *" field_name , .BI "const char *" in_field ", const char *" table ); .HP .BI "int gd_madd_mplex(DIRFILE *" dirfile , .BI "const char *" parent ", const char *" field_name , .BI "const char *" in_field ", const char *" count_field , .BI "int " count_val ", int " period ); .HP .BI "int gd_madd_multiply(DIRFILE *" dirfile , .BI "const char *" parent ", const char *" field_name , .BI " const char *" in_field1 ", const char *" in_field2 ); .HP .BI "int gd_madd_polynom(DIRFILE *" dirfile ", const char *" parent , .BI "const char *" field_name ", int " poly_ord ", const char *" in_field , .BI "const double *" a ); .HP .BI "int gd_madd_phase(DIRFILE *" dirfile , .BI "const char *" parent ", const char *" field_name , .BI "const char *" in_field ", gd_int64_t " shift ); .HP .BI "int gd_madd_recip(DIRFILE *" dirfile ", const char *" parent , .BI "const char *" field_name ", const char *" in_field , .BI "double " dividend ", int " fragment_index ); .HP .BI "int gd_madd_sarray(DIRFILE *" dirfile , .BI "const char *" parent ", const char *" field_name , .BI size_t " array_len ", const char **" value ); .HP .BI "int gd_madd_sbit(DIRFILE *" dirfile , .BI "const char *" parent ", const char *" field_name , .BI "const char *" in_field ", int " bitnum ", int " numbits ); .HP .BI "int gd_madd_sindir(DIRFILE *" dirfile , .BI "const char *" parent ", const char *" field_name , .BI " const char *" index_field ", const char *" sarray_field ); .HP .BI "int gd_madd_string(DIRFILE *" dirfile ", const char *" parent , .BI "const char *" field_name ", const char *" value ); .HP .BI "int gd_madd_window(DIRFILE *" dirfile , .BI "const char *" parent ", const char *" field_name , .BI "const char *" in_field ", const char *" check_field ", gd_windop_t" .IB windop ", gd_triplet_t " threshold ); .EC .SH DESCRIPTION These functions add a new metafield of the indicated type under the parent field given by .ARG parent to the dirfile specified by .ARG dirfile . .PP In all of these calls, .ARG field_name indicates the name of the field to be added. It should not be the full .IB / field code. The meaning and valid types of other arguments may be obtained from the .F3 gd_entry and dirfile-format(5) manual pages. The .FN gd_madd_clincom and .FN gd_madd_cpolynom functions are identical to .FN gd_madd_lincom and .FN gd_madd_polynom , except they take complex scalar parameters, instead of purely real values. The .FN gd_madd_lincom and .FN gd_madd_clincom functions take pointers to three arrays of length .ARG n_fields containing the input field names .RI ( in_fields ), the gain factors .RI ( m " or " cm ), and the offset terms .RI ( b " or " cb ). Similarly, .FN gd_madd_polynom and .FN gd_madd_cpolynom take an array of length .ARG poly_ord + 1 containing the polynomial co-efficients .RI ( a " or " ca ). The .FN gd_madd_carray , .FN gd_madd_const , .FN gd_madd_sarray , and .FN gd_madd_string , functions both add the field and set the value of the field to .ARG value . For .FN gd_madd_const and .FN gd_madd_carray , the .ARG const_type argument specifies the storage type for the const, while .ARG data_type specifies the data type of the value pointed to by .ARG value . For .FN gd_madd_sarray , .ARG value should contain .ARG array_len string pointers. The .B gd_int64_t type is a signed 64-bit integer type. The .B gd_triplet_t type is defined as: .PP .in +4n .nf .fam C typedef union { gd_int64_t i; gd_uint64_t u; double r; } gd_triplet_t; .fam .fi .in .PP Which element of this .B gd_triplet_t union to set depends on the operator selected for the .B WINDOW field. See .F3 gd_entry for details. .PP All fields added with this interface must contain numerical parameters. Fields with scalar fields as parameters cannot be added with these functions. Those fields must be added with .F3 gd_madd or .F3 gd_madd_spec . See .F3 gd_add_bit , &c. for an alternate way of adding metafields with explicit parameters. See .B NOTES below for information on using .BR gd_madd_clincom "(), " gd_madd_cpolynom (), and .FN gd_madd_crecip in the C89 GetData API. .SH RETURN VALUE On success, any of these functions returns zero. On error, a negative-valued error code is returned. Possible error codes are: .DD GD_E_ACCMODE The specified dirfile was opened read-only. .DD GD_E_ALLOC The library was unable to allocate memory. .DD GD_E_BAD_CODE The .ARG field_name argument contained invalid characters. Alternately, the .ARG parent field code was not found, or was already a metafield. .DD GD_E_BAD_DIRFILE The supplied dirfile was invalid. .DD GD_E_BAD_ENTRY One or more of the field parameters specified was invalid. .DD GD_E_BAD_TYPE The .ARG data_type or .ARG const_type argument provided to .FN gd_madd_const or .FN gd_madd_carray was invalid. .DD GD_E_DUPLICATE The .ARG field_name provided duplicated that of an already existing field. .DD GD_E_PROTECTED The metadata of the fragment was protected from change. .PP The dirfile error may also be retrieved by calling .F3 gd_error . A descriptive error string for the last error encountered can be obtained from a call to .F3 gd_error_string . .SH NOTES The C89 GetData API provides different prototypes for .FN gd_madd_clincom ,\~ gd_madd_cpolynom (), and .FN gd_madd_crecip : .PP .SC .B #define GD_C89_API .br .B #include .HP .BI "int gd_madd_clincom(DIRFILE *" dirfile ", const char *" parent , .BI "const char *" field_name ", int " n_fields ", const char **" in_fields , .BI "const double *" cm ", const double *" cb ); .HP .BI "int gd_madd_cpolynom(DIRFILE *" dirfile ", const char *" parent , .BI "const char *" field_name ", int " poly_ord ", const char *" in_field , .BI "const double *" ca ); .HP .BI "int gd_madd_crecip(DIRFILE *" dirfile ", const char *" parent , .BI "const char *" field_name ", const char *" in_field , .BI "double " cdividend\fR[2] ", int " fragment_index ); .EC .PP In this case, the array pointers passed as .ARG cm , .ARG cb or .ARG ca should have twice as many (purely real) elements, consisting of alternating real and imaginary parts for the complex data. That is, for example, .ARG ca [0] should be the real part of the first co-efficient, .ARG ca [1] the imaginary part of the first co-efficient, .ARG ca [2] the real part of the second co-efficient, .ARG ca [3] the imaginary part of the second co-efficient, and so on. Similarly, the .ARG cdividend parameter becomes a double precision array of length two. .PP For .FN gd_madd_clincom and .FN gd_madd_cpolynom , these are simply different (but equivalent) declarations of the C99 function entry point. For .FN gd_madd_crecip , however, a different entry point is needed (since the .ARG cdividend parameter is passed by reference instead of by value). In the interests of portability, the C89 version of .FN gd_madd_crecip is always available, and may be accessed as .FN gd_madd_crecip89 , with the C89 prototype, in both the C99 and C89 APIs. .SH HISTORY The functions .FN dirfile_madd_bit , .FN dirfile_madd_const , .FN dirfile_madd_lincom , .FN dirfile_madd_linterp , .FN dirfile_madd_multiply , .FN dirfile_madd_phase , and .FN dirfile_madd_string appeared in GetData-0.4.0. The functions .FN dirfile_madd_clincom , .FN dirfile_madd_cpolynom , .FN dirfile_madd_polynom , and .FN dirfile_madd_sbit appeared in GetData-0.6.0. In GetData-0.7.0, the functions were renamed to .FN gd_madd_bit , .FN gd_madd_clincom , .FN gd_madd_const , .FN gd_madd_cpolynom , .FN gd_madd_lincom , .FN gd_madd_linterp , .FN gd_madd_multiply , .FN gd_madd_phase , .FN gd_madd_polynom , .FN gd_madd_sbit , and .FN gd_madd_string . The functions .FN gd_madd_carray , .FN gd_madd_crecip , .FN gd_madd_divide , and .FN gd_madd_recip also appeared in this version. In GetData-0.8.0, these functions first allowed adding metafields by providing the full (slashed) field name. The functions .FN gd_madd_mplex and .FN gd_madd_window also appeared in this version. In GetData-0.10.0, the error return from these functions changed from -1 to a negative-valued error code. The functions .FN gd_madd_indir , .FN gd_madd_sarray , and .FN gd_madd_sindir also appeared in this version. .SH SEE ALSO the corresponding .BR gd_add_ functions (e.g. .F3 gd_add_bit ), .F3 gd_entry , .F3 gd_error , .F3 gd_error_string , .F3 gd_madd , .F3 gd_madd_spec , .F3 gd_metaflush , .F3 gd_open , dirfile-format(5)