static void
WriteIndex(unsigned int *pnpos, const unsigned short int aus[64], const int fGammon, FILE * output)
{

    unsigned int iIdx, nNonZero;

    /* write offset */

    putc(*pnpos & 0xFF, output);
    putc((*pnpos >> 8) & 0xFF, output);
    putc((*pnpos >> 16) & 0xFF, output);
    putc((*pnpos >> 24) & 0xFF, output);

    /* write index and number of non-zero elements */

    CalcIndex(aus, &iIdx, &nNonZero);

    putc(nNonZero & 0xFF, output);
    putc(iIdx & 0xFF, output);

    *pnpos += nNonZero;

    /* gammon probs: write index and number of non-zero elements */

    if (fGammon) {
        CalcIndex(aus + 32, &iIdx, &nNonZero);
        putc(nNonZero & 0xFF, output);
        putc(iIdx & 0xFF, output);
        *pnpos += nNonZero;
    }
}
Exemple #2
0
//---------------------------------------------------------------------------
void __fastcall TMillersForm::DirectIndexHEditChange(TObject *Sender)
{
    if(m_bCalcs == true)
    {
     CalcIndex();
    }
}
Exemple #3
0
//---------------------------------------------------------------------------
void __fastcall TMillersForm::OkButtonClick(TObject *Sender)
{
     m_bShowExeption = true;
     if(CalcIndex() == true)
     {
      ModalResult = mrOk;
     }
     m_bShowExeption = false;
}
Exemple #4
0
	// 데이터지움
	bool RemoveData(int index, TYPE** oldData = (TYPE**) NoNeed)
	{
		CalcIndex(index);
		if(Size <= index) return false;
		if(Unit[index]) --Count;
		if(oldData) *oldData = Unit[index];
		else delete Unit[index];
		Unit[index] = nullptr;
		BytesUpdated = false;
		return true;
	}
Exemple #5
0
	// 데이터수정
	bool ModifyData(int index, TYPE* newData = (TYPE*) AutoCreate, TYPE** oldData = (TYPE**) NoNeed)
	{
		CalcIndex(index);
		if(Size <= index) return false;
		if(!Unit[index]) ++Count;
		if(oldData) *oldData = Unit[index];
		else delete Unit[index];
		Unit[index] = (newData)? newData : new TYPE;
		if(!newData && IsTypePointer<TYPE>())
			BxCore::Util::MemSet(Unit[index], 0, sizeof(TYPE));
		BytesUpdated = false;
		return true;
	}
Exemple #6
0
	// 리스트삭제
	void Delete(int index, TYPE** oldData = (TYPE**) NoNeed)
	{
		CalcIndex(index);
		if(Size <= index) return;
		if(Unit[index]) --Count;
		if(oldData) *oldData = Unit[index];
		else delete Unit[index];
		if(index < --Size)
		{
			BxCore::Util::MemCpy(&Unit[index], &Unit[index + 1], sizeof(TYPE*) * (Size - index));
			Unit[index + (Size - index)] = nullptr;
		}
		else Unit[index] = nullptr;
		BytesUpdated = false;
	}
Exemple #7
0
	// 데이터할당
	inline TYPE& operator[](int index)
	{
		CalcIndex(index);
		ValidIndex(index);
		if(!Unit[index])
		{
			Unit[index] = new TYPE;
			if(IsTypePointer<TYPE>())
				BxCore::Util::MemSet(Unit[index], 0, sizeof(TYPE));
			if(Size < index + 1) Size = index + 1;
			++Count;
			BytesUpdated = false;
		}
		return *Unit[index];
	}
static void
WriteOS(const unsigned short int aus[32], const int fCompress, FILE * output)
{

    unsigned int iIdx, nNonZero;
    unsigned int j;

    if (fCompress)
        CalcIndex(aus, &iIdx, &nNonZero);
    else {
        iIdx = 0;
        nNonZero = 32;
    }

    for (j = iIdx; j < iIdx + nNonZero; j++) {
        putc(aus[j] & 0xFF, output);
        putc(aus[j] >> 8, output);
    }

}
Exemple #9
0
	// 리스트삽입
	inline TYPE& Insert(int index, TYPE* newData = (TYPE*) AutoCreate)
	{
		CalcIndex(index);
		if(Size <= index)
			ValidIndex(index);
		else
		{
			ValidIndex(Size);
			BxCore::Util::MemCpy(&Unit[index + 1], &Unit[index], sizeof(TYPE*) * (Size - index));
		}
		Unit[index] = (newData)? newData : new TYPE;
		if(!newData && IsTypePointer<TYPE>())
			BxCore::Util::MemSet(Unit[index], 0, sizeof(TYPE));
		if(Size < index + 1)
			Size = index + 1;
		else ++Size;
		++Count;
		BytesUpdated = false;
		return *Unit[index];
	}
Exemple #10
0
	// 데이터접근
	inline TYPE* Access(int index) const
	{
		CalcIndex(index);
		if(Size <= index) return nullptr;
		return Unit[index];
	}