source: tags/20100403/lang/octave/rpLibPutDouble.cc @ 1687

Last change on this file since 1687 was 1262, checked in by dkearney, 15 years ago

attempting to fix compiler warning for octave's print_usage function
this seems to work for octave3.0
also adding checks to configure for more header files

File size: 3.3 KB
Line 
1/*
2 * ----------------------------------------------------------------------
3 *  INTERFACE: Octave Rappture Library Source
4 *
5 *    [err] = rpLibPutDouble(libHandle,path,value,append)
6 *
7 * ======================================================================
8 *  AUTHOR:  Derrick Kearney, Purdue University
9 *  Copyright (c) 2005
10 *  Purdue Research Foundation, West Lafayette, IN
11 * ======================================================================
12 */
13
14#include "RpOctaveInterface.h"
15
16/**********************************************************************/
17// METHOD: [err] = rpLibPutDouble (libHandle,path,value,append)
18/// Set the value of a node.
19/**
20 * Clients use this to set the value of a node.  If the path
21 * is not specified, it sets the value for the root node.
22 * Otherwise, it sets the value for the element specified
23 * by the path.  The value is treated as the text within the
24 * tag at the tail of the path.
25 *
26 * If the append flag is set to 1, then the
27 * value is appended to the current value.  Otherwise, the
28 * value specified in the function call replaces the current value.
29 *
30 */
31
32DEFUN_DLD (rpLibPutDouble, args, ,
33"-*- texinfo -*-\n\
34[err] = rpLibPutDouble(@var{libHandle},@var{path},@var{value},@var{append})\n\
35\n\
36Clients use this to set the value of a node.  If the @var{path}\n\
37is not specified (ie. empty string ""), it sets the value for the\n\
38root node.  Otherwise, it sets the value for the element specified\n\
39by the path.  The @var{value} is treated as the text within the \n\
40tag at the tail of the @var{path}.\n\
41\n\
42If the @var{append} flag is set to 1, then the \n\
43@var{value} is appended to the current value.  Otherwise, the \n\
44@var{value} specified in the function call replaces the current value.\n\
45Error Codes: err = 0 is success, anything else is failure.")
46{
47    static std::string who = "rpLibPutDouble";
48
49    // The list of values to return.
50    octave_value_list retval;
51    int err           = 1;
52    int nargin        = args.length ();
53    int libHandle     = 0;
54    std::string path  = "";
55    double value      = 0;
56    int append        = 0;
57    RpLibrary* lib    = NULL;
58
59    if (nargin == 4) {
60
61        if ( args(0).is_real_scalar() &&
62             args(1).is_string()      &&
63             args(2).is_real_scalar() &&
64             args(3).is_real_scalar()   ) {
65
66            libHandle = args(0).int_value ();
67            path      = args(1).string_value ();
68            value     = args(2).double_value ();
69            append    = args(3).int_value ();
70
71            /* Call the C subroutine. */
72            // the only input that has restrictions is libHandle
73            // all other inputs may be empty strings or any integer value
74            if ( (libHandle >= 0) ) {
75
76                lib = (RpLibrary*) getObject_Void(libHandle);
77                if (lib) {
78                    lib->put(path,value,"",append);
79                    err = 0;
80                }
81                else {
82                    // lib is NULL, not found in dictionary
83                }
84            }
85            else {
86                // libHandle is negative
87                _PRINT_USAGE (who.c_str());
88            }
89        }
90        else {
91            // wrong argument types
92            _PRINT_USAGE (who.c_str());
93        }
94    }
95    else {
96        // wrong number of arguments
97        _PRINT_USAGE (who.c_str());
98    }
99
100    retval(0) = err;
101    return retval;
102}
Note: See TracBrowser for help on using the repository browser.