Class: Flags

Inherits:
Object
  • Object
show all
Defined in:
ext/soup/soup.c

Direct Known Subclasses

Soup::MessageFlags

Instance Method Summary collapse

Instance Method Details

#&(other) ⇒ Object



176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# File 'ext/soup/soup.c', line 176

static VALUE rubber_flags_and(VALUE value, VALUE other)
{
  FlagsData *data = NULL;
  int original = 0;
  int other_num = 0;
  
  Data_Get_Struct(value, FlagsData, data);

  original = data->value;

  other_num = flags_value_to_int(value, CLASS_OF(value));
  
//  return INT2NUM(original & other_num);
  return make_flags_value(CLASS_OF(value), original & other_num, "", "");
}

#<=>(other) ⇒ Object



137
138
139
140
141
142
143
144
145
146
147
# File 'ext/soup/soup.c', line 137

static VALUE rubber_flags_cmp(VALUE value, VALUE other)
{
  VALUE a,b;
  a = rb_funcall(value, rb_intern("to_i"), 0);
  b = rb_funcall(other, rb_intern("to_i"), 0);
#ifdef RB_NUM_COERCE_FUNCS_NEED_OPID
  return rb_num_coerce_cmp(a, b, rb_intern("=="));
#else
  return rb_num_coerce_cmp(a, b);
#endif
}

#coerce(other) ⇒ Object



158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# File 'ext/soup/soup.c', line 158

static VALUE rubber_flags_coerce(VALUE value, VALUE other)
{
  FlagsData *data = NULL;
  
  Data_Get_Struct(value, FlagsData, data);
  
  switch(TYPE(other))
  {
  case T_FIXNUM:
  case T_BIGNUM:
    return INT2FIX(data->value);
  case T_FLOAT:
    return Qnil;
  default:
    return Qnil;
  }
}

#fullnameObject



120
121
122
123
124
125
126
127
# File 'ext/soup/soup.c', line 120

static VALUE rubber_flags_to_s(VALUE value)
{
  FlagsData *data = NULL;
  
  Data_Get_Struct(value, FlagsData, data);
  
  return rb_str_new2(data->fullname);
}

#inspectObject



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'ext/soup/soup.c', line 101

static VALUE rubber_flags_inspect(VALUE value)
{
  FlagsData *data = NULL;
  volatile VALUE str = rb_str_new("#<", 2);
  char number[16] = ""; 
  
  Data_Get_Struct(value, FlagsData, data);
  
  rb_str_cat2(str, rb_obj_classname(value));
  rb_str_cat2(str, " - ");
  rb_str_cat2(str, data->name);
  rb_str_cat2(str, "(");
  sprintf(number, "%i", data->value);
  rb_str_cat2(str, number);
  rb_str_cat2(str, ")>");
  
  return str;
}

#nameObject



128
129
130
131
132
133
134
135
# File 'ext/soup/soup.c', line 128

static VALUE rubber_flags_name(VALUE value)
{
  FlagsData *data = NULL;
  
  Data_Get_Struct(value, FlagsData, data);
  
  return rb_str_new2(data->name);
}

#to_iObject



149
150
151
152
153
154
155
156
# File 'ext/soup/soup.c', line 149

static VALUE rubber_flags_to_i(VALUE value)
{
  FlagsData *data = NULL;
  
  Data_Get_Struct(value, FlagsData, data);
  
  return INT2FIX(data->value);
}

#to_sObject



120
121
122
123
124
125
126
127
# File 'ext/soup/soup.c', line 120

static VALUE rubber_flags_to_s(VALUE value)
{
  FlagsData *data = NULL;
  
  Data_Get_Struct(value, FlagsData, data);
  
  return rb_str_new2(data->fullname);
}

#to_strObject



120
121
122
123
124
125
126
127
# File 'ext/soup/soup.c', line 120

static VALUE rubber_flags_to_s(VALUE value)
{
  FlagsData *data = NULL;
  
  Data_Get_Struct(value, FlagsData, data);
  
  return rb_str_new2(data->fullname);
}

#|(other) ⇒ Object



192
193
194
195
196
197
198
199
200
201
202
203
204
205
# File 'ext/soup/soup.c', line 192

static VALUE rubber_flags_or(VALUE value, VALUE other)
{
  FlagsData *data = NULL;
  int original = 0;
  int other_num = 0;
  
  Data_Get_Struct(value, FlagsData, data);

  original = data->value;

  other_num = flags_value_to_int(value, CLASS_OF(value));
  
  return make_flags_value(CLASS_OF(value), original | other_num, "", "");
}