Sudoku

Omdat het niet altijd over mountainbike hoeft te gaan...... Zet een boompje op over alles wat NIET met mountainbike te maken heeft maar hou het wel deftig.
Gebruikersavatar
Puzzle
Mountainbiker
Berichten: 178
Lid geworden op: za 19 aug 2006 11:15
Rijdt met: MBK Super Sprint

Bericht door Puzzle »

Code: Selecteer alles

// File: TestProgramma.cp
// Date: 17 December 2006.
// Version: 197 microseconds on PowerMac G3/233 MHz.
//
// Copyright (c) 2006 Cliff Huylebroeck. All Rights Reserved.
//
// Permission to use, copy, modify, and distribute this software
// and its documentation for NON-COMMERCIAL purposes and without
// fee is hereby granted provided that this copyright notice
// appears in all copies.
//
// Cliff Huylebroeck MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
// SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
// a PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Cliff Huylebroeck SHALL NOT
// BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.

#include "TestProgramma.h"

#include "BlockMove.h"
#include "collect.h"
#include "Debug.h"
#include "noErr.h"
#include "ProfilerDump.h"
#include "ProfilerInit.h"
#include "ProfilerTerm.h"
#include "Progressie.h"
#include "RandomGenerator.h"
#include "TestSnelheid.h"
#include "timeBase.h"

#if PROFILE_ALLES
    #pragma profile on
#endif

c_n1 volledigeCijfers[aVakken]=
    {
    8,3,5,9,6,7,2,4,1,
    9,7,4,3,1,2,8,6,5,
    2,6,1,5,4,8,3,9,7,
    3,9,8,2,7,5,6,1,4,
    6,4,7,8,9,1,5,3,2,
    5,1,2,6,3,4,9,7,8,
    4,5,6,7,8,9,1,2,3,
    7,8,9,1,2,3,4,5,6,
    1,2,3,4,5,6,7,8,9
    };

c_n1 streekkrantOpgaveCijfers[]=
    {
    7,0,0,0,0,4,0,0,3,
    2,0,0,0,0,3,4,7,8,
    0,4,3,0,7,1,0,0,0,
    3,2,0,0,0,0,5,4,0,
    0,0,0,0,0,0,0,0,0,
    0,7,6,0,0,0,0,3,1,
    0,0,0,4,8,0,7,1,0,
    6,5,7,2,0,0,0,0,4,
    4,0,0,3,0,0,0,0,2
    };

c_n1 streekkrantOplossingCijfers[]=
    {
    7,9,5,8,2,4,1,6,3,
    2,6,1,5,9,3,4,7,8,
    8,4,3,6,7,1,2,5,9,
    3,2,9,1,6,8,5,4,7,
    1,8,4,7,3,5,9,2,6,
    5,7,6,9,4,2,8,3,1,
    9,3,2,4,8,6,7,1,5,
    6,5,7,2,1,9,3,8,4,
    4,1,8,3,5,7,6,9,2
    };

#if not PROFILE_ALLES
    #pragma profile on
#endif

void VergelijkendeTests()
{
    if (true)
        {
        Kopieer();
        }
    if (true)
        {
        Tel();
        }
    if (true)
        {
        Snelheidstest();
        }
}

#if not PROFILE_ALLES
    #pragma profile off
#endif

void Kopieer()
{
    Puzzel bron;
    Puzzel doel;
    Kopieer_MEET(bron,
                 doel);
}

#if not PROFILE_ALLES
    #pragma profile on
#endif

void Kopieer_MEET(rc_Puzzel bron,
                  r_Puzzel doel)
{
    ::BlockMove(&bron,
                &doel,
                sizeof(Puzzel));
}

#if not PROFILE_ALLES
    #pragma profile off
#endif

void Tel()
{
    Buffer volledig(volledigeCijfers);
    Tel_MEET(volledig);
}

#if not PROFILE_ALLES
    #pragma profile on
#endif

void Tel_MEET(rc_Buffer volledig)
{
    c_bool isOplossing=volledig.IsOplossing();
}

#if not PROFILE_ALLES
    #pragma profile off
#endif

void Snelheidstest()
{
    InitSnelheidstest();
    Snelheidstest_MEET();
}

#if not PROFILE_ALLES
    #pragma profile on
#endif

void Snelheidstest_MEET()
{
    DoeSnelheidstest();
}

#if not PROFILE_ALLES
    #pragma profile off
#endif

