~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sys_var.h

  • Committer: Brian Aker
  • Date: 2010-11-06 15:43:10 UTC
  • mfrom: (1908.1.1 merge)
  • Revision ID: brian@tangent.org-20101106154310-g1jpjzwbc53pfc4f
Filesort encapsulation, plus modification to copy contructor

Show diffs side-by-side

added added

removed removed

Lines of Context:
94
94
  struct option *option_limits; /**< Updated by by sys_var_init() */
95
95
  bool m_allow_empty_value; /**< Does variable allow an empty value? */
96
96
public:
97
 
  sys_var(const std::string &name_arg, sys_after_update_func func= NULL)
 
97
  sys_var(const std::string name_arg, sys_after_update_func func= NULL)
98
98
    :
99
99
    name(name_arg),
100
100
    after_update(func),
101
 
    option_limits(NULL),
102
101
    m_allow_empty_value(true)
103
102
  {}
104
103
  virtual ~sys_var() {}
229
228
class sys_var_uint64_t_ptr :public sys_var
230
229
{
231
230
  uint64_t *value;
232
 
  const uint64_t default_value;
233
 
  bool have_default_value;
234
231
public:
235
 
  sys_var_uint64_t_ptr(const char *name_arg, uint64_t *value_ptr_arg) :
236
 
    sys_var(name_arg),
237
 
    value(value_ptr_arg),
238
 
    default_value(0),
239
 
    have_default_value(false)
240
 
  {  }
241
 
 
242
 
  sys_var_uint64_t_ptr(const char *name_arg,
243
 
                       uint64_t *value_ptr_arg,
244
 
                       const uint64_t default_value_in) :
245
 
    sys_var(name_arg),
246
 
    value(value_ptr_arg),
247
 
    default_value(default_value_in),
248
 
    have_default_value(true)
249
 
  {  }
250
 
 
251
 
  sys_var_uint64_t_ptr(const char *name_arg,
252
 
                       uint64_t *value_ptr_arg,
253
 
                       sys_after_update_func func) :
254
 
    sys_var(name_arg,func),
255
 
    value(value_ptr_arg),
256
 
    default_value(0),
257
 
    have_default_value(false)
258
 
  {  }
259
 
 
260
 
  sys_var_uint64_t_ptr(const char *name_arg,
261
 
                       uint64_t *value_ptr_arg,
262
 
                       sys_after_update_func func,
263
 
                       const uint64_t default_value_in) :
264
 
    sys_var(name_arg,func),
265
 
    value(value_ptr_arg),
266
 
    default_value(default_value_in),
267
 
    have_default_value(true)
268
 
  {  }
269
 
 
 
232
  sys_var_uint64_t_ptr(const char *name_arg, uint64_t *value_ptr_arg)
 
233
    :sys_var(name_arg),value(value_ptr_arg)
 
234
  {  }
 
235
  sys_var_uint64_t_ptr(const char *name_arg, uint64_t *value_ptr_arg,
 
236
                       sys_after_update_func func)
 
237
    :sys_var(name_arg,func), value(value_ptr_arg)
 
238
  {  }
270
239
  bool update(Session *session, set_var *var);
271
240
  void set_default(Session *session, sql_var_t type);
272
 
  virtual bool check_default(sql_var_t)
273
 
  {
274
 
    return (not have_default_value) && option_limits == 0;
275
 
  }
276
241
  SHOW_TYPE show_type() { return SHOW_LONGLONG; }
277
242
  unsigned char *value_ptr(Session *, sql_var_t,
278
243
                           const LEX_STRING *)
301
266
{
302
267
public:
303
268
  bool *value;
304
 
  sys_var_bool_ptr(const std::string &name_arg, bool *value_arg,
305
 
                   sys_after_update_func func= NULL) :
306
 
    sys_var(name_arg, func), value(value_arg)
307
 
  { }
 
269
  sys_var_bool_ptr(const char *name_arg, bool *value_arg)
 
270
    :sys_var(name_arg),value(value_arg)
 
271
  {  }
308
272
  bool check(Session *session, set_var *var)
309
273
  {
310
274
    return check_enum(session, var, &bool_typelib);
519
483
  }
520
484
};
521
485
 
522
 
class sys_var_std_string :
523
 
  public sys_var
524
 
{
525
 
  std::string &value;
526
 
  sys_check_func check_func;
527
 
  sys_update_func update_func;
528
 
  sys_set_default_func set_default_func;
529
 
public:
530
 
  sys_var_std_string(const std::string &name_arg,
531
 
                     std::string &value_arg,
532
 
                     sys_check_func check_func_arg= NULL,
533
 
                     sys_update_func update_func_arg= NULL) :
534
 
    sys_var(name_arg),
535
 
    value(value_arg),
536
 
    check_func(check_func_arg),
537
 
    update_func(update_func_arg)
538
 
  {  }
539
 
 
540
 
  inline void set(char *val_in)
541
 
  {
542
 
    value= val_in; 
543
 
  }
544
 
 
545
 
  void set_check_func(sys_check_func check_func_arg= NULL)
546
 
  {
547
 
    check_func= check_func_arg;
548
 
  }
549
 
 
550
 
  void set_update_func(sys_update_func update_func_arg= NULL)
551
 
  {
552
 
    update_func= update_func_arg;
553
 
  }
554
 
 
555
 
  bool check(Session *session, set_var *var);
556
 
    
557
 
  bool update(Session *session, set_var *var)
558
 
  {
559
 
    if (update_func != NULL)
560
 
    {
561
 
      return (*update_func)(session, var);
562
 
    }
563
 
    return false;
564
 
  }
565
 
  SHOW_TYPE show_type() { return SHOW_CHAR; }
566
 
  unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
567
 
  {
568
 
    return (unsigned char*)(value.c_str());
569
 
  }
570
 
  bool check_update_type(Item_result type)
571
 
  {
572
 
    return type != STRING_RESULT;               /* Only accept strings */
573
 
  }
574
 
  bool check_default(sql_var_t)
575
 
  { return true; }
576
 
  bool is_readonly() const { return false; }
577
 
};
578
 
 
579
486
class sys_var_const_string :
580
487
  public sys_var
581
488
{