Listing 2: Definition of SynesisStd::LongToStringA
// Listing 2: Definition of SynesisStd::LongToStringA

PCAChar LongToStringA(Long value)
{
  const size_t  I2S_LIMIT = 0x7f;
  TssDatum      datum   = TssStore_GetThreadDatum(sg_hstoreA);
  PAChar        buffer;

  if(datum == 0)
  {
    datum = SyCastRaw(TssDatum, Mem_Alloc_NoTrack(sizeof(AChar) * (1 + I2S_LIMIT)));

    if(datum == 0)
    {
      SyTraceA1("Allocation failed (%d bytes) in LongToStringA()\n", 1 + I2S_LIMIT);

      return "";
    }

    TssStore_SetThreadDatum(sg_hstoreA, datum, NULL);
  }

  buffer = SyCastRaw(PAChar, datum);

  return stlsoft::integer_to_string(buffer, 1 + I2S_LIMIT, value);
}