bool IsJuistNageteld(rc_Puzzel puzzel)
{
    Buffer uitvoer;
    puzzel.Schrijf(uitvoer);
    c_bool isOpgelost=uitvoer.IsOplossing();
    if (debug)
        {
        window.Schrijf("\pHet is ");
        if (isOpgelost)
            {
            window.Schrijf("\pjuist");
            }
        else
            {
            window.Schrijf("\pverkeerd");
            }
        window.Schrijf("\p opgelost.");
        window.SchrijfLn();
        }
    return isOpgelost;
}

void HerbeginEnDump(rc_Buffer opgave,
                    rc_Buffer mogelijkeOplossing)
{
    if (debug)
        {
        Debug::StartUitvoer();
        window.Schrijf("\pDe opgave is:");
        window.SchrijfLn();
        opgave.Debug_Dump();
        Puzzel dubbel;
        dubbel.LosOp(opgave);
        window.Schrijf("\pEen mogelijke oplossing is:");
        window.SchrijfLn();
        mogelijkeOplossing.Debug_Dump();
        Debug::StopUitvoer();
        }
}

bool LosLegePuzzelOp()
{
    Buffer oplossing(volledigeCijfers);
    Buffer opgave;
    oplossing.Schrap(aVakken,
                     opgave);
    Puzzel puzzel;
    if (!LosLegePuzzelOp_MEET(puzzel,
                              opgave))
        {
        HerbeginEnDump(opgave,
                       oplossing);
        return false;
        }
    if (!IsJuistNageteld(puzzel))
        {
        HerbeginEnDump(opgave,
                       oplossing);
        return false;
        }
    return true;
}

#if not PROFILE_ALLES
    #pragma profile on
#endif

bool LosLegePuzzelOp_MEET(r_Puzzel puzzel,
                          rc_Buffer opgave)
{
    c_bool isOpgelost=puzzel.LosOp(opgave);
    return isOpgelost;
}

#if not PROFILE_ALLES
    #pragma profile off
#endif

bool LosVolledigePuzzelOp()
{
    Buffer oplossing(volledigeCijfers);
    Buffer opgave(volledigeCijfers);
    Puzzel puzzel;
    if (!LosVolledigePuzzelOp_MEET(puzzel,
                                   opgave))
        {
        HerbeginEnDump(opgave,
                       oplossing);
        return false;
        }
    if (!IsJuistNageteld(puzzel))
        {
        HerbeginEnDump(opgave,
                       oplossing);
        return false;
        }
    return true;
}

#if not PROFILE_ALLES
    #pragma profile on
#endif

bool LosVolledigePuzzelOp_MEET(r_Puzzel puzzel,
                               rc_Buffer opgave)
{
    c_bool isOpgelost=puzzel.LosOp(opgave);
    return isOpgelost;
}

#if not PROFILE_ALLES
    #pragma profile off
#endif

bool LosStreekkrantPuzzelOp()
{
    Buffer opgave(streekkrantOpgaveCijfers);
    Buffer oplossing(streekkrantOplossingCijfers);
    Puzzel puzzel;
    if (!LosStreekkrantPuzzelOp_MEET(puzzel,
                                     opgave))
        {
        HerbeginEnDump(opgave,
                       oplossing);
        return false;
        }
    if (!IsJuistNageteld(puzzel))
        {
        HerbeginEnDump(opgave,
                       oplossing);
        return false;
        }
    return true;
}

#if not PROFILE_ALLES
    #pragma profile on
#endif

bool LosStreekkrantPuzzelOp_MEET(r_Puzzel puzzel,
                                 rc_Buffer opgave)
{
    c_bool isOpgelost=puzzel.LosOp(opgave);
    return isOpgelost;
}

#if not PROFILE_ALLES
    #pragma profile off
#endif

bool LosPuzzelsMet32CijfersOp(c_n4 aPuzzels)
{
    if (progressie)
        {
        Progressie::Herbegin();
        }
    c_n1 aIngevuldeVakken=32;
    c_n1 aLegeVakken=aVakken-aIngevuldeVakken;
    for (n4 i=0;i<aPuzzels;i++)
        {
        if (progressie)
            {
            if (Progressie::ErIsEenSecondeVoorbij())
                {
                Progressie::Schrijf(i);
                }
            }
        Buffer oplossing;
        oplossing.MaakRandom();
        Buffer opgave;
        oplossing.Schrap(aLegeVakken,
                         opgave);
        Puzzel puzzel;
        if (!LosPuzzelMet32CijfersOp_MEET(puzzel,
                                          opgave))
            {
            HerbeginEnDump(opgave,
                           oplossing);
            return false;
            }
        if (!IsJuistNageteld(puzzel))
            {
            HerbeginEnDump(opgave,
                           oplossing);
            return false;
            }
        }
    return true;
}

