1 /*
  2  * This file is autogenerated with bcop:
  3  * The Compiz option code generator
  4  *
  5  * This program is distributed in the hope that it will be useful,
  6  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  7  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  8  * GNU General Public License for more details.
  9  *
 10  */
 11 
 12 
 13 #include <core/core.h>
 14 
 15 #include "snap_options.h"
 16 
 17 SnapOptions::SnapOptions (bool init /* = true */) :
 18     mOptions (SnapOptions::OptionNum),
 19     mNotify (SnapOptions::OptionNum)
 20 {
Condition "init", taking false branch
 21     if (init)
 22         initOptions ();
CID 12561 - UNINIT_CTOR
Non-static class member "mAvoidSnapMask" is not initialized in this constructor nor in any functions that it calls.
Non-static class member "mSnapTypeMask" is not initialized in this constructor nor in any functions that it calls.
Non-static class member "mEdgesCategoriesMask" is not initialized in this constructor nor in any functions that it calls.
 23 }
 24 
 25 void
 26 SnapOptions::initOptions ()
 27 {
 28     CompOption::Value::Vector list;
 29     CompOption::Value value;
 30 
 31     // avoid_snap
 32     mOptions[SnapOptions::AvoidSnap].setName ("avoid_snap", CompOption::TypeList);
 33     mOptions[SnapOptions::AvoidSnap].rest ().set (0, 3);
 34     list.clear ();
 35     value.set((int) 0);
 36     list.push_back (value);
 37     mOptions[SnapOptions::AvoidSnap].value().set (CompOption::TypeInt, list);
 38 
 39     // snap_type
 40     mOptions[SnapOptions::SnapType].setName ("snap_type", CompOption::TypeList);
 41     mOptions[SnapOptions::SnapType].rest ().set (0, 1);
 42     list.clear ();
 43     value.set((int) 0);
 44     list.push_back (value);
 45     mOptions[SnapOptions::SnapType].value().set (CompOption::TypeInt, list);
 46 
 47     // edges_categories
 48     mOptions[SnapOptions::EdgesCategories].setName ("edges_categories", CompOption::TypeList);
 49     mOptions[SnapOptions::EdgesCategories].rest ().set (0, 1);
 50     list.clear ();
 51     value.set((int) 0);
 52     list.push_back (value);
 53     mOptions[SnapOptions::EdgesCategories].value().set (CompOption::TypeInt, list);
 54 
 55     // resistance_distance
 56     mOptions[SnapOptions::ResistanceDistance].setName ("resistance_distance", CompOption::TypeInt);
 57     mOptions[SnapOptions::ResistanceDistance].rest ().set (1, 100);
 58     mOptions[SnapOptions::ResistanceDistance].value().set((int) 30);
 59 
 60     // attraction_distance
 61     mOptions[SnapOptions::AttractionDistance].setName ("attraction_distance", CompOption::TypeInt);
 62     mOptions[SnapOptions::AttractionDistance].rest ().set (1, 100);
 63     mOptions[SnapOptions::AttractionDistance].value().set((int) 20);
 64 
 65     mAvoidSnapMask = 0;
 66     foreach (CompOption::Value &val, mOptions[SnapOptions::AvoidSnap].value ().list ())
 67         mAvoidSnapMask |= (1 << val.i ());
 68 
 69     mSnapTypeMask = 0;
 70     foreach (CompOption::Value &val, mOptions[SnapOptions::SnapType].value ().list ())
 71         mSnapTypeMask |= (1 << val.i ());
 72 
 73     mEdgesCategoriesMask = 0;
 74     foreach (CompOption::Value &val, mOptions[SnapOptions::EdgesCategories].value ().list ())
 75         mEdgesCategoriesMask |= (1 << val.i ());
 76 
 77 }
 78 
 79 SnapOptions::~SnapOptions ()
 80 {
 81 }
 82 
 83 
 84 CompOption::Vector &
 85 SnapOptions::getOptions ()
 86 {
 87     return mOptions;
 88 }
 89 
 90 bool
 91 SnapOptions::setOption (const CompString &name, CompOption::Value &value)
 92 {
 93     CompOption   *o;
 94     unsigned int index;
 95 
 96     o = CompOption::findOption (mOptions, name, &index);
 97 
 98     if (!o)
 99         return false;
100 
101     switch (index)
102     {
103         case SnapOptions::AvoidSnap:
104             if (o->set (value))
105             {
106                 mAvoidSnapMask = 0;
107                 foreach (CompOption::Value &val, o->value ().list ())
108                     mAvoidSnapMask |= (1 << val.i ());
109                 if (!mNotify[SnapOptions::AvoidSnap].empty ())
110                     mNotify[SnapOptions::AvoidSnap] (o, SnapOptions::AvoidSnap);
111                 return true;
112             }
113             break;
114         case SnapOptions::SnapType:
115             if (o->set (value))
116             {
117                 mSnapTypeMask = 0;
118                 foreach (CompOption::Value &val, o->value ().list ())
119                     mSnapTypeMask |= (1 << val.i ());
120                 if (!mNotify[SnapOptions::SnapType].empty ())
121                     mNotify[SnapOptions::SnapType] (o, SnapOptions::SnapType);
122                 return true;
123             }
124             break;
125         case SnapOptions::EdgesCategories:
126             if (o->set (value))
127             {
128                 mEdgesCategoriesMask = 0;
129                 foreach (CompOption::Value &val, o->value ().list ())
130                     mEdgesCategoriesMask |= (1 << val.i ());
131                 if (!mNotify[SnapOptions::EdgesCategories].empty ())
132                     mNotify[SnapOptions::EdgesCategories] (o, SnapOptions::EdgesCategories);
133                 return true;
134             }
135             break;
136         case SnapOptions::ResistanceDistance:
137             if (o->set (value))
138             {
139                 if (!mNotify[SnapOptions::ResistanceDistance].empty ())
140                     mNotify[SnapOptions::ResistanceDistance] (o, SnapOptions::ResistanceDistance);
141                 return true;
142             }
143             break;
144         case SnapOptions::AttractionDistance:
145             if (o->set (value))
146             {
147                 if (!mNotify[SnapOptions::AttractionDistance].empty ())
148                     mNotify[SnapOptions::AttractionDistance] (o, SnapOptions::AttractionDistance);
149                 return true;
150             }
151             break;
152         default:
153             break;
154     }
155     return false;
156 
157 }