OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [g++.old-deja/] [g++.brendan/] [ptolemy2.C] - Blame information for rev 338

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 305 jeremybenn
// { dg-do run  }
2
// GROUPS passed ptolemy-bugs
3
#include 
4
 
5
class PTcl {
6
public:
7
        int dispatcher(int which,int argc,char** argv);
8
        // fns in the table
9
        int one(int argc, char** argv);
10
        int two(int argc, char** argv);
11
        int three(int argc, char** argv);
12
};
13
 
14
// An InterpFuncP is a pointer to an PTcl function that takes an argc-argv
15
// argument list and returns TCL_OK or TCL_ERROR.
16
 
17
typedef int (PTcl::*InterpFuncP)(int,char**);
18
 
19
struct InterpTableEntry {
20
        const char* name;
21
        InterpFuncP func;
22
};
23
 
24
// Here is the function table and dispatcher function.
25
// These macros define entries for the table
26
 
27
#define quote(x) #x
28
#define ENTRY(verb) { quote(verb), &PTcl::verb }
29
 
30
static InterpTableEntry funcTable[] = {
31
        ENTRY(one),
32
        ENTRY(two),
33
        ENTRY(three),
34
        {0, 0}
35
};
36
 
37
int PTcl::dispatcher(int which, int argc, char** argv) {
38
        return (this->*(funcTable[which].func))(argc, argv);
39
}
40
 
41
void printargs(char** argv) {
42
//      while (*argv) {
43
//              cout << " " << *argv++;
44
//      }
45
//      cout << "\n";
46
}
47
 
48
int PTcl::one(int, char** argv) {
49
  std::cout << "FAIL\n";
50
        printargs(argv);
51
        return 1;
52
}
53
 
54
int PTcl::two(int, char** argv) {
55
  std::cout << "PASS\n";
56
        printargs(argv);
57
        return 0;
58
}
59
 
60
int PTcl::three(int, char** argv) {
61
  std::cout << "FAIL\n";
62
        printargs(argv);
63
        return 1;
64
}
65
 
66
int main (int argc, char** argv) {
67
        PTcl obj;
68
        return obj.dispatcher(1,argc,argv);
69
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.