#if not PROFILE_ALLES
    #pragma profile on
#endif

bool LosPuzzelMet32CijfersOp_MEET(r_Puzzel puzzel,
                                  rc_Buffer opgave)
{
    c_bool isOpgelost=puzzel.LosOp(opgave);
    return isOpgelost;
}

bool Puzzeltest()
{
    if (debug)
        {
        Debug::Init();
        }
    Puzzel::Init();
    if (true)
        {
        if (!LosLegePuzzelOp())
            {
            return false;
            }
        }
    if (true)
        {
        if (!LosVolledigePuzzelOp())
            {
            return false;
            }
        }
    if (true)
        {
        if (!LosStreekkrantPuzzelOp())
            {
            return false;
            }
        }
    if (true)
        {
        if (!LosPuzzelsMet32CijfersOp(1000000))
            {
            return false;
            }
        }
    return true;
}

#if not PROFILE_ALLES
    #pragma profile off
#endif

int main()
{
    z2 err=::ProfilerInit(collectDetailed,
                          bestTimeBase,
                          static_cast<z2>(1000),
                          static_cast<z2>(100));
    if (err!=noErr)
        {
        return 0;
        }
    if (progressie)
        {
        Progressie::Init();
        }
    Init_Coordinaten();
    if (true)
        {
        VergelijkendeTests();
        }
    if (true)
        {
        if (!Puzzeltest())
            {
            if (debug)
                {
                window.Schrijf("\pTest is mislukt.");
                window.SchrijfLn();
                }
            }
        }
    err=::ProfilerDump("\p:Profiel:Sudoku profiel");
    if (err!=noErr)
        {
        return 0;
        }
    ::ProfilerTerm();
    return 0;
}
Gebruikersavatar
Puzzle
Mountainbiker
Berichten: 178
Lid geworden op: za 19 aug 2006 11:15
Rijdt met: MBK Super Sprint

Bericht door Puzzle »

Code: Selecteer alles

// File: TestProgramma.h
// Date: 17 December 2006.
// Version: 197 microseconds on PowerMac G3/233 MHz.
//
// Copyright (c) 2006 Cliff Huylebroeck. All Rights Reserved.
//
// Permission to use, copy, modify, and distribute this software
// and its documentation for NON-COMMERCIAL purposes and without
// fee is hereby granted provided that this copyright notice
// appears in all copies.
//
// Cliff Huylebroeck MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
// SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
// A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Cliff Huylebroeck SHALL NOT
// BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.

#pragma once

// opm:
// - nx is een natuurlijk getal van x bytes.
// - zx is een geheel getal van x bytes.
// - c_x is een constante x.
// - p_x is een pointer naar x.
// - r_x is een referentie aan x.
// - meerdere van die beginletters schrijven we aan elkaar,
//   dus pc_x is een pointer naar een constante x enz.
// Vroeger heb ik gezien dat ik hierdoor 21 karakters per lijn heb
// in plaats van 32.
// De tekst is smaller, kan sneller gelezen worden en met kleinere
// oogbewegingen, en is dus minder vermoeiend.
// Er kunnen ook meer windows naast elkaar op het scherm.

#include "n4.h"
#include "Puzzel.h"

void VergelijkendeTests();

void Kopieer();
void Kopieer_MEET(rc_Puzzel bron,
                  r_Puzzel doel);

void Tel();
void Tel_MEET(rc_Buffer volledig);

void Snelheidstest();
void Snelheidstest_MEET();

bool IsJuistNageteld(rc_Puzzel puzzel);
void HerbeginEnDump(rc_Buffer opgave,
                    rc_Buffer mogelijkeOplossing);

// 1. Lege puzzel.
bool LosLegePuzzelOp();
bool LosLegePuzzelOp_MEET(r_Puzzel puzzel,
                          rc_Buffer opgave);

// 2. Volledige puzzel.
bool LosVolledigePuzzelOp();
bool LosVolledigePuzzelOp_MEET(r_Puzzel puzzel,
                               rc_Buffer opgave);

// 3. Streekkrant puzzel.
bool LosStreekkrantPuzzelOp();
bool LosStreekkrantPuzzelOp_MEET(r_Puzzel puzzel,
                                 rc_Buffer opgave);

