int main(int argc, char *argv[]) { if(argc != 2) { usage(argv); exit(1); } char *e; size_t L = (int)strtoul(argv[1], &e, 10); if(*e != '\0') { usage(argv); exit(2); } _Complex float *b = new_field(L); _Complex float *x = new_field(L); _Complex float *u = new_links(L); rand_links(L, u); rand_field(L, b); zero_field(L, x); cg(L, x, b, u); free(b); free(x); free(u); return 0; }
int main(int argc, char *argv[]) { if(argc != 4) { usage(argv); exit(1); } char *e; size_t L = (int)strtoul(argv[1], &e, 10); if(*e != '\0') { usage(argv); exit(2); } size_t Sy = (int)strtoul(argv[2], &e, 10); if(*e != '\0') { usage(argv); exit(2); } size_t Sx = (int)strtoul(argv[3], &e, 10); if(*e != '\0') { usage(argv); exit(2); } latparams lp = init_latparams(L, Sy, Sx); field **b = new_field(lp); field **x = new_field(lp); link **g = new_links(lp); rand_links(lp, g); rand_field(lp, b); zero_field(lp, x); cg(lp, x, b, g); del_field(b); del_field(x); del_links(g); return 0; }
void UnionMetaClass::initialize( const ObjectWrapper &obj, InputStream* inputStream ) const { Address address = obj.get_address(); kernel_assert(obj.get_meta_class() == this); // debugit("initializing union ",address); AggregateWrapper agg_obj(address, this); AggregateMetaClass::initialize( obj, inputStream ); int index = get_tag_num( address ); if (index < 0) zero_field(address); else { FieldDescription* field_description = (*_union_fields)[ index ]; ObjectWrapper field = field_description->build_object(agg_obj); //Address instance_address = (Address)( ( (Byte*)address ) + field_description->offset ); field.initialize(inputStream); // field_description->get_meta_class()->initialize( field.get_address() ,inputStream ); } }
void UnionMetaClass::read( const ObjectWrapper &obj, InputStream* inputStream ) const { Address instance = obj.get_address(); kernel_assert(obj.get_meta_class() == this); AggregateWrapper agg_obj(instance, this); AggregateMetaClass::read( obj, inputStream ); int index; if ( _tag_offset != -1 ) { index = *(int *) ((Byte*)instance + _tag_offset); } else { index = inputStream->read_unsigned_int(); } if ( index >= 0 ) { FieldDescription* field_description = (*_union_fields)[ index ]; ObjectWrapper field = field_description->build_object(agg_obj); inputStream->read( field, false ); } else { // works for now as only Union is a Union of pointers zero_field(instance); } }