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



172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# File 'ext/soup/soup.c', line 172

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
# 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);
	return rb_num_coerce_cmp(a, b);
}

#coerce(other) ⇒ Object



154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'ext/soup/soup.c', line 154

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



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

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



188
189
190
191
192
193
194
195
196
197
198
199
200
201
# File 'ext/soup/soup.c', line 188

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