// 4. Willekeurige puzzels met 32 cijfers.
bool LosPuzzelsMet32CijfersOp(n4 aPuzzels);
bool LosPuzzelMet32CijfersOp_MEET(r_Puzzel puzzel,
                                  rc_Buffer opgave);

bool Puzzeltest();

// opm: "z4 main" is niet ANSI strict volgens mijn compiler.
int main();
Gebruikersavatar
Puzzle
Mountainbiker
Berichten: 178
Lid geworden op: za 19 aug 2006 11:15
Rijdt met: MBK Super Sprint

Bericht door Puzzle »

Code: Selecteer alles

// File: TestSnelheid.cp
// Date: 8 Januari 2007.
// Version: 197 microseconds on PowerMac G3/233 MHz.
//
// Copyright (c) 2006 Cliff Huylebroeck. All Rights Reserved.
//
// Permission to use, copy, modify, and distribute this software
// and its documentation for NON-COMMERCIAL purposes and without
// fee is hereby granted provided that this copyright notice
// appears in all copies.
//
// Cliff Huylebroeck MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
// SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
// a PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Cliff Huylebroeck SHALL NOT
// BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.

#include "TestSnelheid.h"

#include "Coordinaten.h"

n2 test_cijferBit[aCijferBit];
TestVak test_vakken[aVakken];
TestLijst test_rij[puzzelGrootte];
TestLijst test_kolom[puzzelGrootte];
TestLijst test_kot[puzzelGrootte];

#if PROFILE_ALLES
    #pragma profile on
#endif

void InitSnelheidstestVak(r_TestVak vak)
{
    vak.mogelijk=maxCombinaties;
    vak.geschrapt=0;
    vak.aantal=puzzelGrootte;
    vak.gekozen=0;
}

void InitSnelheidstestLijst(r_TestLijst lijst)
{
    lijst.mogelijk=maxCombinaties;
    lijst.geschrapt=0;
    lijst.aLeeg=puzzelGrootte;
    for (n1 cijfer=1;cijfer<=puzzelGrootte;cijfer++)
        {
        lijst.aantallen[cijfer]=puzzelGrootte;
        }
}

void InitSnelheidstest()
{
    for (n1 cijfer=1;cijfer<=puzzelGrootte;cijfer++)
        {
        test_cijferBit[cijfer]=MaakCijferBit(cijfer);
        }
    for (n1 index=0;index<aVakken;index++)
        {
        r_TestVak vak=test_vakken[index];
        InitSnelheidstestVak(vak);
        }
    for (n1 i=0;i<puzzelGrootte;i++)
        {
        InitSnelheidstestLijst(test_rij[i]);
        InitSnelheidstestLijst(test_kolom[i]);
        InitSnelheidstestLijst(test_kot[i]);
        }
}

n1 DoeSnelheidstestSchrap(c_n1 cijfer,
                          r_TestVak vak)
{
    c_n2 cijferBit=test_cijferBit[cijfer];
    vak.mogelijk&=~cijferBit;
    vak.geschrapt|=cijferBit;
    vak.aantal--;
    if (vak.aantal==1)
        {
        vak.gekozen=1;
        return 1;
        }
    return 2;
}

n1 DoeSnelheidstestSchrap(c_n1 cijfer,
                          r_TestLijst lijst)
{
    r_n1 aantal=lijst.aantallen[cijfer];
    aantal--;
    if (aantal==1)
        {
        c_n2 cijferBit=test_cijferBit[cijfer];
        lijst.mogelijk&=~cijferBit;
        lijst.geschrapt|=cijferBit;
        lijst.aLeeg--;
        return 1;
        }
    return 2;
}

void DoeSnelheidstestSchrap(c_n1 index)
{
    r_TestVak vak=test_vakken[index];
    r_Coordinaten c=coordinaten[index];
    r_TestLijst rij=test_rij[c.rij];
    r_TestLijst kolom=test_kolom[c.kolom];
    r_TestLijst kot=test_kot[c.kot];
    for (n1 cijfer=1;cijfer<=puzzelGrootte;cijfer++)
        {
        c_n1 iets1=DoeSnelheidstestSchrap(cijfer,
                                          vak);
        c_n1 iets2=DoeSnelheidstestSchrap(cijfer,
                                          rij);
        c_n1 iets3=DoeSnelheidstestSchrap(cijfer,
                                          kolom);
        c_n1 iets4=DoeSnelheidstestSchrap(cijfer,
                                          kot);
        }
}

