Skip to content
Snippets Groups Projects
Select Git revision
  • e5944132b6e5d18eed605e367f67c4524bd8ccbf
  • master default protected
  • v3-modify-mail
  • snyk-fix-207483a1e839c807f95a55077e86527d
  • translations_3b5aa4f3c755059914cfa23d7d2edcde_ru
  • translations_6e4a5e377a3e50f17e6402264fdbfcc6_ru
  • translations_3b5aa4f3c755059914cfa23d7d2edcde_fa_IR
  • translations_en-yml--master_fa_IR
  • snyk-fix-7d634f2eb65555f41bf06d6af930e812
  • translations_en-yml--master_ar
  • translations_3b5aa4f3c755059914cfa23d7d2edcde_el
  • jfederico-patch-1
  • v2
  • v3
  • v1
  • release-3.1.0.2
  • release-3.1.0.1
  • release-3.1.0
  • release-2.14.8.4
  • release-3.0.9.1
  • release-3.0.9
  • release-3.0.8.1
  • release-2.14.8.3
  • release-3.0.8
  • release-3.0.7.1
  • release-2.14.8.2
  • release-3.0.7
  • release-3.0.6.1
  • release-3.0.6
  • release-3.0.5.4
  • release-3.0.5.3
  • release-2.14.8.1
  • release-3.0.5.2
  • release-3.0.5.1
  • release-3.0.5
35 results

.ruby-version

Blame
  • fifo.c 1.72 KiB
    #include <stdio.h>
    #include <stdlib.h>
    
    #define FIFO_SIZE 42
    
    typedef struct
    {
    	int x, y;
    }
    pair;
    
    pair fifo[FIFO_SIZE];
    int fifo_read_pointer = 0;
    int fifo_write_pointer = 0;
    
    void fatal_error (char *msg)
    {
    	fprintf (stderr, "%s\n", msg);
    	exit (1);
    }
    
    void push_pair (int x, int y)
    {
    	if (fifo_write_pointer < 0 || fifo_write_pointer >= FIFO_SIZE)
    		fatal_error ("push_pair: fifo inconsistence");
    	else
    	{
    		printf ("pushing (%d,%d)\n", x, y);
    		fifo[fifo_write_pointer].x = x;
    		fifo[fifo_write_pointer].y = y;
    		fifo_write_pointer++;
    		if (fifo_write_pointer >= FIFO_SIZE)
    			fifo_write_pointer = 0;
    		if (fifo_write_pointer == fifo_read_pointer)
    			fatal_error ("fifo overflow");
        }
    }
    
    pair pop_pair (void)
    {
    	pair nix;
    	if (fifo_read_pointer < 0 || fifo_read_pointer >= FIFO_SIZE)
        {
    		fatal_error ("pop_pair: fifo inconsistence");		
    		return nix;
        }
    	else if (fifo_read_pointer == fifo_write_pointer)
        {
    		fatal_error ("fifo underflow");
    		return nix;
        }
    	else
        {
    		printf ("popping (%d,%d)\n", fifo[fifo_read_pointer].x, fifo[fifo_read_pointer].y);
    		pair value = fifo[fifo_read_pointer];
    		fifo[fifo_read_pointer].x = 0;
    		fifo[fifo_read_pointer].y = 0;
    		fifo_read_pointer++;
    		if (fifo_read_pointer >= FIFO_SIZE)
    			fifo_read_pointer = 0;
    		return value;
        }
    }
    
    void dump_stack (void)
    {
    	int i;
    	printf ("dump_stack:");
    	for (i = 0; i < FIFO_SIZE; i++)
    		printf (" (%d,%d)", fifo[i].x, fifo[i].y);
    	printf ("\n");
    }
    
    int main (void)
    {
    	dump_stack ();
    	push_pair (3, 0);
    	dump_stack ();
    	push_pair (7, 2);
    	dump_stack ();
    	push_pair (23, 23);
    	dump_stack ();
    	pop_pair ();
    	dump_stack ();
    	pop_pair ();
    	dump_stack ();
    	push_pair (42, 137);
    	dump_stack ();
    	pop_pair ();
    	dump_stack ();
    	pop_pair ();
    	dump_stack ();
    	return 0;
    }