"Bit field" Generator

 

Da es echt mühselig sein kann ein 64 Bit field von Hand zu schreiben, habe ich ein kleines Script geschrieben welches dem ganzen getippe abhilft. Füge für die Variable len die gewünschte Länge des Bit fields ein. Mit der Variable max_bit_len kann die maximale Bit field länge eingestellt werden (!!!bis 64 bit getestet!!!).  Das gewünschte Bit field wird als "bitfieldgenerator.h" im entsprechenden Projektordner generiert.

 

#include <iostream>
#include <fstream>
using namespace std;

#define len         16
#define max_bit_len 64

#define calc(b, l) ((int)(((double)l/(double)b)+(1-(1/((double)b*2)))))

int main () {
  ofstream myfile;
  myfile.open ("bitfieldgenerator.h");

  myfile << "typedef union{\n";

  for( long int i = 8; i <= len; i *= 2 ) myfile << "    uint" << i << "_t d_uint" << i << "[" << calc(i, len) << "];\n";

  myfile << "    struct{\n";
  for (long int i = 0; i < len; i++) myfile << "    uint" << len << "_t b" << i << ":1;\n";
  myfile << "    }dc_" << len << "bit;\n";

  myfile << "}dc_union_" << len << "bit;\n";

  myfile.close();
  return 0;
}

 

Viel Spass beim Programmieren.