/[svn]/linuxsampler/trunk/src/engines/common/InstrumentScriptVMFunctions.h
ViewVC logotype

Annotation of /linuxsampler/trunk/src/engines/common/InstrumentScriptVMFunctions.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2630 - (hide annotations) (download) (as text)
Fri Jun 13 15:01:06 2014 UTC (9 years, 10 months ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 5228 byte(s)
* Implemented built-in instrument script function "set_event_mark()".
* Implemented built-in instrument script function "delete_event_mark()".
* Implemented built-in instrument script function "by_marks()".
* Added built-in instrument script int const variables $MARK_1 to $MARK_28.
* Built-in instrument script functions "ignore_event()", "note_off()" and
  "gig_set_dim_zone()" now also accept an array of event IDs as argument
  (i.e. return value of new script function "by_marks()").
* Bumped version (1.0.0.svn53).

1 schoenebeck 2596 /*
2     * Copyright (c) 2014 Christian Schoenebeck
3     *
4     * http://www.linuxsampler.org
5     *
6     * This file is part of LinuxSampler and released under the same terms.
7     * See README file for details.
8     */
9    
10     #ifndef LS_INSTRSCRIPTVMFUNCTIONS_H
11     #define LS_INSTRSCRIPTVMFUNCTIONS_H
12    
13     #include "../../common/global.h"
14     #include "../../scriptvm/CoreVMFunctions.h"
15    
16     namespace LinuxSampler {
17    
18 schoenebeck 2630 class EventGroup;
19 schoenebeck 2596 class InstrumentScriptVM;
20    
21 schoenebeck 2598 class InstrumentScriptVMFunction_play_note : public VMIntResultFunction {
22 schoenebeck 2596 public:
23     InstrumentScriptVMFunction_play_note(InstrumentScriptVM* parent);
24     int minRequiredArgs() const { return 1; }
25     int maxAllowedArgs() const { return 4; }
26     bool acceptsArgType(int iArg, ExprType_t type) const { return type == INT_EXPR;}
27     ExprType_t argType(int iArg) const { return INT_EXPR; }
28     VMFnResult* exec(VMFnArgs* args);
29     protected:
30     InstrumentScriptVM* m_vm;
31     };
32    
33 schoenebeck 2600 class InstrumentScriptVMFunction_set_controller : public VMIntResultFunction {
34     public:
35     InstrumentScriptVMFunction_set_controller(InstrumentScriptVM* parent);
36     int minRequiredArgs() const { return 2; }
37     int maxAllowedArgs() const { return 2; }
38     bool acceptsArgType(int iArg, ExprType_t type) const { return type == INT_EXPR;}
39     ExprType_t argType(int iArg) const { return INT_EXPR; }
40     VMFnResult* exec(VMFnArgs* args);
41     protected:
42     InstrumentScriptVM* m_vm;
43     };
44    
45 schoenebeck 2598 class InstrumentScriptVMFunction_ignore_event : public VMEmptyResultFunction {
46     public:
47     InstrumentScriptVMFunction_ignore_event(InstrumentScriptVM* parent);
48     int minRequiredArgs() const { return 1; }
49     int maxAllowedArgs() const { return 1; }
50 schoenebeck 2630 bool acceptsArgType(int iArg, ExprType_t type) const;
51 schoenebeck 2598 ExprType_t argType(int iArg) const { return INT_EXPR; }
52     VMFnResult* exec(VMFnArgs* args);
53     protected:
54     InstrumentScriptVM* m_vm;
55     };
56    
57     class InstrumentScriptVMFunction_ignore_controller : public VMEmptyResultFunction {
58     public:
59     InstrumentScriptVMFunction_ignore_controller(InstrumentScriptVM* parent);
60     int minRequiredArgs() const { return 0; }
61     int maxAllowedArgs() const { return 1; }
62     bool acceptsArgType(int iArg, ExprType_t type) const { return type == INT_EXPR;}
63     ExprType_t argType(int iArg) const { return INT_EXPR; }
64     VMFnResult* exec(VMFnArgs* args);
65     protected:
66     InstrumentScriptVM* m_vm;
67     };
68    
69 schoenebeck 2629 class InstrumentScriptVMFunction_note_off : public VMEmptyResultFunction {
70     public:
71     InstrumentScriptVMFunction_note_off(InstrumentScriptVM* parent);
72     int minRequiredArgs() const { return 1; }
73     int maxAllowedArgs() const { return 2; }
74 schoenebeck 2630 bool acceptsArgType(int iArg, ExprType_t type) const;
75     ExprType_t argType(int iArg) const { return INT_EXPR; }
76     VMFnResult* exec(VMFnArgs* args);
77     protected:
78     InstrumentScriptVM* m_vm;
79     };
80    
81     class InstrumentScriptVMFunction_set_event_mark : public VMEmptyResultFunction {
82     public:
83     InstrumentScriptVMFunction_set_event_mark(InstrumentScriptVM* parent);
84     int minRequiredArgs() const { return 2; }
85     int maxAllowedArgs() const { return 2; }
86 schoenebeck 2629 bool acceptsArgType(int iArg, ExprType_t type) const { return type == INT_EXPR;}
87     ExprType_t argType(int iArg) const { return INT_EXPR; }
88     VMFnResult* exec(VMFnArgs* args);
89     protected:
90     InstrumentScriptVM* m_vm;
91     };
92    
93 schoenebeck 2630 class InstrumentScriptVMFunction_delete_event_mark : public VMEmptyResultFunction {
94     public:
95     InstrumentScriptVMFunction_delete_event_mark(InstrumentScriptVM* parent);
96     int minRequiredArgs() const { return 2; }
97     int maxAllowedArgs() const { return 2; }
98     bool acceptsArgType(int iArg, ExprType_t type) const { return type == INT_EXPR;}
99     ExprType_t argType(int iArg) const { return INT_EXPR; }
100     VMFnResult* exec(VMFnArgs* args);
101     protected:
102     InstrumentScriptVM* m_vm;
103     };
104    
105     class InstrumentScriptVMFunction_by_marks : public VMFunction {
106     public:
107     InstrumentScriptVMFunction_by_marks(InstrumentScriptVM* parent);
108     int minRequiredArgs() const { return 1; }
109     int maxAllowedArgs() const { return 1; }
110     bool acceptsArgType(int iArg, ExprType_t type) const { return type == INT_EXPR;}
111     ExprType_t argType(int iArg) const { return INT_EXPR; }
112     ExprType_t returnType() { return INT_ARR_EXPR; }
113     VMFnResult* exec(VMFnArgs* args);
114     protected:
115     InstrumentScriptVM* m_vm;
116     class Result : public VMFnResult, public VMIntArrayExpr {
117     public:
118     StmtFlags_t flags;
119     EventGroup* eventGroup;
120    
121     int arraySize() const OVERRIDE;
122     int evalIntElement(uint i) OVERRIDE;
123     void assignIntElement(uint i, int value) OVERRIDE {} // ignore assignment
124     VMExpr* resultValue() OVERRIDE { return this; }
125     StmtFlags_t resultFlags() { return flags; }
126     } m_result;
127    
128     VMFnResult* errorResult();
129     VMFnResult* successResult(EventGroup* eventGroup);
130     };
131    
132 schoenebeck 2596 } // namespace LinuxSampler
133    
134     #endif // LS_INSTRSCRIPTVMFUNCTIONS_H

  ViewVC Help
Powered by ViewVC