LCOV - code coverage report
Current view: top level - src/utils/foxtools - MFXBaseObject.h (source / functions) Hit Total Coverage
Test: lcov.info Lines: 2 14 14.3 %
Date: 2024-04-27 15:34:54 Functions: 0 7 0.0 %

          Line data    Source code
       1             : /****************************************************************************/
       2             : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
       3             : // Copyright (C) 2004-2024 German Aerospace Center (DLR) and others.
       4             : // This program and the accompanying materials are made available under the
       5             : // terms of the Eclipse Public License 2.0 which is available at
       6             : // https://www.eclipse.org/legal/epl-2.0/
       7             : // This Source Code may also be made available under the following Secondary
       8             : // Licenses when the conditions for such availability set forth in the Eclipse
       9             : // Public License 2.0 are satisfied: GNU General Public License, version 2
      10             : // or later which is available at
      11             : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
      12             : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
      13             : /****************************************************************************/
      14             : /// @file    MFXBaseObject.h
      15             : /// @author  Mathew Robertson
      16             : /// @author  Daniel Krajzewicz
      17             : /// @author  Michael Behrisch
      18             : /// @date    2004-03-19
      19             : ///
      20             : //
      21             : /****************************************************************************/
      22             : #pragma once
      23             : #include <config.h>
      24             : 
      25             : #include <FXHash.h>
      26             : using namespace FX;
      27             : 
      28             : namespace FXEX {
      29             : 
      30             : /**
      31             :  * Define so that all types and all id's can go to a specific function.
      32             :  * This is particularily useful if you just want to forward the event to a target
      33             :  * but not specifically use the onDefault method.
      34             :  *
      35             :  * Note: if FXApp* is not specified, then FXApp::Instance() is used.
      36             :  */
      37             : #define FXMAPALL(func) {MKUINT(MINKEY,MINTYPE),MKUINT(MAXKEY,MAXTYPE),&func}
      38             : 
      39             : /**
      40             :  * Define so that we can use it to 'redirect' all unhandled events, of a specific key/ID
      41             :  */
      42             : #define FXMAPKEY(key,func)  {MKUINT(key,MINTYPE),MKUINT(key,MAXTYPE),&func}
      43             : 
      44             : 
      45             : /**
      46             :  * This is a base class for ojects which can send messages to the application
      47             :  */
      48             : class /* FXAPI // patch by Daniel Krajzewicz 24.02.2004 */
      49             :     MFXBaseObject : public FXObject {
      50           0 :     FXDECLARE(MFXBaseObject)
      51             : 
      52             : protected:
      53             :     /// flags defined are the same as those defined in FXWindow, etc.
      54             :     enum {
      55             :         FLAG_ENABLED  = 0x00000002,   // enabled
      56             :         FLAG_UPDATE   = 0x00000004,   // needs update
      57             :         FLAG_FOCUSED  = 0x00000010,   // has focus
      58             :         FLAG_DIRTY    = 0x00000020,   // dirty
      59             :         FLAG_RECALC   = 0x00000040,   // needs recalculation
      60             :         FLAG_DEFAULT  = 0x00000200,   // set to default
      61             :         FLAG_INITIAL  = 0x00000400,   // set to initial value
      62             :         FLAG_ACTIVE   = 0x00001000,   // active
      63             :         FLAG_CHANGED  = 0x00010000,   // changed
      64             :         FLAG_READONLY = 0x10000000    // read only
      65             :     };
      66             : 
      67             : private:
      68             :     FXApp*        app;             // application pointer
      69             : 
      70             : protected:
      71             :     FXObject*     target;          // application target
      72             :     FXSelector    message;         // application message
      73             :     void*         data;            // user data
      74             :     FXuint        datalen;         // length of user data
      75             :     FXuint        flags;           // state flags
      76             :     FXuint        options;         // option flags
      77             : 
      78             : public:
      79             :     enum {
      80             :         ID_NONE = 0,
      81             :         ID_DELETE = 6,
      82             :         ID_DISABLE,
      83             :         ID_ENABLE,
      84             :         ID_SETVALUE = 17,
      85             :         ID_SETINTVALUE,
      86             :         ID_SETREALVALUE,
      87             :         ID_SETSTRINGVALUE,
      88             :         ID_SETINTRANGE,
      89             :         ID_SETREALRANGE,
      90             :         ID_GETINTVALUE,
      91             :         ID_GETREALVALUE,
      92             :         ID_GETSTRINGVALUE,
      93             :         ID_XML,
      94             :         ID_META,
      95             :         ID_COMMENT,
      96             :         ID_DOCUMENT,
      97             :         ID_TAG,
      98             :         ID_CONTENT,
      99             :         ID_LAST
     100             :     };
     101             : 
     102             : public:
     103             :     long onCmdEnable(FXObject*, FXSelector, void*);
     104             :     long onCmdDisable(FXObject*, FXSelector, void*);
     105             :     long onUpdate(FXObject*, FXSelector, void*);
     106             : 
     107             : public:
     108             :     /// Just supply the target and selector (de-serialisation too)
     109             :     MFXBaseObject(FXObject* tgt = NULL, FXSelector sel = 0);
     110             : 
     111             :     /// Alternnatively, supply the app object as well
     112             :     MFXBaseObject(FXApp* a, FXObject* tgt = NULL, FXSelector sel = 0);
     113             : 
     114             :     /// application pointer
     115             :     FXApp* getApp();
     116             : 
     117             :     /// get the target
     118             :     FXObject* getTarget() {
     119             :         return target;
     120             :     }
     121             : 
     122             :     /// set the target
     123             :     void setTarget(FXObject* tgt) {
     124        7253 :         target = tgt;
     125             :     }
     126             : 
     127             :     /// get the message
     128             :     FXSelector getSelector() {
     129             :         return message;
     130             :     }
     131             : 
     132             :     /// set the selector
     133             :     void setSelector(FXSelector sel) {
     134        7253 :         message = sel;
     135             :     }
     136             : 
     137             :     /// get user data
     138             :     void* getUserData() {
     139             :         return data;
     140             :     }
     141             : 
     142             :     /// set user data
     143             :     void setUserData(void* d) {
     144             :         data = d;
     145             :     }
     146             : 
     147             :     /// get user daat length
     148             :     FXuint getUserDataLen() {
     149             :         return datalen;
     150             :     }
     151             : 
     152             :     /// set the user data length
     153             :     void setUserDataLen(FXuint len) {
     154             :         datalen = len;
     155             :     }
     156             : 
     157             :     /// are we enabled?
     158             :     FXbool isEnabled() {
     159             :         return (flags & FLAG_ENABLED) != 0;
     160             :     }
     161             : 
     162             :     /// enable us
     163           0 :     virtual void enable() {
     164           0 :         flags |= FLAG_ENABLED;
     165           0 :     }
     166             : 
     167             :     /// disable us
     168           0 :     virtual void disable() {
     169           0 :         flags &= ~FLAG_ENABLED;
     170           0 :     }
     171             : 
     172             :     /// are we modifiable
     173           0 :     virtual FXbool isReadonly() {
     174           0 :         return (flags & FLAG_READONLY) != 0;
     175             :     }
     176             : 
     177             :     /// set modifiable mode
     178             :     virtual void setReadonly(FXbool mode = TRUE);
     179             : 
     180             :     /// create resource
     181           0 :     virtual void create() {}
     182             : 
     183             :     /// detach resource
     184           0 :     virtual void detach() {}
     185             : 
     186             :     /// destroy resource
     187           0 :     virtual void destroy() {}
     188             : 
     189             :     /// save object to stream
     190             :     virtual void save(FXStream& store) const;
     191             : 
     192             :     /// load object from stream
     193             :     virtual void load(FXStream& store);
     194             : 
     195             :     /// dtor
     196             :     virtual ~MFXBaseObject();
     197             : };
     198             : 
     199             : } // namespace FXEX

Generated by: LCOV version 1.14