/*======================================================================*/
/*  Calculator Assignment Command Routine(s)                            */
/*======================================================================*/

#include stdio
#include ctype

/*Calculator Common Definitions */

#include "calc_include.h"

/* global flags and variables */

extern int    debug_flag;
extern int    error_flag;
extern struct token_struct numeric_value;

/* Local flags and variables */

char assign_symbol[strsize];


/*----------------------------------------------------------------------*/
/*  An Assignement Command Was Successfully Parsed                      */
/*                                                                      */
/*  Parameter  Description                                              */
/*                                                                      */
/*  options    processing option flags                                  */
/*  stringcnt  length of input string                                   */
/*  stringptr  address of input string                                  */
/*  tokencnt   length of current token                                  */
/*  tokenptr   address of current token                                 */
/*  character  character value of character token                       */
/*  number     binary value of numeric token                            */
/*  param      user supplied argument                                   */
/*                                                                      */
/*----------------------------------------------------------------------*/

int execute_assignment_command (options,stringcnt,stringptr,tokencnt,
                                tokenptr,character,number,param)
int  options,stringcnt,tokencnt,number,param;
char character,stringptr[],tokenptr[];
{
   int idx,status;

   if (error_flag) return 1;

   if (debug_flag == TRUE)
      printf("Command:    %.*s\n",tokencnt,tokenptr);

   status = insert_symbol(&idx,numeric_value,assign_symbol);

   return 1;
}


/*----------------------------------------------------------------------*/
/*  An Assignment Symbol Was Successfully Parsed                        */
/*                                                                      */
/*  Parameter  Description                                              */
/*                                                                      */
/*  options    processing option flags                                  */
/*  stringcnt  length of input string                                   */
/*  stringptr  address of input string                                  */
/*  tokencnt   length of current token                                  */
/*  tokenptr   address of current token                                 */
/*  character  character value of character token                       */
/*  number     binary value of numeric token                            */
/*  param      user supplied argument                                   */
/*                                                                      */
/*----------------------------------------------------------------------*/

int assignment_symbol (options,stringcnt,stringptr,tokencnt,
                       tokenptr,character,number,param)
int  options,stringcnt,tokencnt,number,param;
char character,stringptr[],tokenptr[];
{
   int i,limit;

   if (debug_flag == TRUE)
      printf("A sym:      %.*s\n",tokencnt,tokenptr);

   if (tokencnt > strsize - 1)
      limit = strsize - 1;
   else
      limit = tokencnt;

   for (i=0;i<limit;i++) assign_symbol[i] = _toupper(tokenptr[i]);
   assign_symbol[limit] = '\0';

   return 1;
}


/*----------------------------------------------------------------------*/
/*  An Assignment Operator Was Successfully Parsed                      */
/*                                                                      */
/*  Parameter  Description                                              */
/*                                                                      */
/*  options    processing option flags                                  */
/*  stringcnt  length of input string                                   */
/*  stringptr  address of input string                                  */
/*  tokencnt   length of current token                                  */
/*  tokenptr   address of current token                                 */
/*  character  character value of character token                       */
/*  number     binary value of numeric token                            */
/*  param      user supplied argument                                   */
/*                                                                      */
/*----------------------------------------------------------------------*/

int assignment_operator(options,stringcnt,stringptr,tokencnt,
                        tokenptr,character,number,param)
int  options,stringcnt,tokencnt,number,param;
char character,stringptr[],tokenptr[];
{
   if (debug_flag == TRUE)
      printf("A op:       %.*s\n",tokencnt,tokenptr);

   return 1;
}