void DoeSnelheidstest()
{
    // opm: BESCHRIJVING snelheidstest.
    // We schrappen gewoon elk cijfer in elk vak
    // en elke rij, kolom en kot,
    // we houden de aantallen bij,
    // en we controleren de aantallen.
    for (n1 index=0;index<aVakken;index++)
        {
        DoeSnelheidstestSchrap(index);
        }
}
Gebruikersavatar
Puzzle
Mountainbiker
Berichten: 178
Lid geworden op: za 19 aug 2006 11:15
Rijdt met: MBK Super Sprint

Bericht door Puzzle »

Code: Selecteer alles

// File: TestSnelheid.h
// Date: 8 Januari 2007.
// Version: 197 microseconds on PowerMac G3/233 MHz.
//
// Copyright (c) 2006 Cliff Huylebroeck. All Rights Reserved.
//
// Permission to use, copy, modify, and distribute this software
// and its documentation for NON-COMMERCIAL purposes and without
// fee is hereby granted provided that this copyright notice
// appears in all copies.
//
// Cliff Huylebroeck MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
// SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
// A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Cliff Huylebroeck SHALL NOT
// BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.

#pragma once

#include "orde.h"

struct TestVak
    {
    n2 mogelijk;
    n2 geschrapt;
    n1 aantal;
    n1 gekozen;
    };
typedef TestVak& r_TestVak;

struct TestLijst
    {
    n2 mogelijk;
    n2 geschrapt;
    n1 aLeeg;
    n1 aantallen[aCijferBit];
    };
typedef TestLijst& r_TestLijst;

void InitSnelheidstestVak(r_TestVak vak);

void InitSnelheidstestLijst(r_TestLijst lijst);

void InitSnelheidstest();

n1 DoeSnelheidstestSchrap(c_n1 cijfer,
                          r_TestVak vak);

n1 DoeSnelheidstestSchrap(n1 cijfer,
                          r_TestLijst lijst);

void DoeSnelheidstestSchrap(n1 index);

void DoeSnelheidstest();
Gebruikersavatar
Puzzle
Mountainbiker
Berichten: 178
Lid geworden op: za 19 aug 2006 11:15
Rijdt met: MBK Super Sprint

Bericht door Puzzle »

Code: Selecteer alles

// File: TextMode.h
// Date: 10 Januari 2007.
// Version: 197 microseconds on PowerMac G3/233 MHz.
//
// Copyright (c) 2006 Cliff Huylebroeck. All Rights Reserved.
//
// Permission to use, copy, modify, and distribute this software
// and its documentation for NON-COMMERCIAL purposes and without
// fee is hereby granted provided that this copyright notice
// appears in all copies.
//
// Cliff Huylebroeck MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
// SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
// a PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Cliff Huylebroeck SHALL NOT
// BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.

#pragma once

#include "z2.h"

__declspec(dllimport) extern pascal void TextMode(z2 mode);
Gebruikersavatar
Puzzle
Mountainbiker
Berichten: 178
Lid geworden op: za 19 aug 2006 11:15
Rijdt met: MBK Super Sprint

Bericht door Puzzle »

Code: Selecteer alles

// File: TickCount.h
// Date: 2 Januari 2007.
// Version: 197 microseconds on PowerMac G3/233 MHz.
//
// Copyright (c) 2006 Cliff Huylebroeck. All Rights Reserved.
//
// Permission to use, copy, modify, and distribute this software
// and its documentation for NON-COMMERCIAL purposes and without
// fee is hereby granted provided that this copyright notice
// appears in all copies.
//
// Cliff Huylebroeck MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
// SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
// a PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Cliff Huylebroeck SHALL NOT
// BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.

#pragma once

#include "n4.h"

__declspec(dllimport) extern pascal n4 TickCount();
Gebruikersavatar
Puzzle
Mountainbiker
Berichten: 178
Lid geworden op: za 19 aug 2006 11:15
Rijdt met: MBK Super Sprint

Bericht door Puzzle »

Code: Selecteer alles

// File: timeBase.h
// Date: 18 December 2006.
// Version: 197 microseconds on PowerMac G3/233 MHz.
//
// Copyright (c) 2006 Cliff Huylebroeck. All Rights Reserved.
//
// Permission to use, copy, modify, and distribute this software
// and its documentation for NON-COMMERCIAL purposes and without
// fee is hereby granted provided that this copyright notice
// appears in all copies.
//
// Cliff Huylebroeck MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
// SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
// A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Cliff Huylebroeck SHALL NOT
// BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.

