/[svn]/gigedit/trunk/src/gigedit/dimregionedit.h
ViewVC logotype

Diff of /gigedit/trunk/src/gigedit/dimregionedit.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3449 by schoenebeck, Sun Dec 23 23:06:56 2018 UTC revision 3458 by persson, Thu Jan 31 18:43:09 2019 UTC
# Line 1  Line 1 
1  /*                                                         -*- c++ -*-  /*                                                         -*- c++ -*-
2   * Copyright (C) 2006-2017 Andreas Persson   * Copyright (C) 2006-2019 Andreas Persson
3   *   *
4   * This program is free software; you can redistribute it and/or   * This program is free software; you can redistribute it and/or
5   * modify it under the terms of the GNU General Public License as   * modify it under the terms of the GNU General Public License as
# Line 292  protected: Line 292  protected:
292    
293      int update_model;      int update_model;
294    
     /**  
      * Workaround for the circumstance that C++ does not allow to cast to  
      * member pointers.  
      */  
     template<typename classT, typename memberT>  
     union ClassMemberPtr {  
         memberT classT::*pmember;  
         void* pvoid;  
   
         ClassMemberPtr(size_t s) : pvoid((void*)s) {}  
         ClassMemberPtr(void* p) : pvoid(p) {}  
     };  
   
295      // connect a widget to a setter function in DimRegionEdit      // connect a widget to a setter function in DimRegionEdit
296      template<typename C, typename T>      template<typename C, typename T>
297      void connect(C& widget,      void connect(C& widget,
# Line 320  protected: Line 307  protected:
307                        sigc::bind(sigc::mem_fun(&DimRegionEdit::set_member<T>), member));                        sigc::bind(sigc::mem_fun(&DimRegionEdit::set_member<T>), member));
308      }      }
309    
310        // connect a widget to a member of a struct member in gig::DimensionRegion
311        template<typename C, typename T, typename S>
312        void connect(C& widget, S gig::DimensionRegion::* member, T S::* member2) {
313            connect<C, T>(widget,
314                          sigc::bind(sigc::mem_fun(&DimRegionEdit::set_member<T, S>), member, member2));
315        }
316    
317      // connect a widget to a setter function in gig::DimensionRegion      // connect a widget to a setter function in gig::DimensionRegion
318      template<typename C, typename T>      template<typename C, typename T>
319      void connect(C& widget,      void connect(C& widget,
# Line 359  protected: Line 353  protected:
353          d->*member = value;          d->*member = value;
354      }      }
355    
356        // set a value of a member of a struct member variable in the given dimregion
357        template<typename T, typename S>
358        void set_member(gig::DimensionRegion* d, T value,
359                        S gig::DimensionRegion::* member, T S::* member2) {
360            d->*member.*member2 = value;
361        }
362    
363      // setters for specific dimregion parameters      // setters for specific dimregion parameters
364    
365      void set_UnityNote(gig::DimensionRegion* d, uint8_t value);      void set_UnityNote(gig::DimensionRegion* d, uint8_t value);

Legend:
Removed from v.3449  
changed lines
  Added in v.3458

  ViewVC Help
Powered by ViewVC