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



181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
# File 'ext/soup/soup.c', line 181

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



142
143
144
145
146
147
148
149
150
151
152
# File 'ext/soup/soup.c', line 142

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



163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# File 'ext/soup/soup.c', line 163

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



125
126
127
128
129
130
131
132
# File 'ext/soup/soup.c', line 125

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

#inspectObject



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'ext/soup/soup.c', line 106

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



133
134
135
136
137
138
139
140
# File 'ext/soup/soup.c', line 133

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

#to_iObject



154
155
156
157
158
159
160
161
# File 'ext/soup/soup.c', line 154

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

#to_sObject



125
126
127
128
129
130
131
132
# File 'ext/soup/soup.c', line 125

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



125
126
127
128
129
130
131
132
# File 'ext/soup/soup.c', line 125

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



197
198
199
200
201
202
203
204
205
206
207
208
209
210
# File 'ext/soup/soup.c', line 197

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, "", "");
}