GameApi 28
Library used by GameApi Builder tool
Loading...
Searching...
No Matches
GameApi_cmd.hh
Go to the documentation of this file.
1
2
3#ifdef DEFINE_ALL
4#define FEATURE_GLTF 1
5#define FEATURE_VOXEL 1
6#define FEATURE_VOLUME 1
7#else
8#define FEATURE_GLTF 1
9#define FEATURE_VOXEL 1
10#define FEATURE_VOLUME 1
11#endif
12#define FEATURE_FONT 1
13#define FEATURE_MATERIAL 1
14#define FEATURE_FRAMEBUFFER 1
15#define FEATURE_PTS 1
16#define FEATURE_WAVEFORM 1
17#define FEATURE_GUI 1
18#define FEATURE_BOOLEANOPS 1
19#define FEATURE_OGL_SETUP 1
20
21#ifdef DEFINE_ALL
22#define ALL 1
23#else
25#endif
26
27
28
29
30#if (NEWSHADOW2_GLTF==1)||(GLTF_NEWSHADOW2==1)
31#define FEATURE_GLTF 1
32#endif
33#if (SPHERE_BO==1)||(OR_ELEM_BO==1)||(INTERSECT_BO==1)||(CUBE_BO==1)||(FD_MIN==1)
34#define FEATURE_VOLUME 1
35#endif
36
37
38
39int ret_type_count(std::string s);
41{
42 std::vector<GameApiItem*> items;
43 ~DelApiItemF() { int s = items.size(); for(int i=0;i<s;i++) delete items[i]; }
44};
45int to_int(std::string s);
46float to_float(std::string s);
47
49
50template<class T>
51void set_empty(GameApi::EveryApi &ev, T &t) { t.id=0; }
52
53#define MACRO2(lab, funccall) \
54 void set_empty(GameApi::EveryApi&ev,lab &l);
55
56MACRO2(GameApi::BM,ev.bitmap_api.newbitmap(10,10,0x00000000))
57#if (FEATURE_VOLUME==1)
58MACRO2(GameApi::FD,ev.dist_api.fd_cube(0.0,0.0,0.0,0.0,0.0,0.0))
59#endif
60MACRO2(GameApi::BO,ev.bool_api.cube_bo(ev,0.0,0.0,0.0,0.0,0.0,0.0,1,1))
61MACRO2(GameApi::BB,ev.bool_bitmap_api.bb_empty(10,10))
62MACRO2(GameApi::FB,ev.float_bitmap_api.fb_empty(10,10))
63MACRO2(GameApi::PT,ev.point_api.origo())
64MACRO2(GameApi::V,ev.vector_api.null_vector())
65MACRO2(GameApi::FO,ev.float_volume_api.distance())
66MACRO2(GameApi::SFO,ev.sh_api.cube())
67MACRO2(GameApi::O,ev.volume_api.o_cube(0.0,0.0,0.0,0.0,0.0,0.0))
68MACRO2(GameApi::CBM,ev.cont_bitmap_api.cbm_empty(10.0,10.0))
69MACRO2(GameApi::P,ev.polygon_api.p_empty())
70MACRO2(GameApi::SH,ev.shader_api.colour_shader())
71MACRO2(GameApi::CO,ev.color_api.u_color(0xffffffff))
72MACRO2(GameApi::LI,ev.lines_api.from_polygon(ev.polygon_api.p_empty()))
73MACRO2(GameApi::MN,ev.move_api.mn_empty())
74MACRO2(GameApi::MT,ev.materials_api.m_def(ev))
75MACRO2(GameApi::C,ev.curve_api.linear(std::vector<GameApi::PT>()))
76MACRO2(GameApi::PD,ev.polygon_dist_api.empty(ev))
77MACRO2(GameApi::WV,ev.waveform_api.wv_empty(1.0))
78MACRO2(GameApi::ML,ev.polygon_api.render_vertex_array_ml2(ev,ev.polygon_api.p_empty()))
79MACRO2(GameApi::CFB,ev.float_bitmap_api.X_bitmap(300.0,300.0))
80MACRO2(GameApi::FI,ev.font_api.load_font("https://meshpage.org/assets/Chunkfive.otf",20,20))
81MACRO2(GameApi::HML,ev.mainloop_api.html_url("https://meshpage.org/assets/empty_hml.mp"))
82MACRO2(GameApi::PTS,ev.points_api.pt_array(ev,std::vector<GameApi::PT>{ev.point_api.point(0.0,0.0,0.0)}))
83MACRO2(GameApi::IBM,ev.bitmap_api.convert_fb_to_ibm_bitmap(ev.float_bitmap_api.fb_empty(10,10),0.0,0.3))
84MACRO2(GameApi::TF,ev.mainloop_api.gltf_loadKK2("https://meshpage.org/assets/test.glb"))
85MACRO2(GameApi::OVX,ev.voxel_api.empty_ovx())
86MACRO2(GameApi::FS,ev.float_scene_api.fs_sphere(0.0,0.0,0.0,300.0))
87#undef MACRO2
88
89std::string empty_param(std::string s);
90std::string unique_id_apiitem();
91
92
93template<class T>
94class TypeToString { public: static constexpr const char * str=""; };
95
96#define MAC(a) \
97 template<> class TypeToString<GameApi::a> { public: static constexpr const char * str=#a; };
98
99 MAC(BS)
100 MAC(US)
101 MAC(CS)
102 MAC(CSI)
103 MAC(TT)
104 MAC(PBO)
105 MAC(SHP)
106 MAC(SHI)
107 MAC(AA)
108 MAC(GC)
109 MAC(GS)
110 MAC(HML)
111 MAC(UV)
112 MAC(AV)
113 MAC(H)
114 MAC(FBU)
115 MAC(FML)
116 MAC(CG)
117 MAC(INP)
118 MAC(IBM)
119 MAC(DS)
120 MAC(SBM)
121 MAC(PN)
122 MAC(DC)
123 MAC(CBB)
124 MAC(CFB)
125 MAC(SI)
126 MAC(PLP)
127 MAC(PLL)
128 MAC(PLF)
129 MAC(PR)
130 MAC(CMD)
131 MAC(FI)
132 MAC(SD)
133 MAC(GI)
134 MAC(FF)
135 MAC(IF)
136 MAC(PF)
137 MAC(SF)
138 MAC(ARR)
139 MAC(PAR)
140 MAC(CPP)
141 MAC(PTT)
142 MAC(KF)
143 MAC(BLK)
144 MAC(RUN)
145 MAC(EV)
146 MAC(AC)
147 MAC(MX)
148 MAC(Pa)
149 MAC(Va)
150 MAC(AS)
151 MAC(MC)
152 MAC(MS)
153 MAC(MT)
154 MAC(SMT)
155 MAC(TL)
156 MAC(MN)
157 MAC(CP)
158 MAC(DR)
159 MAC(OM)
160 MAC(FO)
161 MAC(WV)
162 MAC(BM)
163 MAC(BMA)
164 MAC(VBM)
165 MAC(BB)
166 MAC(FB)
167 MAC(CBM)
168 MAC(SP)
169 MAC(SA)
170 MAC(PT)
171 MAC(V)
172 MAC(LN)
173 MAC(RM)
174 MAC(IS)
175 MAC(O)
176 MAC(P)
177 MAC(OO)
178 MAC(PP)
179 MAC(PA)
180 MAC(LA)
181 MAC(TN)
182 MAC(SH)
183 MAC(C)
184 MAC(CO)
185 MAC(F)
186 MAC(FA)
187 MAC(Ft)
188 MAC(VF)
189 MAC(PPT)
190 MAC(PSP)
191 MAC(MA)
192 MAC(S)
193 MAC(Vb)
194 MAC(T)
195 MAC(E)
196 MAC(L)
197 MAC(LAY)
198 MAC(MP)
199 MAC(MV)
200 MAC(LL)
201 MAC(ME)
202 MAC(ST)
203 MAC(TY)
204 MAC(PS)
205 MAC(ID)
206 MAC(Str)
207 MAC(Fi)
208 MAC(Op)
209 MAC(D)
210 MAC(Ht)
211 MAC(BF)
212 MAC(VA)
213 MAC(VAA)
214 MAC(VX)
215 MAC(PL)
216 MAC(PLA)
217 MAC(TX)
218 MAC(TXID)
219 MAC(TXA)
220 MAC(TR)
221 MAC(VV)
222 MAC(Q)
223 MAC(DO)
224 MAC(PC)
225 MAC(SV)
226 MAC(FOA)
227 MAC(COV)
228 MAC(LI)
229 MAC(LLA)
230 MAC(FD)
231 MAC(VO)
232 MAC(PTS)
233 MAC(MSA)
234 MAC(PTA)
235 MAC(RD)
236 MAC(FBO)
237 MAC(SM)
238 MAC(TRK)
239 MAC(WAV)
240 MAC(TBUF)
241 MAC(SFO)
242 MAC(W)
243 MAC(WM)
244 MAC(FtA)
245 MAC(ML)
246 MAC(GML)
247 MAC(TF)
248 MAC(SHC)
249 MAC(EX)
250 MAC(PH)
251 MAC(TS)
252 MAC(CT)
253 MAC(CC)
254 MAC(IM)
255 MAC(FFi)
256 MAC(VFi)
257 MAC(MB)
258 MAC(PKG)
259 MAC(ATT)
260 MAC(CX)
261 MAC(OVX)
262 MAC(TRA)
263 MAC(TRB)
264 MAC(TRR)
265 MAC(FS)
266#undef MAC
267
268
269template<class T, class RT, class... P>
270int funccall(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, T (GameApi::EveryApi::*api),
271 RT (T::*fptr)(P...), std::vector<std::string> s, GameApi::ExecuteEnv &e, const std::vector<std::string> &param_name, const std::string &return_type);
272
273
274
275
276std::pair<std::string,std::string> CodeGen_1(GameApi::EveryApi &ev, std::vector<std::string> params, std::vector<std::string> param_names, std::vector<std::string> param_type, std::vector<std::string> param_exprs, std::string return_type, std::string api_name, std::string func_name, int j);
277
279{
280 std::string def;
281 std::string author;
282 std::string license;
283};
284
285ApiSplit split_api_default(std::string def);
286
287
288template<std::size_t ...>
289struct add_all : std::integral_constant< std::size_t,0 > { };
290
291template<std::size_t X, std::size_t ... Xs>
292struct add_all<X,Xs...> : std::integral_constant< std::size_t, X+add_all<Xs...>::value> { };
293
294
295inline bool print_if_false(const bool assertion, std::string msg) {
296 if(!assertion) {
297 // endl to flush
298 std::cout << msg << std::endl;
299 }
300 return assertion;
301}
302
303template<class T, class RT, class... P>
304class ApiItem : public GameApiItem
305{
306public:
307 ApiItem(T (GameApi::EveryApi::*api), RT (T::*fptr)(P...),
308 std::string name,
309 std::vector<std::string> param_name,
310 std::vector<std::string> param_type,
311 std::vector<std::string> param_default,
312 std::string ret_type, std::string api_name, std::string func_name,
313 std::string symbols, std::string comment)
314 : api(api), fptr(fptr), name(name), param_name(param_name),
315 param_type(param_type), param_default(param_default),
316 return_type(ret_type), api_name(api_name), func_name(func_name), symbols(symbols), comment(comment) { }
317 int Count() const { return 1; }
318 std::string Name(int i) const { return name; }
319 int ParamCount(int i) const {
320 assert(print_if_false(sizeof...(P) == param_name.size(),"ERROR: param_name array size problems: " + api_name + "::" + name));
321 assert(print_if_false(sizeof...(P) == param_type.size(),"ERROR: param_type array size problems: " + api_name + "::" + name));
322 assert(print_if_false(sizeof...(P) == param_default.size(),"ERROR: param_default array size problems: " + name));
323 return param_name.size(); }
324 std::string ParamName(int i, int p) const { return param_name[p]; }
325 std::string ParamType(int i, int p) const { return param_type[p]; }
326 std::string ParamDefault(int i, int p) const { return split_api_default(param_default[p]).def; }
327 std::string DefaultAuthor(int i, int p) const { return split_api_default(param_default[p]).author; }
328 std::string DefaultLicense(int i, int p) const { return split_api_default(param_default[p]).license; }
329 std::string ReturnType(int i) const { return return_type; }
330 std::string ApiName(int i) const { return api_name; }
331 std::string FuncName(int i) const { return func_name; }
332 std::string Symbols() const { return symbols; }
333 std::string Comment() const { return comment; }
334
335#if USE_CHAISCRIPT
336 static RT chai_cb(GameApiItem *item, GameApi::EveryApi *ev, T (GameApi::EveryApi::*api), P... p) {
337 ApiItem<T,RT,P...> *ptr = (ApiItem<T,RT,P...>*)item;
338 T *ptr2 = &(ev->*api);
339 RT val = (ptr2->*(ptr->fptr))(p...);
340 return val;
341 }
342 void RegisterToChai(GameApi::EveryApi *ev, chaiscript::ChaiScript *chai)
343 {
344 std::function<RT (P... p)> f = [ev,this](P...p) -> RT { return chai_cb(this, ev, this->api, p...); };
345 chai->add(chaiscript::fun(f), func_name.c_str());
346 }
347#endif
348
349 int Execute(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, std::vector<std::string> params, GameApi::ExecuteEnv &e, int j)
350 {
351 int s = params.size();
352 for(int i=0;i<s;i++) if (params[i]=="") params[i]="?";
353
354 //std::cout << "PARAMS_SIZE:" << params.size() << "==" << param_name.size() << std::endl;
355 if (params.size()!=param_name.size()) {
356 if (ApiName(0)=="mainloop_api" && FuncName(0)=="array_ml") {
357 params.insert(params.begin(),"ev");
358 } else {
359 std::cout << "Error: param vectors different size: " << ApiName(0) << "::" << FuncName(0) << std::endl;
360 }
361 }
362 int ret = funccall(ss,ee, ev, api, fptr, params, e, param_name, return_type);
363 int ret_count = ret_type_count(return_type);
364 if (ret_count>1 && j!=-1)
365 { // multiple return values
366 GameApi::ARR arr;
367 arr.id = ret;
368 ArrayType *t = find_array(ee, arr);
369 ret = t->vec[j];
370 }
371 return ret;
372 }
373
374
375 std::pair<std::string,std::string> CodeGen(GameApi::EveryApi &ev, std::vector<std::string> params, std::vector<std::string> param_names, std::vector<std::string> param_exprs, int j)
376 {
377 std::pair<std::string,std::string> p = CodeGen_1(ev,params, param_names, param_type, param_exprs,return_type,api_name,func_name,j);
378 return p;
379 }
380private:
381 T GameApi::EveryApi::*api;
382 RT (T::*fptr)(P...);
383 std::string name;
384 std::vector<std::string> param_name;
385 std::vector<std::string> param_type;
386 std::vector<std::string> param_default;
387 std::string return_type;
388 std::string api_name;
389 std::string func_name;
390 std::string symbols;
391 std::string comment;
392};
393
394
395
396
397
398template<class T>
400{
401public:
402 T from_stream(std::stringstream &ss, GameApi::EveryApi &ev)
403 {
404 //std::cout << "Type using default: " << typeid(T).name() << std::endl;
405 bool neg = false;
406 std::string s;
407 ss >> s;
408
409 if (s.size()>0 && s[0]=='-')
410 {
411 neg = true;
412 s = s.substr(1);
413 }
414
415 T t;
416 std::stringstream is(s);
417 is >> t;
418 if (neg) t = -t;
419
420 //std::cout << "Default: " << t << std::endl;
421 return t;
422 }
423};
424
425std::string FloatExprEval(std::string s);
426int find_float_ch(std::string s, char ch);
427
428
429float to_float(std::string s);
430
431
432
433#define MACRO(lab) \
434template<> \
435class FromStreamClass<lab> \
436{ \
437public:\
438 lab from_stream(std::stringstream &ss, GameApi::EveryApi &ev)\
439 {\
440 lab bm;\
441 std::string s;\
442 ss >> s;\
443 if (s=="@") {\
444 set_empty(ev,bm);\
445 std::cout << "Warning: Empty slot in left side of node detected! " << TypeToString<lab>::str << std::endl; \
446 return bm;\
447 }\
448 bm.id = to_int(s);\
449 return bm;\
450 }\
451};
452MACRO(GameApi::CS)
453MACRO(GameApi::CSI)
454MACRO(GameApi::GML)
529MACRO(GameApi::AV)
530MACRO(GameApi::UV)
531MACRO(GameApi::FFi)
532MACRO(GameApi::VFi)
534MACRO(GameApi::PKG)
535MACRO(GameApi::GS)
536MACRO(GameApi::TF)
537MACRO(GameApi::HML)
538MACRO(GameApi::PBO)
539MACRO(GameApi::SHP)
540MACRO(GameApi::SHI)
541MACRO(GameApi::SHC)
542MACRO(GameApi::SMT)
543MACRO(GameApi::TT)
544MACRO(GameApi::BS)
545MACRO(GameApi::OVX)
549MACRO(GameApi::PV)
550MACRO(GameApi::FS)
551#undef MACRO
552
553
554template<>
555class FromStreamClass<float>
556{
557public:
558 float from_stream(std::stringstream &ss, GameApi::EveryApi &ev)
559 {
560 //std::cout << "Type using default: " << typeid(T).name() << std::endl;
561
562 std::string s;
563 ss >> s;
564 bool neg = false;
565 if (s.size()>0 && s[0]=='-')
566 {
567 neg = true;
568 s = s.substr(1);
569 }
570 s=FloatExprEval(s);
571
572 float t;
573 //std::stringstream is(s);
574 t = to_float(s);
575 if (neg) t = -t;
576
577 //std::cout << "Default: " << t << std::endl;
578 return t;
579 }
580};
581
582
583template<>
584class FromStreamClass<std::string>
585{
586public:
587 std::string from_stream(std::stringstream &ss, GameApi::EveryApi &ev)
588 {
589 std::string s;
590 ss >> s;
591 if (s.size()>0 && s[0]=='"' && s[s.size()-1]=='"')
592 {
593 s=s.substr(1,s.size()-2);
594 }
595 if (s=="?") s="";
596 return s;
597 }
598};
599template<>
600class FromStreamClass<GameApi::EveryApi &>
601{
602public:
604 {
605 std::string s;
606 ss >> s;
607 return ev;
608 }
609};
610
611template<>
613{
614public:
615 bool from_stream(std::stringstream &ss, GameApi::EveryApi &ev)
616 {
617 std::string s;
618 ss >> s;
619 if (s=="false") return false;
620 if (s=="true") return true;
621 if (s=="1") return true;
622 return false;
623 }
624};
625
626
627
628template<>
629class FromStreamClass<unsigned int>
630{
631public:
632 unsigned int from_stream(std::stringstream &ss, GameApi::EveryApi &ev)
633 {
634 unsigned int bm;
635 //char c;
636 //is >> c;
637 //is >> c;
638 //std::stringstream is(s);
639 ss >> std::hex >> bm >> std::dec;
640 return bm;
641 }
642};
643
644template<>
645class FromStreamClass<std::vector<std::string>>
646{
647public:
648 std::vector<std::string> from_stream(std::stringstream &sk, GameApi::EveryApi &ev)
649 {
650 std::string s;
651 sk >> s;
652 std::vector<std::string> vec;
653 if (s.size()<2)
654 {
655 std::cout << "from_stream length problem" << std::endl;
656 return vec;
657 }
658 char c = s[0];
659 if (c!='[') { std::cout << "from_stream parse error on std::vector" << std::endl; return vec; }
660
662 int ss = s.size();
663 std::string next;
664 int prev = 1;
665 for(int i=1;i<ss;i++)
666 {
667 if (s[i]==',' || s[i]==']')
668 {
669 std::string substr = s.substr(prev, i-prev);
670 std::stringstream sk1(substr);
671 //std::cout << "SUBSTR:" << substr << std::endl;
672 std::string t = cls.from_stream(sk1, ev);
673 //std::cout << "RESULT:" << t << std::endl;
674 vec.push_back(t);
675 prev=i+1;
676 if (s[i]==']') { break; }
677 }
678 }
679 return vec;
680 }
681};
682
683template<class T>
684class FromStreamClass<std::vector<T>>
685{
686public:
687 std::vector<T> from_stream(std::stringstream &sk, GameApi::EveryApi &ev)
688 {
689 std::string s;
690 sk >> s;
691
692 if (s=="@") return std::vector<T>();
693 //std::cout << "Vector:" << s << std::endl;
694 std::vector<T> vec;
695 if (s.size()>0 && s[0]!='[')
696 { // ARR version
697 //std::cout << "Arr version" << s << std::endl;
698 GameApi::ARR arr;
699 std::stringstream ss(s);
700 ss >> arr.id;
701 ArrayType *t = find_array(ev.get_env(), arr);
702 int s = t->vec.size();
703 for(int i=0;i<s;i++)
704 {
705 T tt;
706 tt.id = t->vec[i];
707 vec.push_back(tt);
708 }
709 return vec;
710 }
711 if (s.size()<2)
712 {
713 std::cout << "from_stream length problem" << std::endl;
714 return vec;
715 }
716 char c = s[0];
717 if (c!='[') { std::cout << "from_stream parse error on std::vector" << std::endl; return vec; }
718
720 int ss = s.size();
721 std::string next;
722 int prev = 1;
723 for(int i=1;i<ss;i++)
724 {
725 if (s[i]==',' || s[i]==']')
726 {
727 std::string substr = s.substr(prev, i-prev);
728 std::stringstream sk1(substr);
729 // std::cout << "SUBSTR:" << substr << ":" << std::endl;
730 T t = cls.from_stream(sk1, ev);
731 //std::cout << "RESULT:" << t.id << std::endl;
732 vec.push_back(t);
733 prev=i+1;
734 if (s[i]==']') { break; }
735 }
736 }
737 return vec;
738 }
739};
740
741
742
743
744void funccall_1(std::vector<std::string> &s, GameApi::ExecuteEnv &e, std::vector<std::string> param_name);
745
746template<typename T> T from_stream2(std::stringstream &is, GameApi::EveryApi &ev)
747{
749 //std::string s;
750 //is >> s;
751 //std::cout << "FromStreamClass: " << s << " " << typeid(T).name() << std::endl;
752 return cls.from_stream(is,ev);
753}
754
755#if 0
756
757template<class...T,std::size_t... Is>
758void read_tuple(std::istream &is, std::tuple<T...>&t, std::index_sequence<Is...>)
759{
760 ( (is >> std::get<Is>(t)), ... );
761}
762
763template<class RT,class...P>
764RT call_working(std::istream &params, std::function<RT(P...)> fptr ) {
765 std::tuple<P...> args;
766 read_tuple(params, args, std::make_index_sequence<sizeof...(P)>{});
767 RT t = std::apply(fptr,args);
768 return t;
769}
770
771#endif
772
773
774template<class T, class RT, class... P>
775int funccall(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, T (GameApi::EveryApi::*api),
776 RT (T::*fptr)(P...), std::vector<std::string> s, GameApi::ExecuteEnv &e, const std::vector<std::string> &param_name, const std::string &return_type)
777{
778 funccall_1(s,e,param_name);
779
780#ifdef EMSCRIPTEN
781#define ORDER 1
782#endif
783#ifdef ANDROID
784#define ORDER 1
785#endif
786#ifdef RASPI
787#define ORDER 1
788#endif
789#ifdef ARM2
790#define ORDER 1
791#endif
792
793#if 0
794
795 //std::stringstream ss;
796 int s2 = s.size();
797#ifndef ORDER
798 for(int i=s2-1;i>=0;i--)
799 {
800 ss << s[i] << " ";
801 }
802 //std::cout << "NO ORDER!" << std::endl;
803#else
804 for(int i=0;i<s2;i++)
805 {
806 ss << s[i] << " ";
807 }
808 // std::cout << "YES ORDER!" << std::endl;
809#endif
810 // std::cout << "FuncCall: " << ss.str() << std::endl;
811
812 //std::stringstream ss2(ss.str());
813 T *ptr = &(ev.*api);
814 RT val = (ptr->*fptr)(from_stream2<P>(ss,ev)...);
815
816#endif
817
818 int s2 = s.size();
819 for(int i=0;i<s2;i++)
820 {
821 ss << s[i] << " ";
822 }
823
824 std::tuple<P...> args = {from_stream2<P>(ss,ev)...};
825
826 T *ptr = &(ev.*api);
827
828 RT val = std::apply([&](auto&&... unpacked) {
829 return (ptr->*fptr)(unpacked...);
830 }, args);
831
832 //RT val = call_working<RT,P...>(ss,std::function<RT(P...)>([ptr,fptr](P... p) -> RT { return (ptr->*fptr)(p...);}));
833
834 //std::cout << "RETURN:" << val.id << std::endl;
835 //std::cout << "RETURN TYPE:" << return_type << std::endl;
836
837 //std::cout << "FuncCall returning: " << val.id << std::endl;
838 return val.id; //template_get_id(val);
839}
840
841
842
843
844
845template<class T, class RT, class... P>
846GameApiItem* ApiItemF(T (GameApi::EveryApi::*api), RT (T::*fptr)(P...),
847 std::string name,
848 std::vector<std::string> param_name,
849 std::vector<std::string> param_type,
850 std::vector<std::string> param_default,
851 std::string return_type, std::string api_name, std::string func_name, std::string symbols="", std::string comment="")
852{
853 GameApiItem *item = new ApiItem<T,RT,P...>(api, fptr, name, param_name, param_type, param_default, return_type, api_name, func_name, symbols,comment);
854 g_api_item_deleter.items.push_back(item);
855 return item;
856}
857
858
860{
861public:
863 virtual int Count() const { return 1; }
864 virtual std::string Name(int i) const { return "env_params_int"; }
865 virtual int ParamCount(int i) const { return 1+5; }
866 virtual std::string ParamName(int i, int p) const {
867 switch(p) {
868 case 0: return "ml";
869 case 1: return "&1";
870 case 2: return "&2";
871 case 3: return "&3";
872 case 4: return "&4";
873 case 5: return "&5";
874 default: return "";
875 };
876 }
877 virtual std::string ParamType(int i, int p) const {
878 switch(p) {
879 case 0: return "ML";
880 case 1:
881 case 2:
882 case 3:
883 case 4:
884 case 5:
885 return "std::string";
886 default:
887 return "";
888 };
889 }
890 virtual std::string ParamDefault(int i, int p) const {
891 switch(p) {
892 case 0: return "";
893 case 1:
894 case 2:
895 case 3:
896 case 4:
897 case 5:
898 return "@";
899 default:
900 return "";
901 };
902 }
903 virtual std::string DefaultAuthor(int i, int p) const { return ""; }
904 virtual std::string DefaultLicense(int i, int p) const { return ""; }
905 virtual std::string ReturnType(int i) const { return "ML"; }
906 virtual std::string ApiName(int i) const { return "mainloop_api"; }
907 virtual std::string FuncName(int i) const { return "identity_int"; }
908 virtual std::string Symbols() const { return ""; }
909 virtual std::string Comment() const { return "env setup"; }
910 virtual int Execute(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, std::vector<std::string> params, GameApi::ExecuteEnv &e, int j)
911 {
912 std::stringstream ss2(params[0]);
913 int val = 0;
914 ss2 >> val;
915 return val;
916 }
917 virtual std::pair<std::string,std::string> CodeGen(GameApi::EveryApi &ev, std::vector<std::string> params, std::vector<std::string> param_names, std::vector<std::string> param_exprs, int j)
918 {
919 std::pair<std::string,std::string> p = CodeGen_1(ev,params, param_names, { "ml","&1","&2","&3","&4","&5" }, param_exprs, "ML","mainloop_api","identity_int",j);
920 return p;
921 }
922 virtual void BeginEnv(GameApi::ExecuteEnv &e, std::vector<GameApiParam> params) {
923 if (params[1].expr != "@")
924 {
925 e.names.push_back("&1");
926 e.values.push_back(params[1].expr);
927 }
928 if (params[2].expr != "@")
929 {
930 e.names.push_back("&2");
931 e.values.push_back(params[2].expr);
932 }
933 if (params[3].expr != "@")
934 {
935 e.names.push_back("&3");
936 e.values.push_back(params[3].expr);
937 }
938
939 if (params[4].expr != "@")
940 {
941 e.names.push_back("&4");
942 e.values.push_back(params[4].expr);
943 }
944 if (params[5].expr != "@")
945 {
946 e.names.push_back("&5");
947 e.values.push_back(params[5].expr);
948 }
949 env_params = params;
950 }
951 virtual void EndEnv(GameApi::ExecuteEnv &e) {
952 int s = e.names.size();
953 for(int i=0;i<s;i++)
954 {
955 if ((e.names[i]=="&1" && env_params[1].expr!="@" )||
956 (e.names[i]=="&2" && env_params[2].expr!="@")||
957 (e.names[i]=="&3" && env_params[3].expr!="@")||
958 (e.names[i]=="&4" && env_params[4].expr!="@")||
959 (e.names[i]=="&5" && env_params[5].expr!="@"))
960 {
961 e.names.erase(e.names.begin() + i);
962 e.values.erase(e.values.begin() + i);
963 i--;
964 s--;
965 }
966 }
967
968 }
969private:
970 std::vector<GameApiParam> env_params;
971};
972
974{
975public:
977 virtual int Count() const { return 1; }
978 virtual std::string Name(int i) const { return "env_params_string"; }
979 virtual int ParamCount(int i) const { return 1+5; }
980 virtual std::string ParamName(int i, int p) const {
981 switch(p) {
982 case 0: return "ml";
983 case 1: return "$1";
984 case 2: return "$2";
985 case 3: return "$3";
986 case 4: return "$4";
987 case 5: return "$5";
988 default: return "";
989 };
990 }
991 virtual std::string ParamType(int i, int p) const {
992 switch(p) {
993 case 0: return "ML";
994 case 1:
995 case 2:
996 case 3:
997 case 4:
998 case 5:
999 return "std::string";
1000 default:
1001 return "";
1002 };
1003 }
1004 virtual std::string ParamDefault(int i, int p) const {
1005 switch(p) {
1006 case 0: return "";
1007 case 1:
1008 case 2:
1009 case 3:
1010 case 4:
1011 case 5:
1012 return "@";
1013 default:
1014 return "";
1015 };
1016 }
1017 virtual std::string DefaultAuthor(int i, int p) const { return ""; }
1018 virtual std::string DefaultLicense(int i, int p) const { return ""; }
1019 virtual std::string ReturnType(int i) const { return "ML"; }
1020 virtual std::string ApiName(int i) const { return "mainloop_api"; }
1021 virtual std::string FuncName(int i) const { return "identity_string"; }
1022 virtual std::string Symbols() const { return ""; }
1023 virtual std::string Comment() const { return "env setup"; }
1024 virtual int Execute(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, std::vector<std::string> params, GameApi::ExecuteEnv &e, int j)
1025 {
1026 std::stringstream ss2(params[0]);
1027 int val = 0;
1028 ss2 >> val;
1029 return val;
1030 }
1031 virtual std::pair<std::string,std::string> CodeGen(GameApi::EveryApi &ev, std::vector<std::string> params, std::vector<std::string> param_names, std::vector<std::string> param_exprs, int j)
1032 {
1033 std::pair<std::string,std::string> p = CodeGen_1(ev,params, param_names, { "ml","$1","$2","$3","$4","$5" }, param_exprs, "ML","mainloop_api","identity_string",j);
1034 return p;
1035 }
1036 virtual void BeginEnv(GameApi::ExecuteEnv &e, std::vector<GameApiParam> params) {
1037 if (params[1].expr != "@")
1038 {
1039 std::cout << "BeginEnv::Choose 1: " << params[1].expr << std::endl;
1040 e.names.push_back("$1");
1041 e.values.push_back(params[1].expr);
1042 }
1043 if (params[2].expr != "@")
1044 {
1045 std::cout << "BeginEnv::Choose 2: " << params[2].expr << std::endl;
1046 e.names.push_back("$2");
1047 e.values.push_back(params[2].expr);
1048 }
1049 if (params[3].expr != "@")
1050 {
1051 std::cout << "BeginEnv::Choose 3: " << params[3].expr << std::endl;
1052 e.names.push_back("$3");
1053 e.values.push_back(params[3].expr);
1054 }
1055
1056 if (params[4].expr != "@")
1057 {
1058 std::cout << "BeginEnv::Choose 4: " << params[4].expr << std::endl;
1059 e.names.push_back("$4");
1060 e.values.push_back(params[4].expr);
1061 }
1062 if (params[5].expr != "@")
1063 {
1064 std::cout << "BeginEnv::Choose 5: " << params[5].expr << std::endl;
1065 e.names.push_back("$5");
1066 e.values.push_back(params[5].expr);
1067 }
1068 env_params = params;
1069 }
1071 int s = e.names.size();
1072 for(int i=0;i<s;i++)
1073 {
1074 if ((e.names[i]=="$1" && env_params[1].expr!="@" )||
1075 (e.names[i]=="$2" && env_params[2].expr!="@")||
1076 (e.names[i]=="$3" && env_params[3].expr!="@")||
1077 (e.names[i]=="$4" && env_params[4].expr!="@")||
1078 (e.names[i]=="$5" && env_params[5].expr!="@"))
1079 {
1080 e.names.erase(e.names.begin() + i);
1081 e.values.erase(e.values.begin() + i);
1082 i--;
1083 s--;
1084 }
1085 }
1086
1087 }
1088private:
1089 std::vector<GameApiParam> env_params;
1090};
1091
1093{
1094public:
1096 virtual int Count() const { return 1; }
1097 virtual std::string Name(int i) const { return "env_params_float"; }
1098 virtual int ParamCount(int i) const { return 1+5; }
1099 virtual std::string ParamName(int i, int p) const {
1100 switch(p) {
1101 case 0: return "ml";
1102 case 1: return "%1";
1103 case 2: return "%2";
1104 case 3: return "%3";
1105 case 4: return "%4";
1106 case 5: return "%5";
1107 default: return "";
1108 };
1109 }
1110 virtual std::string ParamType(int i, int p) const {
1111 switch(p) {
1112 case 0: return "ML";
1113 case 1:
1114 case 2:
1115 case 3:
1116 case 4:
1117 case 5:
1118 return "std::string";
1119 default:
1120 return "";
1121 };
1122 }
1123 virtual std::string ParamDefault(int i, int p) const {
1124 switch(p) {
1125 case 0: return "";
1126 case 1:
1127 case 2:
1128 case 3:
1129 case 4:
1130 case 5:
1131 return "@";
1132 default:
1133 return "";
1134 };
1135 }
1136 virtual std::string DefaultAuthor(int i, int p) const { return ""; }
1137 virtual std::string DefaultLicense(int i, int p) const { return ""; }
1138 virtual std::string ReturnType(int i) const { return "ML"; }
1139 virtual std::string ApiName(int i) const { return "mainloop_api"; }
1140 virtual std::string FuncName(int i) const { return "identity_float"; }
1141 virtual std::string Symbols() const { return ""; }
1142 virtual std::string Comment() const { return "env setup"; }
1143 virtual int Execute(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, std::vector<std::string> params, GameApi::ExecuteEnv &e, int j)
1144 {
1145 std::stringstream ss2(params[0]);
1146 int val = 0;
1147 ss2 >> val;
1148 return val;
1149 }
1150 virtual std::pair<std::string,std::string> CodeGen(GameApi::EveryApi &ev, std::vector<std::string> params, std::vector<std::string> param_names, std::vector<std::string> param_exprs, int j)
1151 {
1152 std::pair<std::string,std::string> p = CodeGen_1(ev,params, param_names, { "ml","%1","%2","%3","%4","%5" }, param_exprs, "ML","mainloop_api","identity_float",j);
1153 return p;
1154 }
1155 virtual void BeginEnv(GameApi::ExecuteEnv &e, std::vector<GameApiParam> params) {
1156 if (params[1].expr != "@")
1157 {
1158 e.names.push_back("%1");
1159 e.values.push_back(params[1].expr);
1160 }
1161 if (params[2].expr != "@")
1162 {
1163 e.names.push_back("%2");
1164 e.values.push_back(params[2].expr);
1165 }
1166 if (params[3].expr != "@")
1167 {
1168 e.names.push_back("%3");
1169 e.values.push_back(params[3].expr);
1170 }
1171
1172 if (params[4].expr != "@")
1173 {
1174 e.names.push_back("%4");
1175 e.values.push_back(params[4].expr);
1176 }
1177 if (params[5].expr != "@")
1178 {
1179 e.names.push_back("%5");
1180 e.values.push_back(params[5].expr);
1181 }
1182 env_params = params;
1183 }
1185 int s = e.names.size();
1186 for(int i=0;i<s;i++)
1187 {
1188 if ((e.names[i]=="%1" && env_params[1].expr!="@" )||
1189 (e.names[i]=="%2" && env_params[2].expr!="@")||
1190 (e.names[i]=="%3" && env_params[3].expr!="@")||
1191 (e.names[i]=="%4" && env_params[4].expr!="@")||
1192 (e.names[i]=="%5" && env_params[5].expr!="@"))
1193 {
1194 e.names.erase(e.names.begin() + i);
1195 e.values.erase(e.values.begin() + i);
1196 i--;
1197 s--;
1198 }
1199 }
1200
1201 }
1202private:
1203 std::vector<GameApiParam> env_params;
1204};
1205std::vector<std::string> parse_sep(std::string s, char sep);
1206
1207inline std::vector<std::string> choose_param3(std::vector<std::string> vec, int ii)
1208{
1209 std::vector<std::string> res;
1210 int s = vec.size();
1211 for(int i=0;i<s;i++)
1212 {
1213 std::string s2 = vec[i];
1214 std::vector<std::string> v = parse_sep(s2,'&');
1215 if (ii<v.size())
1216 {
1217 res.push_back(v[ii]);
1218 }
1219 else
1220 {
1221 res.push_back(s2);
1222 }
1223 }
1224 return res;
1225}
1226
1227inline std::string generate_seq(int n, int count)
1228{
1229 std::stringstream ss;
1230 int s = count;
1231 for(int i=0;i<s;i++) {
1232 ss << "%" << n;
1233 if (i!=s-1) ss << "&";
1234 }
1235 return ss.str();
1236}
1237
1238std::string replace_str(std::string code, std::string repl, std::string subst);
1240{
1241public:
1244 virtual int Count() const { return 1; }
1245 virtual std::string Name(int i) const { return "env_params_arr"; }
1246 virtual int ParamCount(int i) const { return 1+5; }
1247 virtual std::string ParamName(int i, int p) const {
1248 switch(p) {
1249 case 0: return "ml";
1250 case 1: return "%1";
1251 case 2: return "%2";
1252 case 3: return "%3";
1253 case 4: return "%4";
1254 case 5: return "%5";
1255
1256 //case 6: return "e1";
1257 //case 7: return "e2";
1258 //case 8: return "e3";
1259 //case 9: return "e4";
1260 //case 10: return "e5";
1261 default: return "";
1262 };
1263 }
1264 virtual std::string ParamType(int i, int p) const {
1265 switch(p) {
1266 case 0: return "ML";
1267 case 1:
1268 case 2:
1269 case 3:
1270 case 4:
1271 case 5:
1272 return "std::string";
1273 //case 6:
1274 //case 7:
1275 //case 8:
1276 //case 9:
1277 //case 10:
1278 //return "std::string";
1279 default:
1280 return "";
1281 };
1282 }
1283 virtual std::string ParamDefault(int i, int p) const {
1284 switch(p) {
1285 case 0: return "";
1286 case 1:
1287 case 2:
1288 case 3:
1289 case 4:
1290 case 5:
1291 return "@";
1292 //case 6:
1293 //case 7:
1294 //case 8:
1295 //case 9:
1296 //case 10:
1297 //return "@";
1298 default:
1299 return "";
1300 };
1301 }
1302 virtual std::string DefaultAuthor(int i, int p) const { return ""; }
1303 virtual std::string DefaultLicense(int i, int p) const { return ""; }
1304 virtual std::string ReturnType(int i) const { return "[ML]"; }
1305 virtual std::string ApiName(int i) const { return "mainloop_api"; }
1306 virtual std::string FuncName(int i) const { return "identity_arr"; }
1307 virtual std::string Symbols() const { return ""; }
1308 virtual std::string Comment() const { return "env setup arr"; }
1309 virtual int Execute(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, std::vector<std::string> params, GameApi::ExecuteEnv &e, int j)
1310 {
1311 static int count=0;
1312 if (count==0) {
1313 count=1;
1314 std::cout << "Warning: env_params_arr cannot be deployed, and you must move to script_ML_array before deploy." << std::endl;
1315 }
1316
1317 std::vector<std::string> arr1 = parse_sep(params[1],'&');
1318 std::vector<std::string> arr2 = parse_sep(params[2],'&');
1319 std::vector<std::string> arr3 = parse_sep(params[3],'&');
1320 std::vector<std::string> arr4 = parse_sep(params[4],'&');
1321 std::vector<std::string> arr5 = parse_sep(params[5],'&');
1322
1323 //std::vector<std::string> e1 = parse_sep(params[6],'&');
1324 //std::vector<std::string> e2 = parse_sep(params[7],'&');
1325 //std::vector<std::string> e3 = parse_sep(params[8],'&');
1326 //std::vector<std::string> e4 = parse_sep(params[9],'&');
1327 //std::vector<std::string> e5 = parse_sep(params[10],'&');
1328
1329
1330
1331
1332 int N = std::max(std::max(std::max(std::max(arr1.size(),arr2.size()),
1333 arr3.size()),
1334 arr4.size()),
1335 arr5.size());
1336 //int N2 = std::max(std::max(std::max(std::max(e1.size(),e2.size()),
1337 // e3.size()),
1338 // e4.size()),
1339 // e5.size());
1340 int NN = N; //std::max(N,N2);
1341 arr1.resize(NN);
1342 arr2.resize(NN);
1343 arr3.resize(NN);
1344 arr4.resize(NN);
1345 arr5.resize(NN);
1346
1347 //e1.resize(NN);
1348 //e2.resize(NN);
1349 //e3.resize(NN);
1350 //e4.resize(NN);
1351 //e5.resize(NN);
1352
1353
1354
1355 std::stringstream ss2(params[0]);
1356 int val = 0;
1357 ss2 >> val;
1358 GameApi::ML ml;
1359 ml.id = val;
1360 std::string line;
1361 std::string prev_line;
1362 std::string prev_line2;
1363 std::vector<std::string> vec;
1364 std::string res;
1365 //while(std::getline(ss3,line)) {
1366 // prev_line2 = prev_line;
1367 // prev_line = line;
1368 // res+=prev_line2;
1369 // res+="\n";
1370 //}
1371 std::vector<GameApi::ML> res_vec;
1372 for(int i=0;i<NN;i++)
1373 {
1374
1375 m_ii = i;
1376 GameApi::RUN r = ev.blocker_api.game_window2(ev,ml,false,false,0.0,100000.0);
1377 GameApi::HML hml = ev.mainloop_api.emscripten_frame2(ev,r,"https://meshpage.org/assets",true);
1378 Html *hml2 = find_html(ev.get_env(),hml);
1379 hml2->Prepare();
1380 std::string script = hml2->script_file();
1381 //std::stringstream ss3(script);
1382 res=script;
1383
1384
1385 GameApi::ExecuteEnv &ee2 = e;
1386 std::vector<GameApiParam> paramvec;
1387 std::stringstream ss2; ss2 << ml.id;
1388
1389 paramvec.push_back({"ml", ss2.str(),"ML",false,0,0,""});
1390 paramvec.push_back({"%1", arr1[i],"float",false,0,0,generate_seq(1,arr1.size()) /*e1[i]*/ });
1391 paramvec.push_back({"%2", arr2[i],"float",false,0,0,generate_seq(2,arr2.size()) /*e2[i]*/});
1392 paramvec.push_back({"%3", arr3[i],"float",false,0,0,generate_seq(3,arr3.size()) /*e3[i]*/});
1393 paramvec.push_back({"%4", arr4[i], "float",false,0,0,generate_seq(4,arr4.size()) /*e4[i]*/});
1394 paramvec.push_back({"%5", arr5[i], "float",false,0,0,generate_seq(5,arr5.size()) /*e5[i]*/});
1395 BeginEnv2(e, paramvec);
1396
1397
1398
1399 res = replace_str(res, "@", "\n");
1400
1401 // these break the feature that envparams_float_array can be used nested multiple times in the hierarchy
1402 res = replace_str(res, "%1", arr1[i]);
1403 res = replace_str(res, "%2", arr2[i]);
1404 res = replace_str(res, "%3", arr3[i]);
1405 res = replace_str(res, "%4", arr4[i]);
1406 res = replace_str(res, "%5", arr5[i]);
1407
1408 std::pair<int,std::string> p = GameApi::execute_codegen(ee,ev,res,ee2);
1409 if (p.first==-1) { continue; }
1410 assert(p.second=="ML");
1411 int id = p.first;
1412 GameApi::ML res_ml;
1413 res_ml.id = id;
1414 res_vec.push_back(res_ml);
1415 EndEnv2(e);
1416 }
1417 std::vector<int> res_vec2;
1418 int s = res_vec.size();
1419 for(int i=0;i<s;i++) res_vec2.push_back(res_vec[i].id);
1420
1421
1422 ArrayType *array = new ArrayType;
1423 array->type=2;
1424 array->vec = res_vec2;
1425 GameApi::ARR a = add_array(ee,array);
1426 return a.id;
1427 }
1428 virtual std::pair<std::string,std::string> CodeGen(GameApi::EveryApi &ev, std::vector<std::string> params, std::vector<std::string> param_names, std::vector<std::string> param_exprs, int j)
1429 {
1430 if (!recursion_stopper) {
1431 recursion_stopper=true;
1432 //std::cout << "OUR CODEGEN..." << std::endl;
1433 std::pair<std::string,std::string> p = CodeGen_1(ev,choose_param3(params,m_ii), { "ml", "%1", "%2", "%3", "%4", "%5" }, { "ml","%1","%2","%3","%4","%5" }, choose_param3(param_exprs,m_ii), "ML","mainloop_api","identity_arr",j);
1434 //std::cout << "END_OF_OUR_CODEGEN" << std::endl;
1435 recursion_stopper=false;
1436 return p;
1437 } else {
1438 return std::make_pair("","");
1439 }
1440 }
1441 virtual void BeginEnv(GameApi::ExecuteEnv &e, std::vector<GameApiParam> param) { }
1442 virtual void EndEnv(GameApi::ExecuteEnv &e) { }
1443
1444 virtual void BeginEnv2(GameApi::ExecuteEnv &e, std::vector<GameApiParam> params) {
1445 if (params[1].expr != "@")
1446 {
1447 e.names.push_back("%1");
1448 e.values.push_back(params[1].expr);
1449 }
1450 if (params[2].expr != "@")
1451 {
1452 e.names.push_back("%2");
1453 e.values.push_back(params[2].expr);
1454 }
1455 if (params[3].expr != "@")
1456 {
1457 e.names.push_back("%3");
1458 e.values.push_back(params[3].expr);
1459 }
1460
1461 if (params[4].expr != "@")
1462 {
1463 e.names.push_back("%4");
1464 e.values.push_back(params[4].expr);
1465 }
1466 if (params[5].expr != "@")
1467 {
1468 e.names.push_back("%5");
1469 e.values.push_back(params[5].expr);
1470 }
1471 env_params = params;
1472 }
1474 int s = e.names.size();
1475 for(int i=0;i<s;i++)
1476 {
1477 if ((e.names[i]=="%1" && env_params[1].expr!="@" )||
1478 (e.names[i]=="%2" && env_params[2].expr!="@")||
1479 (e.names[i]=="%3" && env_params[3].expr!="@")||
1480 (e.names[i]=="%4" && env_params[4].expr!="@")||
1481 (e.names[i]=="%5" && env_params[5].expr!="@"))
1482 {
1483 e.names.erase(e.names.begin() + i);
1484 e.values.erase(e.values.begin() + i);
1485 i--;
1486 s--;
1487 }
1488 }
1489
1490 }
1491private:
1492 std::vector<GameApiParam> env_params;
1493 int m_ii=0;
1494 bool recursion_stopper=false;
1495};
1497{
1498public:
1501 virtual int Count() const { return 1; }
1502 virtual std::string Name(int i) const { return "env_params_arr_p"; }
1503 virtual int ParamCount(int i) const { return 1+5; }
1504 virtual std::string ParamName(int i, int p) const {
1505 switch(p) {
1506 case 0: return "ml";
1507 case 1: return "%1";
1508 case 2: return "%2";
1509 case 3: return "%3";
1510 case 4: return "%4";
1511 case 5: return "%5";
1512
1513 //case 6: return "e1";
1514 //case 7: return "e2";
1515 //case 8: return "e3";
1516 //case 9: return "e4";
1517 //case 10: return "e5";
1518 default: return "";
1519 };
1520 }
1521 virtual std::string ParamType(int i, int p) const {
1522 switch(p) {
1523 case 0: return "P";
1524 case 1:
1525 case 2:
1526 case 3:
1527 case 4:
1528 case 5:
1529 return "std::string";
1530 //case 6:
1531 //case 7:
1532 //case 8:
1533 //case 9:
1534 //case 10:
1535 //return "std::string";
1536 default:
1537 return "";
1538 };
1539 }
1540 virtual std::string ParamDefault(int i, int p) const {
1541 switch(p) {
1542 case 0: return "";
1543 case 1:
1544 case 2:
1545 case 3:
1546 case 4:
1547 case 5:
1548 return "@";
1549 //case 6:
1550 //case 7:
1551 //case 8:
1552 //case 9:
1553 //case 10:
1554 //return "@";
1555 default:
1556 return "";
1557 };
1558 }
1559 virtual std::string DefaultAuthor(int i, int p) const { return ""; }
1560 virtual std::string DefaultLicense(int i, int p) const { return ""; }
1561 virtual std::string ReturnType(int i) const { return "[P]"; }
1562 virtual std::string ApiName(int i) const { return "mainloop_api"; }
1563 virtual std::string FuncName(int i) const { return "identity_arr_p"; }
1564 virtual std::string Symbols() const { return ""; }
1565 virtual std::string Comment() const { return "env setup arr"; }
1566 virtual int Execute(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, std::vector<std::string> params, GameApi::ExecuteEnv &e, int j)
1567 {
1568 static int count=0;
1569 if (count==0) {
1570 count=1;
1571 std::cout << "Warning: env_params_arr_p cannot be deployed, and you must move to script_P_array before deploy." << std::endl;
1572 }
1573
1574 std::vector<std::string> arr1 = parse_sep(params[1],'&');
1575 std::vector<std::string> arr2 = parse_sep(params[2],'&');
1576 std::vector<std::string> arr3 = parse_sep(params[3],'&');
1577 std::vector<std::string> arr4 = parse_sep(params[4],'&');
1578 std::vector<std::string> arr5 = parse_sep(params[5],'&');
1579
1580 //std::vector<std::string> e1 = parse_sep(params[6],'&');
1581 //std::vector<std::string> e2 = parse_sep(params[7],'&');
1582 //std::vector<std::string> e3 = parse_sep(params[8],'&');
1583 //std::vector<std::string> e4 = parse_sep(params[9],'&');
1584 //std::vector<std::string> e5 = parse_sep(params[10],'&');
1585
1586
1587
1588
1589 int N = std::max(std::max(std::max(std::max(arr1.size(),arr2.size()),
1590 arr3.size()),
1591 arr4.size()),
1592 arr5.size());
1593 //int N2 = std::max(std::max(std::max(std::max(e1.size(),e2.size()),
1594 // e3.size()),
1595 // e4.size()),
1596 // e5.size());
1597 int NN = N; //std::max(N,N2);
1598 arr1.resize(NN);
1599 arr2.resize(NN);
1600 arr3.resize(NN);
1601 arr4.resize(NN);
1602 arr5.resize(NN);
1603
1604 //e1.resize(NN);
1605 //e2.resize(NN);
1606 //e3.resize(NN);
1607 //e4.resize(NN);
1608 //e5.resize(NN);
1609
1610
1611
1612 std::stringstream ss2(params[0]);
1613 int val = 0;
1614 ss2 >> val;
1615 GameApi::P p;
1616 p.id = val;
1617 std::string line;
1618 std::string prev_line;
1619 std::string prev_line2;
1620 std::vector<std::string> vec;
1621 std::string res;
1622 //while(std::getline(ss3,line)) {
1623 // prev_line2 = prev_line;
1624 // prev_line = line;
1625 // res+=prev_line2;
1626 // res+="\n";
1627 //}
1628 std::vector<GameApi::P> res_vec;
1629 for(int i=0;i<NN;i++)
1630 {
1631
1632 m_ii = i;
1633 GameApi::ML ml = ev.polygon_api.render_vertex_array_ml2(ev,p);
1634 GameApi::RUN r = ev.blocker_api.game_window2(ev,ml,false,false,0.0,100000.0);
1635 GameApi::HML hml = ev.mainloop_api.emscripten_frame2(ev,r,"https://meshpage.org/assets",true);
1636 Html *hml2 = find_html(ev.get_env(),hml);
1637 hml2->Prepare();
1638 std::string script = hml2->script_file();
1639 //std::stringstream ss3(script);
1640 res=script;
1641
1642
1643 GameApi::ExecuteEnv &ee2 = e;
1644 std::vector<GameApiParam> paramvec;
1645 std::stringstream ss2; ss2 << ml.id;
1646
1647 paramvec.push_back({"ml", ss2.str(),"ML",false,0,0,""});
1648 paramvec.push_back({"%1", arr1[i],"float",false,0,0,generate_seq(1,arr1.size()) /*e1[i]*/ });
1649 paramvec.push_back({"%2", arr2[i],"float",false,0,0,generate_seq(2,arr2.size()) /*e2[i]*/});
1650 paramvec.push_back({"%3", arr3[i],"float",false,0,0,generate_seq(3,arr3.size()) /*e3[i]*/});
1651 paramvec.push_back({"%4", arr4[i], "float",false,0,0,generate_seq(4,arr4.size()) /*e4[i]*/});
1652 paramvec.push_back({"%5", arr5[i], "float",false,0,0,generate_seq(5,arr5.size()) /*e5[i]*/});
1653 BeginEnv2(e, paramvec);
1654
1655
1656
1657 res = replace_str(res, "@", "\n");
1658
1659 // these break the feature that envparams_float_array can be used nested multiple times in the hierarchy
1660 res = replace_str(res, "%1", arr1[i]);
1661 res = replace_str(res, "%2", arr2[i]);
1662 res = replace_str(res, "%3", arr3[i]);
1663 res = replace_str(res, "%4", arr4[i]);
1664 res = replace_str(res, "%5", arr5[i]);
1665 //std::cout << "SCRIPT:" << res << std::endl;
1666 std::pair<int,std::string> p = GameApi::execute_codegen(ee,ev,res,ee2);
1667 if (p.first==-1) { continue; }
1668 assert(p.second=="P");
1669 int id = p.first;
1670 GameApi::P res_p;
1671 res_p.id = id;
1672 res_vec.push_back(res_p);
1673 EndEnv2(e);
1674 }
1675 std::vector<int> res_vec2;
1676 int s = res_vec.size();
1677 for(int i=0;i<s;i++) res_vec2.push_back(res_vec[i].id);
1678
1679
1680 ArrayType *array = new ArrayType;
1681 array->type=2;
1682 array->vec = res_vec2;
1683 GameApi::ARR a = add_array(ee,array);
1684 return a.id;
1685 }
1686 virtual std::pair<std::string,std::string> CodeGen(GameApi::EveryApi &ev, std::vector<std::string> params, std::vector<std::string> param_names, std::vector<std::string> param_exprs, int j)
1687 {
1688 if (!recursion_stopper) {
1689 recursion_stopper=true;
1690 //std::cout << "OUR CODEGEN..." << std::endl;
1691 std::pair<std::string,std::string> p = CodeGen_1(ev,choose_param3(params,m_ii), { "p", "%1", "%2", "%3", "%4", "%5" }, { "p","%1","%2","%3","%4","%5" }, choose_param3(param_exprs,m_ii), "ML","mainloop_api","identity_arr_p",j);
1692 //std::cout << "END_OF_OUR_CODEGEN" << std::endl;
1693 recursion_stopper=false;
1694 return p;
1695 } else { return std::make_pair("",""); }
1696 }
1697 virtual void BeginEnv(GameApi::ExecuteEnv &e, std::vector<GameApiParam> param) { }
1698 virtual void EndEnv(GameApi::ExecuteEnv &e) { }
1699
1700 virtual void BeginEnv2(GameApi::ExecuteEnv &e, std::vector<GameApiParam> params) {
1701 if (params[1].expr != "@")
1702 {
1703 e.names.push_back("%1");
1704 e.values.push_back(params[1].expr);
1705 }
1706 if (params[2].expr != "@")
1707 {
1708 e.names.push_back("%2");
1709 e.values.push_back(params[2].expr);
1710 }
1711 if (params[3].expr != "@")
1712 {
1713 e.names.push_back("%3");
1714 e.values.push_back(params[3].expr);
1715 }
1716
1717 if (params[4].expr != "@")
1718 {
1719 e.names.push_back("%4");
1720 e.values.push_back(params[4].expr);
1721 }
1722 if (params[5].expr != "@")
1723 {
1724 e.names.push_back("%5");
1725 e.values.push_back(params[5].expr);
1726 }
1727 env_params = params;
1728 }
1730 int s = e.names.size();
1731 for(int i=0;i<s;i++)
1732 {
1733 if ((e.names[i]=="%1" && env_params[1].expr!="@" )||
1734 (e.names[i]=="%2" && env_params[2].expr!="@")||
1735 (e.names[i]=="%3" && env_params[3].expr!="@")||
1736 (e.names[i]=="%4" && env_params[4].expr!="@")||
1737 (e.names[i]=="%5" && env_params[5].expr!="@"))
1738 {
1739 e.names.erase(e.names.begin() + i);
1740 e.values.erase(e.values.begin() + i);
1741 i--;
1742 s--;
1743 }
1744 }
1745
1746 }
1747private:
1748 std::vector<GameApiParam> env_params;
1749 int m_ii=0;
1750 bool recursion_stopper=false;
1751};
Env e
Definition Common.cc:2
EveryApi ev(e)
void cube(Matrix m, FaceStore &s)
Definition Functions.cc:10
std::string MB(long num)
Definition GameApi.cc:43586
MACRO2(GameApi::LI, ev.lines_api.from_polygon(ev.polygon_api.p_empty())) MACRO2(GameApi std::pair< std::string, std::string > CodeGen_1(GameApi::EveryApi &ev, std::vector< std::string > params, std::vector< std::string > param_names, std::vector< std::string > param_type, std::vector< std::string > param_exprs, std::string return_type, std::string api_name, std::string func_name, int j)
Definition GameApi_cmd.cc:45
#define MACRO2(lab, funccall)
Definition GameApi_cmd.cc:9
std::string empty_param(std::string s)
Definition GameApi_cmd.cc:112
ApiSplit split_api_default(std::string def)
Definition GameApi_cmd.cc:176
std::pair< std::string, std::string > CodeGen_1(GameApi::EveryApi &ev, std::vector< std::string > params, std::vector< std::string > param_names, std::vector< std::string > param_type, std::vector< std::string > param_exprs, std::string return_type, std::string api_name, std::string func_name, int j)
Definition GameApi_cmd.cc:45
void funccall_1(std::vector< std::string > &s, GameApi::ExecuteEnv &e, std::vector< std::string > param_name)
Definition GameApi_cmd.cc:87
int to_int(std::string s)
Definition GameApi_cmd.cc:152
bool print_if_false(const bool assertion, std::string msg)
Definition GameApi_cmd.hh:295
int ret_type_count(std::string s)
Definition GameApi_gui.cc:4116
#define MACRO(lab)
Definition GameApi_cmd.hh:433
T from_stream2(std::stringstream &is, GameApi::EveryApi &ev)
Definition GameApi_cmd.hh:746
MACRO2(GameApi::LI, ev.lines_api.from_polygon(ev.polygon_api.p_empty())) MACRO2(GameApi std::string unique_id_apiitem()
Definition accel.cc:42
std::string replace_str(std::string code, std::string repl, std::string subst)
Definition GameApi.cc:26724
DelApiItemF g_api_item_deleter
Definition GameApi_gui.cc:8618
std::vector< std::string > choose_param3(std::vector< std::string > vec, int ii)
Definition GameApi_cmd.hh:1207
std::string FloatExprEval(std::string s)
Definition GameApi_gui.cc:9148
std::string generate_seq(int n, int count)
Definition GameApi_cmd.hh:1227
#define MACRO2(lab, funccall)
Definition GameApi_cmd.hh:53
#define MAC(a)
Definition GameApi_cmd.hh:96
void set_empty(GameApi::EveryApi &ev, T &t)
Definition GameApi_cmd.hh:51
int find_float_ch(std::string s, char ch)
Definition GameApi_gui.cc:9102
int funccall(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, T(GameApi::EveryApi::*api), RT(T::*fptr)(P...), std::vector< std::string > s, GameApi::ExecuteEnv &e, const std::vector< std::string > &param_name, const std::string &return_type)
Definition GameApi_cmd.hh:775
GameApiItem * ApiItemF(T(GameApi::EveryApi::*api), RT(T::*fptr)(P...), std::string name, std::vector< std::string > param_name, std::vector< std::string > param_type, std::vector< std::string > param_default, std::string return_type, std::string api_name, std::string func_name, std::string symbols="", std::string comment="")
Definition GameApi_cmd.hh:846
float to_float(std::string s)
Definition GameApi_cmd.cc:159
ApiSplit split_api_default(std::string def)
Definition GameApi_cmd.cc:176
std::vector< std::string > parse_sep(std::string s, char sep)
Definition GameApi.cc:29241
IMPORT Html * find_html(GameApi::Env &e, GameApi::HML u)
Definition GameApi_dep_add_find.cc:1723
GameApi::ARR add_array(GameApi::Env &e, ArrayType *type)
Definition GameApi_dep_add_find.cc:527
std::string api_name()
Definition accel.cc:318
AK empty(int sx, int sy, int sz, float start_x, float end_x, float start_y, float end_y, float start_z, float end_z)
Definition accel.cc:723
Definition accel.cc:249
std::string FuncName(int i) const
Definition GameApi_cmd.hh:331
std::string DefaultAuthor(int i, int p) const
Definition GameApi_cmd.hh:327
int Count() const
Definition GameApi_cmd.hh:317
std::string ParamName(int i, int p) const
Definition GameApi_cmd.hh:324
std::string Name(int i) const
Definition GameApi_cmd.hh:318
std::string ApiName(int i) const
Definition GameApi_cmd.hh:330
ApiItem(T(GameApi::EveryApi::*api), RT(T::*fptr)(P...), std::string name, std::vector< std::string > param_name, std::vector< std::string > param_type, std::vector< std::string > param_default, std::string ret_type, std::string api_name, std::string func_name, std::string symbols, std::string comment)
Definition GameApi_cmd.hh:307
int Execute(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, std::vector< std::string > params, GameApi::ExecuteEnv &e, int j)
Definition GameApi_cmd.hh:349
std::string Comment() const
Definition GameApi_cmd.hh:333
std::string ReturnType(int i) const
Definition GameApi_cmd.hh:329
std::pair< std::string, std::string > CodeGen(GameApi::EveryApi &ev, std::vector< std::string > params, std::vector< std::string > param_names, std::vector< std::string > param_exprs, int j)
Definition GameApi_cmd.hh:375
int ParamCount(int i) const
Definition GameApi_cmd.hh:319
std::string DefaultLicense(int i, int p) const
Definition GameApi_cmd.hh:328
std::string ParamType(int i, int p) const
Definition GameApi_cmd.hh:325
std::string ParamDefault(int i, int p) const
Definition GameApi_cmd.hh:326
std::string Symbols() const
Definition GameApi_cmd.hh:332
Definition Effect.hh:10323
virtual int Count() const
Definition GameApi_cmd.hh:1501
virtual std::string ParamName(int i, int p) const
Definition GameApi_cmd.hh:1504
virtual std::string Symbols() const
Definition GameApi_cmd.hh:1564
virtual std::string Comment() const
Definition GameApi_cmd.hh:1565
virtual void EndEnv(GameApi::ExecuteEnv &e)
Definition GameApi_cmd.hh:1698
virtual std::string FuncName(int i) const
Definition GameApi_cmd.hh:1563
virtual std::string ParamType(int i, int p) const
Definition GameApi_cmd.hh:1521
virtual std::string ApiName(int i) const
Definition GameApi_cmd.hh:1562
virtual std::string Name(int i) const
Definition GameApi_cmd.hh:1502
virtual std::string DefaultAuthor(int i, int p) const
Definition GameApi_cmd.hh:1559
EnvGameApiItem_arr_p()
Definition GameApi_cmd.hh:1499
virtual std::string ReturnType(int i) const
Definition GameApi_cmd.hh:1561
virtual int ParamCount(int i) const
Definition GameApi_cmd.hh:1503
virtual int Execute(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, std::vector< std::string > params, GameApi::ExecuteEnv &e, int j)
Definition GameApi_cmd.hh:1566
virtual void BeginEnv(GameApi::ExecuteEnv &e, std::vector< GameApiParam > param)
Definition GameApi_cmd.hh:1697
virtual std::string DefaultLicense(int i, int p) const
Definition GameApi_cmd.hh:1560
virtual std::string ParamDefault(int i, int p) const
Definition GameApi_cmd.hh:1540
virtual void BeginEnv2(GameApi::ExecuteEnv &e, std::vector< GameApiParam > params)
Definition GameApi_cmd.hh:1700
virtual void EndEnv2(GameApi::ExecuteEnv &e)
Definition GameApi_cmd.hh:1729
virtual std::pair< std::string, std::string > CodeGen(GameApi::EveryApi &ev, std::vector< std::string > params, std::vector< std::string > param_names, std::vector< std::string > param_exprs, int j)
Definition GameApi_cmd.hh:1686
virtual std::string DefaultAuthor(int i, int p) const
Definition GameApi_cmd.hh:1302
virtual std::string ParamType(int i, int p) const
Definition GameApi_cmd.hh:1264
virtual std::string ParamName(int i, int p) const
Definition GameApi_cmd.hh:1247
EnvGameApiItem_arr()
Definition GameApi_cmd.hh:1242
virtual std::string DefaultLicense(int i, int p) const
Definition GameApi_cmd.hh:1303
virtual std::string ReturnType(int i) const
Definition GameApi_cmd.hh:1304
virtual std::string FuncName(int i) const
Definition GameApi_cmd.hh:1306
virtual void EndEnv2(GameApi::ExecuteEnv &e)
Definition GameApi_cmd.hh:1473
virtual int ParamCount(int i) const
Definition GameApi_cmd.hh:1246
virtual std::string ParamDefault(int i, int p) const
Definition GameApi_cmd.hh:1283
virtual std::string Comment() const
Definition GameApi_cmd.hh:1308
virtual std::string Symbols() const
Definition GameApi_cmd.hh:1307
virtual std::pair< std::string, std::string > CodeGen(GameApi::EveryApi &ev, std::vector< std::string > params, std::vector< std::string > param_names, std::vector< std::string > param_exprs, int j)
Definition GameApi_cmd.hh:1428
virtual std::string ApiName(int i) const
Definition GameApi_cmd.hh:1305
virtual void BeginEnv(GameApi::ExecuteEnv &e, std::vector< GameApiParam > param)
Definition GameApi_cmd.hh:1441
virtual std::string Name(int i) const
Definition GameApi_cmd.hh:1245
virtual void BeginEnv2(GameApi::ExecuteEnv &e, std::vector< GameApiParam > params)
Definition GameApi_cmd.hh:1444
virtual int Count() const
Definition GameApi_cmd.hh:1244
virtual void EndEnv(GameApi::ExecuteEnv &e)
Definition GameApi_cmd.hh:1442
virtual int Execute(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, std::vector< std::string > params, GameApi::ExecuteEnv &e, int j)
Definition GameApi_cmd.hh:1309
virtual std::string Name(int i) const
Definition GameApi_cmd.hh:1097
virtual std::string FuncName(int i) const
Definition GameApi_cmd.hh:1140
virtual std::string ParamDefault(int i, int p) const
Definition GameApi_cmd.hh:1123
virtual std::string Symbols() const
Definition GameApi_cmd.hh:1141
virtual std::string ParamName(int i, int p) const
Definition GameApi_cmd.hh:1099
virtual std::string DefaultAuthor(int i, int p) const
Definition GameApi_cmd.hh:1136
virtual int Count() const
Definition GameApi_cmd.hh:1096
virtual void BeginEnv(GameApi::ExecuteEnv &e, std::vector< GameApiParam > params)
Definition GameApi_cmd.hh:1155
EnvGameApiItem_float()
Definition GameApi_cmd.hh:1095
virtual std::string ParamType(int i, int p) const
Definition GameApi_cmd.hh:1110
virtual int Execute(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, std::vector< std::string > params, GameApi::ExecuteEnv &e, int j)
Definition GameApi_cmd.hh:1143
virtual void EndEnv(GameApi::ExecuteEnv &e)
Definition GameApi_cmd.hh:1184
virtual std::string ReturnType(int i) const
Definition GameApi_cmd.hh:1138
virtual std::string DefaultLicense(int i, int p) const
Definition GameApi_cmd.hh:1137
virtual std::string Comment() const
Definition GameApi_cmd.hh:1142
virtual std::pair< std::string, std::string > CodeGen(GameApi::EveryApi &ev, std::vector< std::string > params, std::vector< std::string > param_names, std::vector< std::string > param_exprs, int j)
Definition GameApi_cmd.hh:1150
virtual int ParamCount(int i) const
Definition GameApi_cmd.hh:1098
virtual std::string ApiName(int i) const
Definition GameApi_cmd.hh:1139
EnvGameApiItem_int()
Definition GameApi_cmd.hh:862
virtual int Count() const
Definition GameApi_cmd.hh:863
virtual std::string ParamDefault(int i, int p) const
Definition GameApi_cmd.hh:890
virtual std::string DefaultLicense(int i, int p) const
Definition GameApi_cmd.hh:904
virtual std::string Name(int i) const
Definition GameApi_cmd.hh:864
virtual void BeginEnv(GameApi::ExecuteEnv &e, std::vector< GameApiParam > params)
Definition GameApi_cmd.hh:922
virtual std::string ApiName(int i) const
Definition GameApi_cmd.hh:906
virtual int ParamCount(int i) const
Definition GameApi_cmd.hh:865
virtual std::string ParamName(int i, int p) const
Definition GameApi_cmd.hh:866
virtual std::string ReturnType(int i) const
Definition GameApi_cmd.hh:905
virtual std::string ParamType(int i, int p) const
Definition GameApi_cmd.hh:877
virtual void EndEnv(GameApi::ExecuteEnv &e)
Definition GameApi_cmd.hh:951
virtual std::string Symbols() const
Definition GameApi_cmd.hh:908
virtual std::string FuncName(int i) const
Definition GameApi_cmd.hh:907
virtual std::pair< std::string, std::string > CodeGen(GameApi::EveryApi &ev, std::vector< std::string > params, std::vector< std::string > param_names, std::vector< std::string > param_exprs, int j)
Definition GameApi_cmd.hh:917
virtual std::string Comment() const
Definition GameApi_cmd.hh:909
virtual int Execute(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, std::vector< std::string > params, GameApi::ExecuteEnv &e, int j)
Definition GameApi_cmd.hh:910
virtual std::string DefaultAuthor(int i, int p) const
Definition GameApi_cmd.hh:903
virtual std::string ParamType(int i, int p) const
Definition GameApi_cmd.hh:991
virtual void EndEnv(GameApi::ExecuteEnv &e)
Definition GameApi_cmd.hh:1070
virtual std::string FuncName(int i) const
Definition GameApi_cmd.hh:1021
virtual std::string DefaultAuthor(int i, int p) const
Definition GameApi_cmd.hh:1017
virtual std::string Comment() const
Definition GameApi_cmd.hh:1023
virtual std::string ParamDefault(int i, int p) const
Definition GameApi_cmd.hh:1004
virtual int Count() const
Definition GameApi_cmd.hh:977
virtual std::string ReturnType(int i) const
Definition GameApi_cmd.hh:1019
virtual std::string Name(int i) const
Definition GameApi_cmd.hh:978
virtual std::string ApiName(int i) const
Definition GameApi_cmd.hh:1020
virtual std::string Symbols() const
Definition GameApi_cmd.hh:1022
virtual std::string ParamName(int i, int p) const
Definition GameApi_cmd.hh:980
virtual int Execute(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, std::vector< std::string > params, GameApi::ExecuteEnv &e, int j)
Definition GameApi_cmd.hh:1024
virtual int ParamCount(int i) const
Definition GameApi_cmd.hh:979
virtual void BeginEnv(GameApi::ExecuteEnv &e, std::vector< GameApiParam > params)
Definition GameApi_cmd.hh:1036
virtual std::pair< std::string, std::string > CodeGen(GameApi::EveryApi &ev, std::vector< std::string > params, std::vector< std::string > param_names, std::vector< std::string > param_exprs, int j)
Definition GameApi_cmd.hh:1031
EnvGameApiItem_string()
Definition GameApi_cmd.hh:976
virtual std::string DefaultLicense(int i, int p) const
Definition GameApi_cmd.hh:1018
Definition Graph.hh:8353
GameApi::EveryApi & from_stream(std::stringstream &ss, GameApi::EveryApi &ev)
Definition GameApi_cmd.hh:603
bool from_stream(std::stringstream &ss, GameApi::EveryApi &ev)
Definition GameApi_cmd.hh:615
float from_stream(std::stringstream &ss, GameApi::EveryApi &ev)
Definition GameApi_cmd.hh:558
std::string from_stream(std::stringstream &ss, GameApi::EveryApi &ev)
Definition GameApi_cmd.hh:587
std::vector< T > from_stream(std::stringstream &sk, GameApi::EveryApi &ev)
Definition GameApi_cmd.hh:687
std::vector< std::string > from_stream(std::stringstream &sk, GameApi::EveryApi &ev)
Definition GameApi_cmd.hh:648
unsigned int from_stream(std::stringstream &ss, GameApi::EveryApi &ev)
Definition GameApi_cmd.hh:632
Definition GameApi_cmd.hh:400
T from_stream(std::stringstream &ss, GameApi::EveryApi &ev)
Definition GameApi_cmd.hh:402
Definition test.cpp:376
Definition GameApi.hh:362
Definition GraphI.hh:2956
virtual void Prepare()=0
virtual std::string script_file() const =0
Definition GameApi_cmd.hh:94
static constexpr const char * str
Definition GameApi_cmd.hh:94
Definition Equalizer.hh:1800
ChaiScript_Basic & add(const T &t_t, const std::string &t_name)
Adds a type, function or object to ChaiScript. Objects are added to the local thread state.
Definition chaiscript_engine.hpp:551
std::string code
Definition test.cpp:145
IMPORT ArrayType * find_array(GameApi::Env &e, GameApi::ARR arr)
Definition GameApi_dep_add_find.cc:1924
ret($return)
Definition mesh_login_result.php:5
iVBORw0KGgoAAAANSUhEUgAAANcAAAB5CAMAAACdtUQZAAAA51BMVEX</div ></div >< div style="padding: 0px 0px; width: 1324px;">< div style="height: 400px; width: 1324px;"></div >< div itemscope itemtype="https: </div><div itemscope itemtype="https:</div >< div itemscope itemtype="https: </div></div><p><div style="padding:0px 0px;width:1324px;"><div></div><div itemscope itemtype="https:< ul >< li >< b > Application name
8AkrcAgqgAs9wqQ0ey2tkAo8gAuuQfeI4hPUH09fXHy8z4+fng4uNKXF/Lz9BzfoAcgpkQMTUAKjAbOT4Qr9AXhJ8Rl7ktMCwTosA...
Definition meshpage.php:1610
Definition FreeType.hh:46
IMPORT std::pair< int, std::string > execute_codegen(Env &e2, EveryApi &ev, std::string text, ExecuteEnv &e)
Definition GameApi_gui.cc:8557
Definition Plane.cc:5
Proxy_Function fun(const T &t)
Creates a new Proxy_Function object from a free function, member function or data member.
Definition register_function.hpp:43
STL namespace.
double f(const std::string &, double, bool) noexcept
Definition profile_cpp_calls_2.cpp:4
Definition GameApiTest5.cc:17
Definition GameApi_cmd.hh:279
std::string license
Definition GameApi_cmd.hh:282
std::string author
Definition GameApi_cmd.hh:281
std::string def
Definition GameApi_cmd.hh:280
Definition test.cpp:82
std::vector< int > vec
Definition test.cpp:84
Definition GameApi.h:11
Definition GameApi.h:59
Definition GameApi.h:9
Definition GameApi.h:8
Definition GameApi.h:13
Definition GameApi.h:97
Definition GameApi.h:75
Definition GameApi.h:31
Definition GameApi.h:3
Definition GameApi.h:96
Definition GameApi.h:30
Definition GameApi.h:71
Definition GameApi.h:4
Definition GameApi.h:57
Definition GameApi_cmd.hh:41
std::vector< GameApiItem * > items
Definition GameApi_cmd.hh:42
~DelApiItemF()
Definition GameApi_cmd.hh:43
Definition GameApi.h:93
Definition GameApi.h:43
Definition GameApi.h:33
Definition GameApi.h:12
Definition GameApi.h:78
Definition GameApi.h:74
Definition GameApi.h:6
Definition GameApi.h:32
Definition GameApi.h:55
Definition GameApi.h:91
Definition GameApi.h:34
Definition GameApi.hh:112
int id
Definition GameApi.hh:112
Definition Common.hh:74
Definition Common.hh:51
Definition Common.hh:71
Definition GameApi.hh:2767
Definition Common.hh:31
Definition Common.hh:76
Definition Common.hh:163
Definition Common.hh:32
Definition Common.hh:24
Definition Common.hh:38
Definition Common.hh:139
Definition Common.hh:94
Definition Common.hh:48
Definition Common.hh:93
Definition Common.hh:30
Definition GameApi.hh:4664
Definition GameApi.hh:301
Definition Common.hh:96
Definition Common.hh:147
Definition Common.hh:22
Definition Common.hh:75
Definition Common.hh:142
Definition Common.hh:42
Definition Common.hh:39
Definition Common.hh:23
Definition Common.hh:69
Definition Common.hh:155
Definition Common.hh:97
Definition Common.hh:41
Definition Common.hh:26
Definition Common.hh:43
Definition Common.hh:164
Definition Common.hh:25
Definition Common.hh:50
Definition Common.hh:140
Definition Common.hh:141
Definition Common.hh:101
Definition Common.hh:59
Definition Common.hh:156
int id
Definition Common.hh:156
Definition Common.hh:65
Definition Common.hh:60
Definition Common.hh:62
Definition Common.hh:85
Definition Common.hh:89
Definition GameApi.hh:2789
Definition Common.hh:44
Definition Common.hh:160
Definition Common.hh:36
Definition Common.hh:35
Definition Common.hh:34
Definition Common.hh:127
Definition Common.hh:29
Definition Common.hh:145
Definition Common.hh:144
Definition Common.hh:49
Definition Common.hh:79
Definition Common.hh:86
int id
Definition Common.hh:86
Definition Common.hh:52
Definition Common.hh:78
Definition Common.hh:28
Definition Common.hh:40
Definition Common.hh:152
Definition Common.hh:45
Definition Common.hh:92
Definition Common.hh:103
Definition Common.hh:63
Definition GameApi.hh:288
Definition GameApi.hh:286
Definition GameApi.hh:287
Definition Common.hh:131
Definition Common.hh:130
Definition Common.hh:129
Definition Common.hh:106
Definition Common.hh:124
Definition Common.hh:143
Definition Common.hh:126
Definition Common.hh:80
Definition Common.hh:70
Definition Common.hh:153
Definition GameApi.h:58
Definition GameApi.h:53
Definition GameApi.h:21
Definition GameApi.h:45
Definition GameApi.h:27
Definition GameApi.h:76
Definition GameApi.h:77
Definition GameApi.h:48
Definition GameApi.h:19
Definition GameApi.h:44
Definition GameApi.h:37
Definition GameApi.h:49
Definition GameApi.h:92
Definition GameApi.h:2
Definition GameApi.h:46
Definition GameApi.h:47
Definition GameApi.h:5
Definition GameApi.h:24
Definition GameApi.h:22
Definition GameApi.h:56
Definition GameApi.h:26
Definition GameApi.h:72
Definition GameApi.h:94
Definition GameApi.h:64
Definition GameApi.h:35
Definition GameApi_pl.cc:16922
Definition GameApi.h:36
Definition GameApi.h:52
Definition GameApi.h:81
Definition GameApi.h:80
Definition GameApi.h:16
Definition GameApi.h:23
Definition GameApi.h:70
Definition GameApi.h:82
Definition GameApi.h:20
Definition GameApi.h:15
Definition GameApi.h:88
Definition GameApi.h:29
Definition GameApi.h:84
Definition GameApi.h:14
Definition GameApi.h:50
Definition GameApi.h:73
Definition GameApi.h:39
Definition GameApi.h:54
Definition GameApi.h:87
Definition GameApi.h:28
Definition GameApi.h:85
Definition GameApi.h:68
Definition GameApi.h:95
Definition GameApi.h:67
Definition GameApi.h:66
Definition GameApi.h:65
Definition GameApi.h:51
Definition GameApi.h:42
int id
Definition GameApi.h:42
Definition FloatVolumeObject.hh:5
Definition GameApi.h:61
Definition GameApi.h:60
Definition GameApi.h:10
Definition GameApi.h:79
Definition GameApi.h:69
Definition GameApi.h:62
Definition GameApi.h:17
Definition GameApi.h:40
Definition GameApi.h:86
Definition GameApi.h:90
Definition GameApi.h:7
Definition GameApi.h:89
Definition GameApi_cmd.hh:289
int funccall(RT(fptr)(P...), std::vector< std::string > s, std::vector< std::string > param_name)
Definition ui.cc:199