~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Open Mash Cross Reference
mash/atobj/anm-obj.cc

Component: ~ [ mash ] ~ [ apps ] ~ [ gsm ] ~ [ lib ] ~ [ otcl ] ~ [ srm ] ~ [ tcl8.3 ] ~ [ tclcl ] ~ [ tk8.3 ] ~ [ tutorials ] ~

  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 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.