Example #1
0
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;
}
Example #2
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;
}
Example #3
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 );
    }
}
Example #4
0
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);
  }
}