1 /*
2 * anm-obj.cc --
3 *
4 * FIXME: This file needs a description here.
5 *
6 * Copyright (c) 1997-2002 The Regents of the University of California.
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions are met:
11 *
12 * A. Redistributions of source code must retain the above copyright notice,
13 * this list of conditions and the following disclaimer.
14 * B. Redistributions in binary form must reproduce the above copyright notice,
15 * this list of conditions and the following disclaimer in the documentation
16 * and/or other materials provided with the distribution.
17 * C. Neither the names of the copyright holders nor the names of its
18 * contributors may be used to endorse or promote products derived from this
19 * software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
22 * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 * POSSIBILITY OF SUCH DAMAGE.
32 */
33
34 #ifndef MASH_ANM_OBJ_CC
35 #define MASH_ANM_OBJ_CC
36
37 #ifndef lint
38 static char *rcsid = "@(#) $Header: /usr/mash/src/repository/mash/mash-1/atobj/anm-obj.cc,v 1.5 2002/02/03 03:10:21 lim Exp $";
39 #ifndef USE
40 #define USE(x)
41 #endif
42 USE(rcsid);
43 #endif
44
45 #include "tclcl.h"
46 #include "float.h"
47
48 class AnmObj : public TclObject {
49
50 public:
51 AnmObj(double eId, double sT = 0, double eT=DBL_MAX)
52 : eId_(eId), sT_(sT), eT_(eT) {
53 isStatic_ = (eT == DBL_MAX) ? 1 : 0;
54 bind("eId_", &eId_);
55 bind("sT_", &sT_);
56 bind("eT_", &eT_);
57 Tcl::instance().evalf("%s set eId_ %g", name(), eId_);
58 Tcl::instance().evalf("%s set sT_ %g", name(), sT_);
59 Tcl::instance().evalf("%s set eT_ %g", name(), eT_);
60 }
61 ~AnmObj() { fprintf(stderr, "~anmObj %s\n", name()); }
62 virtual int command(int argc, const char*const* argv);
63 private:
64 double eId_, sT_, eT_;
65 int isStatic_;
66 };
67
68 const int cArgStart = 4;
69 static class AnmObjClass : public TclClass {
70 public:
71 AnmObjClass() : TclClass("AnmObj") {
72 }
73 TclObject* create(int argc, const char*const* argv) {
74 double eId, sT, eT;
75 if (argc==cArgStart + 1) {
76 sscanf(argv[cArgStart], "%lg", &eId);
77 return (new AnmObj(eId));
78 } else if (argc==cArgStart + 2) {
79 sscanf(argv[cArgStart], "%lg", &eId);
80 sscanf(argv[cArgStart+1], "%lg", &sT);
81 return (new AnmObj(eId, sT));
82 } else if (argc==cArgStart + 3) {
83 sscanf(argv[cArgStart],"%lg", &eId);
84 sscanf(argv[cArgStart+1], "%lg", &sT);
85 sscanf(argv[cArgStart+2], "%lg", &eT);
86 return (new AnmObj(eId, sT, eT));
87 } else {
88 return (TclObject *) NULL;
89 }
90 }
91 } AnmObjClass;
92
93 int AnmObj::command(int argc, const char*const* argv)
94 {
95 Tcl& tcl = Tcl::instance();
96 if (argc==2) {
97 if (!strcmp(argv[1],"isStatic")) {
98 tcl.resultf("%d", isStatic_);
99 return TCL_OK;
100 }
101 }
102 return TCL_ERROR;
103 }
104
105
106 #endif /* #ifdef MASH_ANM_OBJ_CC */
107
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.