1 : #include <aterm2.h>
2 : #ifdef __cplusplus
3 : namespace nix {
4 : #endif
5 :
6 :
7 : extern AFun symDerive;
8 :
9 : static inline ATerm makeDerive(ATermList e1, ATermList e2, ATermList e3, ATerm e4, ATerm e5, ATermList e6, ATermList e7) __attribute__ ((pure, nothrow));
10 245 : static inline ATerm makeDerive(ATermList e1, ATermList e2, ATermList e3, ATerm e4, ATerm e5, ATermList e6, ATermList e7) {
11 245 : ATerm array[7] = { (ATerm) e1, (ATerm) e2, (ATerm) e3, e4, e5, (ATerm) e6, (ATerm) e7};
12 245 : return (ATerm) ATmakeApplArray(symDerive, array);
13 : }
14 :
15 : #ifdef __cplusplus
16 193 : static inline bool matchDerive(ATerm e, ATermList & e1, ATermList & e2, ATermList & e3, ATerm & e4, ATerm & e5, ATermList & e6, ATermList & e7) {
17 193 : if (ATgetType(e) != AT_APPL || (AFun) ATgetAFun(e) != symDerive) return false;
18 193 : e1 = (ATermList) ATgetArgument(e, 0);
19 193 : e2 = (ATermList) ATgetArgument(e, 1);
20 193 : e3 = (ATermList) ATgetArgument(e, 2);
21 193 : e4 = ATgetArgument(e, 3);
22 193 : if (ATgetType(e4) != AT_APPL) return false;
23 193 : e5 = ATgetArgument(e, 4);
24 193 : if (ATgetType(e5) != AT_APPL) return false;
25 193 : e6 = (ATermList) ATgetArgument(e, 5);
26 193 : e7 = (ATermList) ATgetArgument(e, 6);
27 193 : return true;
28 : }
29 : #endif
30 :
31 :
32 : extern AFun symEnvBinding;
33 :
34 : static inline ATerm makeEnvBinding(ATerm e1, ATerm e2) __attribute__ ((pure, nothrow));
35 1507 : static inline ATerm makeEnvBinding(ATerm e1, ATerm e2) {
36 1507 : return (ATerm) ATmakeAppl2(symEnvBinding, e1, e2);
37 : }
38 :
39 : #ifdef __cplusplus
40 1255 : static inline bool matchEnvBinding(ATerm e, ATerm & e1, ATerm & e2) {
41 1255 : if (ATgetType(e) != AT_APPL || (AFun) ATgetAFun(e) != symEnvBinding) return false;
42 1255 : e1 = ATgetArgument(e, 0);
43 1255 : if (ATgetType(e1) != AT_APPL) return false;
44 1255 : e2 = ATgetArgument(e, 1);
45 1255 : if (ATgetType(e2) != AT_APPL) return false;
46 1255 : return true;
47 : }
48 : #endif
49 :
50 :
51 : extern AFun symDerivationInput;
52 :
53 : static inline ATerm makeDerivationInput(ATerm e1, ATermList e2) __attribute__ ((pure, nothrow));
54 96 : static inline ATerm makeDerivationInput(ATerm e1, ATermList e2) {
55 96 : return (ATerm) ATmakeAppl2(symDerivationInput, e1, (ATerm) e2);
56 : }
57 :
58 : #ifdef __cplusplus
59 123 : static inline bool matchDerivationInput(ATerm e, ATerm & e1, ATermList & e2) {
60 123 : if (ATgetType(e) != AT_APPL || (AFun) ATgetAFun(e) != symDerivationInput) return false;
61 123 : e1 = ATgetArgument(e, 0);
62 123 : if (ATgetType(e1) != AT_APPL) return false;
63 123 : e2 = (ATermList) ATgetArgument(e, 1);
64 123 : return true;
65 : }
66 : #endif
67 :
68 :
69 : extern AFun symDerivationOutput;
70 :
71 : static inline ATerm makeDerivationOutput(ATerm e1, ATerm e2, ATerm e3, ATerm e4) __attribute__ ((pure, nothrow));
72 245 : static inline ATerm makeDerivationOutput(ATerm e1, ATerm e2, ATerm e3, ATerm e4) {
73 245 : return (ATerm) ATmakeAppl4(symDerivationOutput, e1, e2, e3, e4);
74 : }
75 :
76 : #ifdef __cplusplus
77 193 : static inline bool matchDerivationOutput(ATerm e, ATerm & e1, ATerm & e2, ATerm & e3, ATerm & e4) {
78 193 : if (ATgetType(e) != AT_APPL || (AFun) ATgetAFun(e) != symDerivationOutput) return false;
79 193 : e1 = ATgetArgument(e, 0);
80 193 : if (ATgetType(e1) != AT_APPL) return false;
81 193 : e2 = ATgetArgument(e, 1);
82 193 : if (ATgetType(e2) != AT_APPL) return false;
83 193 : e3 = ATgetArgument(e, 2);
84 193 : if (ATgetType(e3) != AT_APPL) return false;
85 193 : e4 = ATgetArgument(e, 3);
86 193 : if (ATgetType(e4) != AT_APPL) return false;
87 193 : return true;
88 : }
89 : #endif
90 :
91 :
92 : extern AFun symOldClosure;
93 :
94 : static inline ATerm makeOldClosure(ATermList e1, ATermList e2) __attribute__ ((pure, nothrow));
95 : static inline ATerm makeOldClosure(ATermList e1, ATermList e2) {
96 : return (ATerm) ATmakeAppl2(symOldClosure, (ATerm) e1, (ATerm) e2);
97 : }
98 :
99 : #ifdef __cplusplus
100 0 : static inline bool matchOldClosure(ATerm e, ATermList & e1, ATermList & e2) {
101 0 : if (ATgetType(e) != AT_APPL || (AFun) ATgetAFun(e) != symOldClosure) return false;
102 0 : e1 = (ATermList) ATgetArgument(e, 0);
103 0 : e2 = (ATermList) ATgetArgument(e, 1);
104 0 : return true;
105 : }
106 : #endif
107 :
108 :
109 : extern AFun symOldClosureElem;
110 :
111 : static inline ATerm makeOldClosureElem(ATerm e1, ATermList e2) __attribute__ ((pure, nothrow));
112 : static inline ATerm makeOldClosureElem(ATerm e1, ATermList e2) {
113 : return (ATerm) ATmakeAppl2(symOldClosureElem, e1, (ATerm) e2);
114 : }
115 :
116 : #ifdef __cplusplus
117 0 : static inline bool matchOldClosureElem(ATerm e, ATerm & e1, ATermList & e2) {
118 0 : if (ATgetType(e) != AT_APPL || (AFun) ATgetAFun(e) != symOldClosureElem) return false;
119 0 : e1 = ATgetArgument(e, 0);
120 0 : if (ATgetType(e1) != AT_APPL) return false;
121 0 : e2 = (ATermList) ATgetArgument(e, 1);
122 0 : return true;
123 : }
124 : #endif
125 :
126 :
127 : void initDerivationsHelpers();
128 :
129 4600 : static inline const char * aterm2String(ATerm t) {
130 4600 : return (const char *) ATgetName(ATgetAFun(t));
131 : }
132 :
133 : #ifdef __cplusplus
134 : }
135 : #endif
136 :
137 :
|