/* File: adt1.c

   Implementation of functions for adt1
*/

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

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


/* Private global variables 

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

static int private1 = 0, non_unique_int_name = 0 ;

/* Private function prototypes */

static int private_func1(int ) ;
static int non_unique_func_name(int) ; 

/* Implementations */

void func1(int n) {
   int temp ;

   printf("Entering func1 in adt1\n") ;
   printf("public1 = %d\n", public1) ;
   printf("private1 = %d\n", private1) ;
   printf("non_unique_int_name = %d\n", non_unique_int_name) ;
   non_unique_int_name = n ;

   private1 = private_func1(n) ;
   printf("private_func1(%d) = %d\n", n, private1) ;

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

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

   return ;
}


/* Must repeat storage class static here */

static int private_func1(int n) {
   
   printf("Entering private_func1 in adt1 (adds 3)\n") ;
   return n + 3 ;
}

static int non_unique_func_name(int n) {

   printf("Entering non_unique_func_name in adt1 (times 2)\n") ;
   return n * 2 ;
}

