Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <errno.h>
- #include <inttypes.h>
- char* get_file_contents(const char* filename)
- {
- FILE *fp = fopen(filename, "rb");
- if (fp)
- {
- fseek(fp, 0, SEEK_END);
- int count = ftell(fp);
- char* contents = new char[count];
- rewind(fp);
- fread(contents, 1, count, fp);
- fclose(fp);
- return contents;
- }
- throw errno;
- }
- #define READA(name, type, size) \
- type name[size]; \
- read_##type(name, size); \
- printf(#name " = "); \
- dump(name, size); \
- puts("");
- #define READ(name, type) \
- type name; \
- read_##type(&name, 1); \
- printf(#name " = "); \
- dump(name); \
- puts("");
- typedef int32_t Int32;
- struct reader
- {
- char* data;
- int at = 0;
- void read_Int32(int32_t* out, int count)
- {
- memcpy(out, &data[at], 4);
- at += 4;
- }
- void read_char(char* out, int count)
- {
- memcpy(out, &data[at], count);
- at += count;
- }
- void dump(int32_t v)
- {
- printf("%d", v);
- }
- void dump(char* v, int count)
- {
- for (int i = 0; i < count; i++)
- fputc(v[i], stdout);
- }
- };
- struct myreader : reader
- {
- myreader()
- {
- data = get_file_contents("loop.wav");
- READA(magic, char, 4);
- READ(size, Int32);
- }
- };
- int main()
- {
- myreader();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement