view tests/mini/ptrarith.d @ 737:041c1596d217

Removed warnings on ignored aligns. Only do aligment on packed structs, align(1) struct Packed { ... } Changed the way struct/class fields are added, first small part of cleaning up these... Make struct/class/union fields aware of any anonymous struct/union they might be part of, not yet really useful, but part of getting better union support.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Tue, 28 Oct 2008 15:41:09 +0100
parents 1bb99290e03a
children
line wrap: on
line source

extern(C) int printf(char*, ...);

void main()
{
    printf("Pointer arithmetic test\n");
    int* p;
    printf("0x%x\n", p);
    assert(p++ is null);
    assert(cast(size_t)p == 4);
    printf("0x%x\n", p);
    p--;
    assert(p is null);
    printf("0x%x\n", p);
    int d = 4;
    p+=d;
    printf("0x%x\n", p);
    assert(cast(size_t)p == 16);
    d = 2;
    p+=d;
    printf("0x%x\n", p);
    assert(cast(size_t)p == 0x18);
    d = 6;
    p-=d;
    printf("0x%x\n", p);
    assert(p is null);
    printf("  SUCCESS\n");
}

void fill_byte_array(ubyte* a, size_t n, ubyte v)
{
    auto p = a;
    auto end = a+n;
    while (p !is end)
        *p++ = v;
}