comparison src/pt-arg-list.h @ 4219:23d06c9e1edd

[project @ 2002-12-06 21:29:17 by jwe]
author jwe
date Fri, 06 Dec 2002 21:29:19 +0000
parents 8ad52ec4f374
children 90e44267e8cf
comparison
equal deleted inserted replaced
4218:4a392a01e51a 4219:23d06c9e1edd
25 25
26 #if defined (__GNUG__) && defined (USE_PRAGMA_INTERFACE_IMPLEMENTATION) 26 #if defined (__GNUG__) && defined (USE_PRAGMA_INTERFACE_IMPLEMENTATION)
27 #pragma interface 27 #pragma interface
28 #endif 28 #endif
29 29
30 #include <SLList.h>
31
32 class octave_value_list; 30 class octave_value_list;
33 31
34 class tree_expression; 32 class tree_expression;
35 33
36 class tree_walker; 34 class tree_walker;
37 35
38 #include "str-vec.h" 36 #include "str-vec.h"
39 37
38 #include "base-list.h"
39
40 // Argument lists. Used to hold the list of expressions that are the 40 // Argument lists. Used to hold the list of expressions that are the
41 // arguments in a function call or index expression. 41 // arguments in a function call or index expression.
42 42
43 class 43 class
44 tree_argument_list 44 tree_argument_list : public octave_base_list<tree_expression *>
45 { 45 {
46 public: 46 public:
47 47
48 tree_argument_list (void) 48 tree_argument_list (void) { }
49 : lst () { }
50 49
51 tree_argument_list (tree_expression *t) 50 tree_argument_list (tree_expression *t) { append (t); }
52 : lst () { lst.append (t); }
53 51
54 ~tree_argument_list (void); 52 ~tree_argument_list (void);
55 53
56 int length (void) const { return lst.length (); } 54 tree_expression *remove_front (void)
57 55 {
58 void append (tree_expression *&s) { lst.append (s); } 56 iterator p = begin ();
59 void append (tree_expression * const &s) { lst.append (s); } 57 tree_expression *retval = *p;
60 58 erase (p);
61 tree_expression *&operator () (Pix p) { return lst (p); } 59 return retval;
62 60 }
63 tree_expression * const &operator () (Pix p) const { return lst (p); }
64
65 Pix first (void) const { return lst.first (); }
66
67 void next (Pix& p) const { return lst.next (p); }
68
69 int remove_front (tree_expression *x) { return lst.remove_front (x); }
70
71 tree_expression *remove_front (void) { return lst.remove_front (); }
72 61
73 int nargout_count (void) const; 62 int nargout_count (void) const;
74 63
75 bool all_elements_are_constant (void) const; 64 bool all_elements_are_constant (void) const;
76 65
79 string_vector get_arg_names (void) const; 68 string_vector get_arg_names (void) const;
80 69
81 void accept (tree_walker& tw); 70 void accept (tree_walker& tw);
82 71
83 private: 72 private:
84
85 // The list of argument list elements.
86 SLList<tree_expression *> lst;
87 73
88 // No copying! 74 // No copying!
89 75
90 tree_argument_list (const tree_argument_list&); 76 tree_argument_list (const tree_argument_list&);
91 77