File: marshall.h

package info (click to toggle)
libqt-perl 3.008-3.1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 4,212 kB
  • ctags: 1,365
  • sloc: perl: 16,458; sh: 9,686; cpp: 6,711; makefile: 78
file content (44 lines) | stat: -rw-r--r-- 1,222 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#ifndef MARSHALL_H
#define MARSHALL_H
#include "smoke.h"

class SmokeType;

class Marshall {
public:
    /**
     * FromSV is used for virtual function return values and regular
     * method arguments.
     *
     * ToSV is used for method return-values and virtual function
     * arguments.
     */
    typedef void (*HandlerFn)(Marshall *);
    enum Action { FromSV, ToSV };
    virtual SmokeType type() = 0;
    virtual Action action() = 0;
    virtual Smoke::StackItem &item() = 0;
    virtual SV* var() = 0;
    virtual void unsupported() = 0;
    virtual Smoke *smoke() = 0;
    /**
     * For return-values, next() does nothing.
     * For FromSV, next() calls the method and returns.
     * For ToSV, next() calls the virtual function and returns.
     *
     * Required to reset Marshall object to the state it was
     * before being called when it returns.
     */
    virtual void next() = 0;
    /**
     * For FromSV, cleanup() returns false when the handler should free
     * any allocated memory after next().
     *
     * For ToSV, cleanup() returns true when the handler should delete
     * the pointer passed to it.
     */
    virtual bool cleanup() = 0;

    virtual ~Marshall() {}
};    
#endif