/* File: adt2.c

   Implementation of functions for adt2
*/

#include <stdio.h>
#include "adt2.h"

/* Publicly acessible global variable */
int public2 ;   /* Space is allocated! */


/* Private global variables 

  "static" means "private". It is a stupid C thing, that
   the keyword "static" was used.
*/

static int private2 = 0, non_unique_int_name = 0 ;

/* Private function prototypes */

static int private_func2(int ) ;
static int non_unique_func_name(int) ; 

/* Implementations */

void func2(int n) {
   int temp ;

   printf("Entering func2 in adt2\n") ;
   printf("public2 = %d\n", public2) ;
   printf("private2 = %d\n", private2) ;
   printf("non_unique_int_name = %d\n", non_unique_int_name) ;
   non_unique_int_name = n ;

   private2 = private_func2(n) ;
   printf("private_func2(%d) = %d\n", n, private2) ;

   temp = non_unique_func_name(n) ;
   printf("non_unique_func_name(%d) = %d\n", n, temp) ;

   printf("private2 = %d\n", private2) ;
   printf("non_unique_int_name = %d\n", non_unique_int_name) ;

   return ;
}


/* Must repeat storage class static here */

static int private_func2(int n) {
   
   printf("Entering private_func2 in adt2 (adds 5)\n") ;
   return n + 5 ;
}

static int non_unique_func_name(int n) {

   printf("Entering non_unique_func_name in adt2 (times 7)\n") ;
   return n * 7 ;
}

