source: trunk/src/octave/rpLibPutString.cc @ 827

Last change on this file since 827 was 135, checked in by dkearney, 18 years ago

1) fixed children function in c++'s library module so users can now
search for children by type.
2) adjusted bindings dictionary module for storing lib's to allow caller
to set the key of the value being stored.
3) removed old targets for rappture_interface.o and rappture_fortran.o
from makefile
4) renamed matlab and octave binding functions names to match the module
they came from.
5) adjusted matlab/octave example in examples/app_fermi/matlab
6) added matlab and octave search paths environment variables to
gui/apps/rappture

File size: 3.4 KB
Line 
1/*
2 * ----------------------------------------------------------------------
3 *  INTERFACE: Octave Rappture Library Source
4 *
5 *    [err] = rpLibPutString(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] = rpLibPutString (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 (rpLibPutString, args, ,
33"-*- texinfo -*-\n\
34[err] = rpLibPutString(@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 = "rpLibPutString";
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    std::string value = "";
56    std::string id    = "";
57    int append        = 0;
58    RpLibrary* lib    = NULL;
59
60    if (nargin == 4) {
61
62        if ( args(0).is_real_scalar() &&
63             args(1).is_string()      &&
64             args(2).is_string()      &&
65             args(3).is_real_scalar()   ) {
66
67            libHandle = args(0).int_value ();
68            path      = args(1).string_value ();
69            value     = args(2).string_value ();
70            append    = args(3).int_value ();
71
72            /* Call the C subroutine. */
73            // the only input that has restrictions is libHandle
74            // all other inputs may be empty strings or any integer value
75            if ( (libHandle >= 0) ) {
76
77                lib = getObject_Lib(libHandle);
78                if (lib) {
79                    lib->put(path,value,id,append);
80                    err = 0;
81                }
82                else {
83                    // lib is NULL, not found in dictionary
84                }
85            }
86            else {
87                // libHandle is negative
88                print_usage (who.c_str());
89            }
90        }
91        else {
92            // wrong argument types
93            print_usage (who.c_str());
94        }
95    }
96    else {
97        // wrong number of arguments
98        print_usage (who.c_str());
99    }
100
101    retval(0) = err;
102    return retval;
103}
Note: See TracBrowser for help on using the repository browser.