#pragma once

#include "z2.h"

// opm: bestTimeBase selecteert het meest precieze timingmechanisme.
// Op een PowerPC is dat ppcTimeBase.

c_z2 ticksTimeBase=0;
c_z2 timeMgrTimeBase=1;
c_z2 microsecondsTimeBase=2;
c_z2 ppcTimeBase=3;
c_z2 bestTimeBase=4;
Gebruikersavatar
Puzzle
Mountainbiker
Berichten: 178
Lid geworden op: za 19 aug 2006 11:15
Rijdt met: MBK Super Sprint

Bericht door Puzzle »

Code: Selecteer alles

// File: Vak.h
// Date: 17 December 2006.
// Version: 197 microseconds on PowerMac G3/233 MHz.
//
// Copyright (c) 2006 Cliff Huylebroeck. All Rights Reserved.
//
// Permission to use, copy, modify, and distribute this software
// and its documentation for NON-COMMERCIAL purposes and without
// fee is hereby granted provided that this copyright notice
// appears in all copies.
//
// Cliff Huylebroeck MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
// SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
// A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Cliff Huylebroeck SHALL NOT
// BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.

#pragma once

#include "n1.h"

struct Vak;
    typedef Vak* p_Vak;
    typedef const p_Vak cp_Vak;
typedef const Vak c_Vak;
    typedef c_Vak* pc_Vak;
    typedef const pc_Vak cpc_Vak;
typedef Vak& r_Vak;
typedef p_Vak& rp_Vak;
typedef cp_Vak& rcp_Vak;
typedef c_Vak& rc_Vak;
typedef pc_Vak& rpc_Vak;
typedef cpc_Vak& rcpc_Vak;

struct Vak        // 8 bytes nodig.
    {
    n1 index;     // 7 bits nodig.
    n1 gekozen;   // 4 bits nodig.
    n1 vorige;    // 7 bits nodig.
    n1 volgende;  // 7 bits nodig.
    n1 rijIndex;  // 4 bits nodig.
    n1 kolomIndex;// 4 bits nodig.
    n1 kotIndex;  // 4 bits nodig.
    };
Gebruikersavatar
Puzzle
Mountainbiker
Berichten: 178
Lid geworden op: za 19 aug 2006 11:15
Rijdt met: MBK Super Sprint

Bericht door Puzzle »

Code: Selecteer alles

// File: void.h
// Date: 17 December 2006.
// Version: 197 microseconds on PowerMac G3/233 MHz.
//
// Copyright (c) 2006 Cliff Huylebroeck. All Rights Reserved.
//
// Permission to use, copy, modify, and distribute this software
// and its documentation for NON-COMMERCIAL purposes and without
// fee is hereby granted provided that this copyright notice
// appears in all copies.
//
// Cliff Huylebroeck MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
// SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
// A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Cliff Huylebroeck SHALL NOT
// BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.

#pragma once

    typedef void* p_void;
    typedef const p_void cp_void;
typedef const void c_void;
    typedef c_void* pc_void;
    typedef const pc_void cpc_void;
typedef p_void& rp_void;
typedef cp_void& rcp_void;
typedef pc_void& rpc_void;
typedef cpc_void& rcpc_void;
Gebruikersavatar
Puzzle
Mountainbiker
Berichten: 178
Lid geworden op: za 19 aug 2006 11:15
Rijdt met: MBK Super Sprint

Bericht door Puzzle »

Code: Selecteer alles

// File: z2.h
// Date: 17 December 2006.
// Version: 197 microseconds on PowerMac G3/233 MHz.
//
// Copyright (c) 2006 Cliff Huylebroeck. All Rights Reserved.
//
// Permission to use, copy, modify, and distribute this software
// and its documentation for NON-COMMERCIAL purposes and without
// fee is hereby granted provided that this copyright notice
// appears in all copies.
//
// Cliff Huylebroeck MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
// SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
// A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Cliff Huylebroeck SHALL NOT
// BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.

#pragma once

typedef signed short int z2;
    typedef z2* p_z2;
    typedef const p_z2 cp_z2;
typedef const z2 c_z2;
    typedef c_z2* pc_z2;
    typedef const pc_z2 cpc_z2;
typedef z2& r_z2;
typedef p_z2& rp_z2;
typedef cp_z2& rcp_z2;
typedef c_z2& rc_z2;
typedef pc_z2& rpc_z2;
typedef cpc_z2& rcpc_z2;
Plaats reactie