Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ___| _) | _) _) ___|
- \___ \ | | | __| | | | __ `__ \ | _ \ __| __ \
- | | | | ( | | | | | | | ( | | | |
- _____/ _| _| _| \___| _| \__,_| _| _| _| \____| \___/ _| .__/
- _|
- Code source libre de droit. Si vous utilisez mon code, merci à vous d'en préciser la source.
- Date : 11/11/2011
- Auteur : Silicium Corp
- */
- #include "Stack.h"
- //===============================================================
- Stack::Stack(boolean fifoMod)
- {
- LENGTH = LENGTH_STACK;
- isFIFO = fifoMod;
- init();
- }
- //===============================================================
- void Stack::init()
- {
- for (int i = 0; i < LENGTH; i++)
- {
- stack[i] = 0;
- }
- nextPush = 0;
- nextPop = 0;
- nbElement = 0;
- data = 0; //Si l'opérateur "=" n'est pas surcharger et que vous utiliser votre propre type d'objet à contenir dans la stack, vous allez avoir des surprises !
- }
- //===============================================================
- byte Stack::getNbElement()
- {
- return(nbElement);
- }
- //===============================================================
- void Stack::push(byte addonContent) //Changer "byte" par le type de votre propre objet ou d'un autre type standard. Mettre a jour le fichier header
- {
- if (nbElement < LENGTH)
- {
- if(isFIFO)
- {
- if(nextPush == LENGTH)
- {
- nextPush = 0;
- }
- }
- stack[nextPush] = addonContent;
- nextPush ++;
- nbElement ++;
- }
- else
- {
- Serial.print("Erreur : Stack pleine");
- Serial.print("\n");
- }
- }
- //===============================================================
- byte Stack::pop() //Changer "byte" par le type de votre propre objet ou d'un autre type standard. Mettre a jour le fichier header
- {
- //Serial.print("pop call : \n");
- if (nbElement > 0)
- {
- nbElement -= 1;
- if (isFIFO)
- {
- data = stack[nextPop];
- stack[nextPop] = 0;
- nextPop ++;
- if (nextPop == LENGTH)
- {
- nextPop = 0;
- }
- }
- else
- {
- data = stack[nextPush - 1];
- stack[nextPush - 1] = 0;
- nextPush -= 1;
- }
- }
- else
- {
- data = 0;
- Serial.print("Erreur : Stack vide");
- Serial.print("\n");
- }
- return (data);
- }
- //===============================================================
- void Stack::show()
- {
- for (int i = 0; i < LENGTH; i++)
- {
- Serial.print("Emplacement[");
- Serial.print(i);
- Serial.print("] : ");
- Serial.print(stack[i]); //Si vous utiliser votre propre type d'objet à contenir dans la stack selectionez la methode qui vous plaira tant que Serial.print() accepte le type
- Serial.print("\n");
- }
- }
- //===============================================================
- void Stack::setFIFOmode(boolean state)
- {
- isFIFO = state;
- }
- //===============================================================
- byte Stack::getLength()
- {
- return (LENGTH);
- }
- //===============================================================
- byte* Stack::getStack() //Changer "byte" par le type de votre propre objet ou d'un autre type standard. Mettre a jour le fichier header
- {
- return (stack);
- }
- //===============================================================
- byte Stack::getNextPush()
- {
- return (nextPush);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement