rasdaman complete source
parse.hh
Go to the documentation of this file.
1 /*
2 * This file is part of rasdaman community.
3 *
4 * Rasdaman community is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * Rasdaman community is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with rasdaman community. If not, see <http://www.gnu.org/licenses/>.
16 *
17 * Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann /
18 rasdaman GmbH.
19 *
20 * For more information please see <http://www.rasdaman.org>
21 * or contact Peter Baumann via <baumann@rasdaman.com>.
22 */
23 #ifndef __PARSE_H
24 #define __PARSE_H
25 
26 // Put it in front of any typedef bool ... because o2 is using bool as a variable.
27 // #include "o2template_CC.hxx"
28 
29 #include "raslib/minterval.hh"
30 #include "raslib/error.hh"
31 
32 #include "relcatalogif/basetype.hh"
33 #include "relcatalogif/type.hh"
34 
35 #include <stdio.h>
36 
37 class YSymbol;
38 
39 typedef Type CType;
40 
41 //@ManMemo: Module: {\bf rasdl}
42 
46 struct YWhere
47 {
49  long line;
51  int column;
53  const char* file;
54 };
55 
56 
57 
58 //@ManMemo: Module: {\bf rasdl}
59 
71 {
72 public:
74  Parse_info();
75 
77  Parse_info( long lineNo, int columnNo, const char* fileName, const char* tokenName );
78 
80  Parse_info( YWhere &where, const char* tokenName );
81 
83  Parse_info( const Parse_info& obj );
84 
86  ~Parse_info();
87 
89  const Parse_info& operator=( const Parse_info& obj );
90 
92  long line;
94  int column;
96  char* file;
98  char* token;
99 };
100 
101 
102 
103 //@ManMemo: Module: {\bf rasdl}
104 
113 {
114 };
115 
116 
117 
118 //@ManMemo: Module: {\bf rasdl}
119 
128 {
129 public:
131  Parse_atom();
133  virtual ~Parse_atom();
135  virtual void output(FILE*)const=0;
137  virtual void insertData() const throw( r_Equery_execution_failed );
138 
140  void setParseInfo( const Parse_info &token );
141 
143  const Parse_info& getParseInfo();
144 
146  enum Kind
147  {
151 
154 
157 
161 
163 
166 
169  };
170 
174  const char *name;
177 
180 };
181 
182 
183 
184 //@ManMemo: Module: {\bf rasdl}
185 
193 class Parse_type : public Parse_atom
194 {
195 public:
197  Parse_type();
199  virtual ~Parse_type();
201  Parse_type(char*);
202 
204  virtual const CType* getType( const char* typeName = NULL ) const;
205 
207  bool forward;
208 };
209 
210 
211 
212 
213 //@ManMemo: Module: {\bf rasdl}
214 
223 {
224 };
225 
226 
227 
228 //@ManMemo: Module: {\bf rasdl}
229 
238 {
239 public:
243  virtual ~Parse_typereference();
245  virtual void output(FILE*)const;
246 
248  virtual const CType* getType( const char* typeName = NULL ) const;
249 
251  const Parse_type *type;
252 };
253 
254 
255 
256 //@ManMemo: Module: {\bf rasdl}
257 
266 {
267 public:
269  Parse_composite();
270 
273 
275  class Element : public Parse_atom
276  {
277  public:
279  Element();
281  virtual ~Element();
283  virtual void output(FILE*)const;
284 
286  bool readonly;
288  const Parse_type *type;
291 
294  };
295 
298 };
299 
300 
301 
302 //@ManMemo: Module: {\bf rasdl}
303 
312 {
313 public:
315  Parse_struct();
317  virtual ~Parse_struct();
319  virtual void output(FILE*)const;
321  virtual void insertData() const throw( r_Equery_execution_failed );
323  virtual const CType* getType( const char* typeName = NULL ) const;
324 };
325 
326 
327 
328 //@ManMemo: Module: {\bf rasdl}
329 
338 {
340  Parse_union();
342  virtual ~Parse_union();
344  virtual void output(FILE*)const;
345 };
346 
347 
348 class Parse_operation;
349 
350 
351 //@ManMemo: Module: {\bf rasdl}
352 
361 {
362 public:
364  Parse_interface();
366  virtual void output(FILE*)const;
367 
369  enum Lifetime {persistend,transient,undefined};
370 
372 
376  class Base_class : public Parse_atom
377  {
378  public:
380  Base_class();
382  virtual void output(FILE*)const;
383 
388 
391  };
392 
394 
398  class Method : public Parse_atom
399  {
400  public:
402  Method();
404  virtual void output(FILE*)const;
405 
407  Parse_operation *function;
408 
411 
414  };
415 
424 };
425 
426 
427 
428 //@ManMemo: Module: {\bf rasdl}
429 
438 {
439 public:
441  Parse_function();
443  virtual void output(FILE*)const;
444 
446 
450  class Parameter : public Parse_atom
451  {
452  public:
454  Parameter();
456  virtual void output(FILE*)const;
457 
461  enum {In,Out,Unknown} state;
462 
465  };
466 
471 };
472 
473 
474 
475 //@ManMemo: Module: {\bf rasdl}
476 
485 {
486 public:
488  Parse_operation();
489 
492 };
493 
494 
495 
496 //@ManMemo: Module: {\bf rasdl}
497 
506 {
507 public:
509  Parse_pointer();
511  virtual void output(FILE*)const;
512 
514  const Parse_type *type;
515 };
516 
517 
518 
519 //@ManMemo: Module: {\bf rasdl}
520 
529 {
530 public:
532  Parse_array();
534  virtual void output(FILE*)const;
536  int size;
537 };
538 
539 
540 
541 //@ManMemo: Module: {\bf rasdl}
542 
551 {
552 public:
554  Parse_alias();
556  virtual void output(FILE*)const;
558  virtual void insertData() const throw( r_Equery_execution_failed );
560  const Parse_type *type;
561 };
562 
563 
564 
565 //@ManMemo: Module: {\bf rasdl}
566 
574 {
575 public:
577  Parse_enum();
579  virtual void output(FILE*)const;
580 
582 
586  class Enumerator : public Parse_atom
587  {
588  public:
590  virtual void output(FILE*)const;
591 
593  const char *name;
595  int value;
598  };
599 
602 };
603 
604 
605 
606 //@ManMemo: Module: {\bf rasdl}
607 
615 {
616 public:
618  virtual void output(FILE*)const;
619 };
620 
621 
622 
623 //@ManMemo: Module: {\bf rasdl}
624 
631 class Parse_any : public Parse_atomic
632 {
633 public:
635  Parse_any();
636 };
637 
638 
639 
640 //@ManMemo: Module: {\bf rasdl}
641 
648 class Parse_void : public Parse_atomic
649 {
650 public:
652  Parse_void();
653 };
654 
655 
656 
657 //@ManMemo: Module: {\bf rasdl}
658 
666 {
667 public:
669  Parse_string();
670 
672  int length;
673 };
674 
675 
676 
677 //@ManMemo: Module: {\bf rasdl}
678 
686 class Parse_float : public Parse_atomic,public Parse_number
687 {
688 public:
690  Parse_float();
692  virtual void output(FILE*)const;
694  virtual const CType* getType( const char* typeName = NULL ) const;
695 
698 };
699 
700 
701 
702 //@ManMemo: Module: {\bf rasdl}
703 
711 class Parse_int : public Parse_atomic,public Parse_number
712 {
713 public:
715  Parse_int();
717  virtual void output(FILE*)const;
719  virtual const CType* getType( const char* typeName = NULL ) const;
720 
722  enum {Short,Long} width;
725 };
726 
727 
728 
729 //@ManMemo: Module: {\bf rasdl}
730 
738 class Parse_octet : public Parse_atomic,public Parse_number
739 {
740 public:
742  Parse_octet();
744  virtual const CType* getType( const char* typeName = NULL ) const;
745 };
746 
747 //@ManMemo: Module: {\bf rasdl}
748 
749 
754 {
755 public:
757  Parse_complex1();
759  virtual const CType* getType( const char* typeName = NULL ) const;
760 };
761 
762 
767 {
768 public:
770  Parse_complex2();
772  virtual const CType* getType( const char* typeName = NULL ) const;
773 };
774 
775 
776 
777 
778 //@ManMemo: Module: {\bf rasdl}
779 
787 class Parse_char : public Parse_atomic,public Parse_number
788 {
789 public:
791  Parse_char();
793  virtual const CType* getType( const char* typeName = NULL ) const;
794 };
795 
796 
797 
798 //@ManMemo: Module: {\bf rasdl}
799 
807 {
808 public:
810  Parse_boolean();
812  virtual const CType* getType( const char* typeName = NULL ) const;
813 };
814 
815 
816 
817 //@ManMemo: Module: {\bf rasdl}
818 
826 {
827 public:
832 };
833 
834 
835 
836 //@ManMemo: Module: {\bf rasdl}
837 
845 {
846 public:
848  Parse_set();
850  virtual void output(FILE*)const;
852  virtual const CType* getType( const char* typeName = NULL ) const;
853 };
854 
855 
856 
857 //@ManMemo: Module: {\bf rasdl}
858 
866 {
867 public:
869  Parse_MDD();
870 
872  virtual void output(FILE*)const;
873 
875  virtual const CType* getType( const char* typeName = NULL ) const;
876 
878  r_Minterval* domain;
879 
881  unsigned long dimensionality;
882 };
883 #endif
884 
885 
886 
887 
888 
889 
890 
891 
892 
893 
894 
895 
896 
897 
898 
899 
900 
901 
902 
903 
904 
905 
906 
907 
enum Parse_float::@39 accurance
Enumerator * next
Definition: parse.hh:597
int value
Definition: parse.hh:595
Definition: parse.hh:360
Definition: parse.hh:70
virtual const CType * getType(const char *typeName=NULL) const
Definition: parse.hh:586
Definition: parse.hh:160
Definition: parse.hh:165
Definition: parse.hh:153
Parse_interface * scope_class
Definition: parse.hh:491
virtual void insertData() const
virtual const CType * getType(const char *typeName=NULL) const
Definition: parse.hh:614
Lifetime lifetime
Definition: parse.hh:419
int length
Definition: parse.hh:672
Definition: parse.hh:165
Definition: parse.hh:697
virtual void output(FILE *) const
Definition: parse.hh:865
const char * name
Definition: parse.hh:593
char * file
Definition: parse.hh:96
Definition: parse.hh:165
Lifetime
Definition: parse.hh:369
bool forward
this type is defined as forward {should be moved into YSymbol}
Definition: parse.hh:207
virtual const CType * getType(const char *typeName=NULL) const
YSymbol * symbol
Definition: parse.hh:176
virtual const CType * getType(const char *typeName=NULL) const
Definition: parse.hh:450
const char * file
Definition: parse.hh:53
Definition: parse.hh:155
virtual const CType * getType(const char *typeName=NULL) const
r_Minterval * domain
Definition: parse.hh:878
enum Parse_int::@41 sign
virtual ~Parse_atom()
Definition: parse.hh:711
const Parse_type * type
Definition: parse.hh:560
Definition: parse.hh:112
virtual void output(FILE *) const =0
Definition: parse.hh:165
Definition: parse.hh:156
Kind
Definition: parse.hh:146
Method * next
Definition: parse.hh:413
Definition: parse.hh:275
enum Parse_function::Parameter::@38 state
Definition: parse.hh:165
Definition: parse.hh:844
Definition: parse.hh:505
virtual void output(FILE *) const
virtual const CType * getType(const char *typeName=NULL) const
virtual void output(FILE *) const
Definition: parse.hh:738
Definition: parse.hh:265
virtual void output(FILE *) const
Definition: parse.hh:148
virtual ~Parse_struct()
Definition: parse.hh:165
virtual void output(FILE *) const
Definition: parse.hh:168
Definition: parse.hh:153
virtual void output(FILE *) const
virtual void output(FILE *) const
Definition: parse.hh:697
Definition: parse.hh:150
Definition: parse.hh:461
Definition: parse.hh:193
Definition: parse.hh:528
virtual const CType * getType(const char *typeName=NULL) const
int size
Definition: parse.hh:536
Definition: parse.hh:337
Definition: parse.hh:461
bool readonly
Definition: parse.hh:286
const Parse_info & getParseInfo()
Definition: parse.hh:153
const Parse_type * type
Definition: parse.hh:514
Definition: parse.hh:165
Definition: parse.hh:437
Definition: parse.hh:127
Definition: parse.hh:149
Definition: parse.hh:272
unsigned long dimensionality
Definition: parse.hh:881
virtual const CType * getType(const char *typeName=NULL) const
Definition: parse.hh:148
virtual void output(FILE *) const
Definition: parse.hh:550
const Parse_type * type
Definition: parse.hh:288
Method * methods
Definition: parse.hh:421
Definition: parse.hh:724
virtual ~Parse_type()
Definition: parse.hh:222
virtual const CType * getType(const char *typeName=NULL) const
int column
Definition: parse.hh:94
Access_mode access
Definition: parse.hh:410
Definition: parse.hh:724
Definition: parse.hh:376
long line
Definition: parse.hh:92
Definition: parse.hh:159
virtual void output(FILE *) const
Definition: parse.hh:165
Definition: parse.hh:722
Definition: parse.hh:369
const Parse_info & operator=(const Parse_info &obj)
assignment operator
void * relationships
Definition: parse.hh:423
virtual const CType * getType(const char *typeName=NULL) const
Definition: parse.hh:806
virtual void output(FILE *) const
Definition: parse.hh:484
virtual ~Parse_typereference()
Kind kind
Definition: parse.hh:172
const Parse_type * base_type
Definition: parse.hh:831
Parse_typereference * return_type
Definition: parse.hh:470
virtual void output(FILE *) const
Definition: parse.hh:272
Definition: parse.hh:46
Definition: parse.hh:461
Parameter * next
Definition: parse.hh:464
virtual void output(FILE *) const
virtual void insertData() const
Definition: parse.hh:825
Definition: parse.hh:631
Access_mode access
Definition: parse.hh:387
Enumerator * enumerators
Definition: parse.hh:601
enum Parse_int::@40 width
~Parse_info()
destructor
virtual const CType * getType(const char *typeName=NULL) const
Definition: parse.hh:573
Definition: parse.hh:152
Definition: parse.hh:753
Definition: parse.hh:369
Definition: symbtbl.hh:157
virtual void output(FILE *) const
virtual void output(FILE *) const
Definition: parse.hh:168
Definition: parse.hh:311
Definition: parse.hh:165
long line
Definition: parse.hh:49
Access_mode access
Definition: parse.hh:290
Definition: relcatalogif/type.hh:68
Definition: parse.hh:167
virtual void output(FILE *) const
Definition: parse.hh:162
virtual const CType * getType(const char *typeName=NULL) const
Parse_typereference * type
Definition: parse.hh:459
Definition: parse.hh:272
Parse_interface * base_class
Definition: parse.hh:385
Base_class * base_classes
Definition: parse.hh:417
Definition: parse.hh:165
Definition: parse.hh:237
const Parse_type * type
Definition: parse.hh:251
int column
Definition: parse.hh:51
virtual void output(FILE *) const
Definition: parse.hh:158
void setParseInfo(const Parse_info &token)
Parse_info parseInfo
definition of corresponding token
Definition: parse.hh:179
Definition: parse.hh:686
Definition: parse.hh:168
Definition: parse.hh:164
Access_mode
Definition: parse.hh:272
Base_class * next
Definition: parse.hh:390
virtual void insertData() const
Parameter * parameters
Definition: parse.hh:468
Definition: parse.hh:766
Element * next
Definition: parse.hh:293
virtual void output(FILE *) const
Element * elements
Definition: parse.hh:297
const char * name
Definition: parse.hh:174
char * token
Definition: parse.hh:98
Definition: parse.hh:665
Definition: parse.hh:787
Definition: parse.hh:398
Type CType
Definition: parse.hh:37
Definition: parse.hh:648
virtual void output(FILE *) const
Definition: parse.hh:722