Changeset 134b86a for translator/examples/array.h
- Timestamp:
- Nov 3, 2014, 4:38:08 PM (10 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
- Children:
- 8c17ab0
- Parents:
- 93885663
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
translator/examples/array.h
r93885663 r134b86a 2 2 #define ARRAY_H 3 3 4 #include "iterator.h"4 //#include "iterator.h" 5 5 6 context array( type array_type, type elt_type ) 7 { 8 lvalue elt_type ?[?]( array_type, int ); 6 // An array has contiguous elements accessible in any order using integer indicies. The first 7 // element has index 0. 8 context array( type array_type, type elt_type ) { 9 lvalue elt_type ?[?]( array_type, int ); 9 10 }; 10 11 11 context bounded_array( type array_type, type elt_type | array( array_type, elt_type ) ) 12 {13 int array_last( array_type );12 // A bounded array is an array that carries its maximum index with it. 13 context bounded_array( type array_type, type elt_type | array( array_type, elt_type ) ) { 14 int last( array_type ); 14 15 }; 15 16 … … 17 18 18 19 typedef int array_iterator; 20 19 21 /// forall( type array_type, elt_type | bounded_array( array_type, elt_type ) ) 20 22 /// [ array_iterator begin, array_iterator end ] get_iterators( array_type ); 23 24 25 // A bounded array can be iterated over by using a pointer to the element type. These functions 26 // return iterators corresponding to the first element and the one-past-the-end element, STL-style. 21 27 forall( type array_type, type elt_type | bounded_array( array_type, elt_type ) ) 22 elt_type *get_begin( array_type ); 28 elt_type *begin( array_type ); 29 23 30 forall( type array_type, type elt_type | bounded_array( array_type, elt_type ) ) 24 elt_type * get_end( array_type );31 elt_type *end( array_type ); 25 32 26 #endif / * #ifndef ARRAY_H */33 #endif // ARRAY_H
Note: See TracChangeset
for help on using the changeset viewer.