Version 0.3.2-pre1
[fw/sdcc] / sim / ucsim / sim.src / argcl.h
index 91d1f715891e5ffd2b39daff1d3456fff1d318ed..5bc0bbbea3c0785318bfdd12e1a6fe4183cca72f 100644 (file)
@@ -28,7 +28,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #ifndef SIM_ARGCL_HEADER
 #define SIM_ARGCL_HEADER
 
+// prj
 #include "pobjcl.h"
+#include "stypes.h"
 
 
 /*
@@ -70,7 +72,7 @@ public:
 class cl_cmd_arg: public cl_arg
 {
 public:
-  class cl_uc *uc;
+  //class cl_uc *uc;
 
   bool interpreted_as_string;
   union {
@@ -95,19 +97,19 @@ public:
   } value;
 
 public:
-  cl_cmd_arg(class cl_uc *iuc, long i): cl_arg(i)
-  { uc= iuc; interpreted_as_string= DD_FALSE; }
-  cl_cmd_arg(class cl_uc *iuc, char *s): cl_arg(s)
-  { uc= iuc; interpreted_as_string= DD_FALSE; }
+  cl_cmd_arg(/*class cl_uc *iuc,*/ long i): cl_arg(i)
+  { /*uc= iuc;*/ interpreted_as_string= DD_FALSE; }
+  cl_cmd_arg(/*class cl_uc *iuc,*/ char *s): cl_arg(s)
+  { /*uc= iuc;*/ interpreted_as_string= DD_FALSE; }
   ~cl_cmd_arg(void);
 
   virtual int is_string(void) { return(DD_FALSE); }
-  virtual bool get_address(t_addr *addr) { return(DD_FALSE); }
-  virtual bool as_address(void);
+  virtual bool get_address(class cl_uc *uc, t_addr *addr) { return(DD_FALSE); }
+  virtual bool as_address(class cl_uc *uc);
   virtual bool as_number(void);
   virtual bool as_data(void);
   virtual bool as_string(void);
-  virtual bool as_memory(void);
+  virtual bool as_memory(class cl_uc *uc);
   virtual bool as_hw(class cl_uc *uc);
   virtual bool as_bit(class cl_uc *uc);
 };
@@ -115,9 +117,9 @@ public:
 class cl_cmd_int_arg: public cl_cmd_arg
 {
 public:
-  cl_cmd_int_arg(class cl_uc *iuc, long addr);
+  cl_cmd_int_arg(/*class cl_uc *iuc,*/ long addr);
 
-  virtual bool get_address(t_addr *addr);
+  virtual bool get_address(class cl_uc *uc, t_addr *addr);
   virtual bool get_bit_address(class cl_uc *uc, // input
                               class cl_mem **mem, // outputs
                               t_addr *mem_addr,
@@ -128,14 +130,14 @@ public:
 class cl_cmd_sym_arg: public cl_cmd_arg
 {
 public:
-  cl_cmd_sym_arg(class cl_uc *iuc, char *sym);
+  cl_cmd_sym_arg(/*class cl_uc *iuc,*/ char *sym);
 
-  virtual bool get_address(t_addr *addr);
+  virtual bool get_address(class cl_uc *uc, t_addr *addr);
   virtual bool get_bit_address(class cl_uc *uc, // input
                               class cl_mem **mem, // outputs
                               t_addr *mem_addr,
                               t_mem *bit_mask);
-  virtual bool as_address(void);
+  virtual bool as_address(class cl_uc *uc);
   virtual bool as_string(void);
   virtual bool as_hw(class cl_uc *uc);
 };
@@ -143,7 +145,7 @@ public:
 class cl_cmd_str_arg: public cl_cmd_arg
 {
 public:
-  cl_cmd_str_arg(class cl_uc *iuc, char *str);
+  cl_cmd_str_arg(/*class cl_uc *iuc,*/ char *str);
 
   virtual int is_string(void) { return(1); }
 };
@@ -154,11 +156,11 @@ public:
   class cl_cmd_arg *sfr, *bit;
 
 public:
-  cl_cmd_bit_arg(class cl_uc *iuc,
+  cl_cmd_bit_arg(/*class cl_uc *iuc,*/
                 class cl_cmd_arg *asfr, class cl_cmd_arg *abit);
   ~cl_cmd_bit_arg(void);
 
-  virtual bool get_address(t_addr *addr);
+  virtual bool get_address(class cl_uc *uc, t_addr *addr);
   virtual bool get_bit_address(class cl_uc *uc, // input
                               class cl_mem **mem, // outputs
                               t_addr *mem_addr,
@@ -171,7 +173,7 @@ public:
   class cl_cmd_arg *name, *index;
 
 public:
-  cl_cmd_array_arg(class cl_uc *iuc,
+  cl_cmd_array_arg(/*class cl_uc *iuc,*/
                   class cl_cmd_arg *aname, class cl_cmd_arg *aindex);
   ~cl_cmd_array_arg(void);
   virtual bool as_hw(class cl_uc *uc);
@@ -197,6 +199,24 @@ public:
 };
 
 
+/*
+ * List of arguments
+ */
+
+class cl_arguments: public cl_list
+{
+public:
+  cl_arguments(void): cl_list(5, 5) {}
+
+  int arg_avail(char name);
+  int arg_avail(char *name);
+  virtual long get_iarg(char sname, char *lname);
+  virtual char *get_sarg(char sname, char *lname);
+  virtual double get_farg(char sname, char *lname);
+  virtual void *get_parg(char sname, char *lname);
+};
+
+
 #endif
 
 /* End of argcl.h */