On Monday, 21 October 2013 at 01:48:56 UTC, Walter Bright wrote:
On 10/20/2013 5:59 PM, Jonathan M Davis wrote:
If that paradigm is frequent enough, it might be worth wrapping it in a
struct. Then, you'd probably get something like

StaticArray!(int, 10) tmp(n);
int[] a = tmp[];

which used T[10] if n was 10 or less and allocated T[] otherwise. The
destructor could then deal with freeing the memory.

Sounds like a good idea - and it should fit in with Andrei's nascent allocator design.

Hmmm, it gave me a weird idea...

void smalloc(T)(ushort n, void function(T[]) statement)
{
  if(n <= 256)
  {
    if(n <= 16)
    {
      T[16] buf = void;
      statement(buf[0..n]);
    }
    else
    {
      T[256] buf = void;
      statement(buf[0..n]);
    }
  }
  else
  {
    if(n <= 4096)
    {
      T[4096] buf = void;
      statement(buf[0..n]);
    }
    else
    {
      T[65536] buf = void;
      statement(buf[0..n]);
    }
  }
}

smalloc(256, (int[] buf)
{
});

Reply via email to