# File lib/cstruct/cstruct.rb, line 405
def CStruct.union symbol,&block
        union_super  = self.ancestors[1]
        union_class = Class.new(union_super) do
        def self.change_to_union #:nodoc:
            @fields.each_key  { |symbol| @fields[symbol].offset = 0 }

            max_field_size = @fields.values.inject(0)do |max,field| 
              dimension = field.dimension
              dimension_product = 1
        if dimension.is_a? Array
                dimension_product = dimension.inject(1){|m,d| m *= d }
        end       
              field_size = field.size* dimension_product
              max = (field_size> max ? field_size : max)
            end
            @options[:layout_size] = max_field_size
          end
        end    
    union_class.instance_eval(&block) 
    union_class.instance_eval{change_to_union}
    structfield symbol,union_class,union_class.size
end