26 std::vector<BitmapHandle*>
vec;
34 std::cout <<
"BitmapArrayHandle destructor: vector sizes do not match" << std::endl;
87 virtual size_t SizeOf()
const=0;
93 virtual PtrSize BaseParse(std::string s,
bool &success)
const=0;
94 virtual std::string BaseCreate(PtrSize psz)
const=0;
98class ParserPair :
public ParserPairBase
101 virtual std::string Create(T t)
const=0;
102 virtual T Parse(std::string s,
bool &success)
const=0;
104 virtual size_t SizeOf()
const {
return sizeof(T); }
105 virtual PtrSize BaseParse(std::string s,
bool &success)
const
111 *ptr = Parse(s, success);
114 virtual std::string BaseCreate(PtrSize psz)
const
116 T *ptr = (T*)psz.ptr;
118 char *debugptr = (
char*)ptr;
119 std::cout <<
typeid(T).
name() <<
":";
120 for(
int i=0;i<psz.size;i++) { std::cout << std::hex << (int)debugptr[i] <<
" "; }
121 std::cout << std::endl;
123 std::string s = Create(*ptr);
129template<
class T,
class K>
130class ParserPairConversion :
public ParserPair<K>
133 ParserPairConversion(ParserPair<T> &p) : p(p) { }
134 virtual K Convert_1(T t)
const=0;
135 virtual T Convert_2(K k)
const=0;
136 virtual std::string Create(K k)
const
141 virtual K Parse(std::string s,
bool &success)
const
143 T t = p.Parse(s,success);
152class ObjectToPointerConversionParser :
public ParserPairConversion<T,T*>
155 virtual T* Convert_1(T t)
const
160 virtual T Convert_2(T* t)
const
168class CharParser :
public ParserPair<char>
171 std::string Create(
char c)
const { std::string s; s+=c;
return s; }
172 char Parse(std::string s,
bool &success)
const {
173 if (s.length()!=1) { success =
false;
return ' '; }
180class VectorParser :
public ParserPair<std::vector<T> >
183 VectorParser(ParserPair<T> &pair,
int level) : pair(pair), level(level) { }
184 std::string Create(std::vector<T> vec)
const
188 for(
int i=0;i<s2;i++)
190 s += pair.Create(vec[i]);
195 std::vector<T> Parse(std::string s,
bool &success)
const
200 for(
int i=0;i<ss;i++)
202 if (s[i]==level_char())
204 T t = pair.Parse(s.substr(index,i-index), success);
205 if (!success) { std::cout <<
"VectorParser failed" << std::endl;
return vec; }
213 char level_char()
const
215 char array[] = {
'@',
'%',
'&',
'!',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h' };
224class ArrayParser :
public ParserPair<Array<int, T>*>
227 ArrayParser(ParserPair<T> &t,
int level) : parser(t, level), v(0) { }
228 virtual std::string Create(Array<int,T>* t)
const
230 if (t==0)
return "_";
236 vec.push_back(t->
Index(i));
238 return parser.Create(vec);
240 virtual Array<int,T>* Parse(std::string s,
bool &success)
const
242 if (s.length()==1 && s[0]==
'_') { success =
true;
return 0; }
245 vec = parser.Parse(s,success);
246 v =
new VectorArray<T>(vec.begin(), vec.end());
250 VectorParser<T> parser;
251 mutable std::vector<T> vec;
252 mutable VectorArray<T> *v;
255class StringParser :
public ParserPair<std::string>
257 std::string Create(std::string t)
const {
return t; }
258 std::string Parse(std::string s,
bool &success)
const
266class StringStreamParser :
public ParserPair<T>
269 std::string Create(T t)
const
271 std::stringstream ss;
275 T Parse(std::string s,
bool &success)
const
279 std::stringstream ss;
281 if (ss >> i) { success =
true; }
else { std::cout <<
"StringStream Parser failed" << std::endl; success =
false; }
286class FloatParser :
public StringStreamParser<float> { };
287class IntParser :
public StringStreamParser<int> { };
288class UnsignedIntParser :
public StringStreamParser<unsigned int> { };
289class BoolParser :
public StringStreamParser<bool> { };
293class StructParser :
public ParserPair<T>
296 StructParser(
int level) : level(level) { }
298 void push_back(
const ParserPair<TA> &pair)
300 vec.push_back(&pair);
302 std::string Create(T mystruct)
const
307 for(
int i=0;i<s2;i++)
309 const ParserPairBase *base = vec[i];
310 char *ptr = ((
char*)&mystruct) + pos;
311 int sz = base->SizeOf();
312 ParserPairBase::PtrSize ssz;
315 s += base->BaseCreate(ssz);
321 T Parse(std::string s,
bool &success)
const
328 for(
int i=0;i<sk;i++)
330 if (s[i]==level_char())
332 const ParserPairBase *base = vec[ii];
333 char *ptr = ((
char*)&vec2) + pos;
334 int sz = base->SizeOf();
335 ParserPairBase::PtrSize ssz = base->BaseParse(s.substr(index, i-index), success);
336 if(sz!=
int(ssz.size)) { std::cout <<
"ParseStruct size problem" << std::endl; }
337 if (!success) { std::cout <<
"StructParser failed" << std::endl;
return vec2; }
338 std::copy(ssz.ptr, ssz.ptr+ssz.size, ptr);
347 char level_char()
const
349 char array[] = {
'@',
'%',
'&',
'!',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h' };
354 std::vector<const ParserPairBase*> vec;
359class DiscriminatedUnionParser :
public StructParser<T>
363 void push_back(
const ParserPair<TA> &pair)
365 StructParser<T>::push_back(pair);
369class PointParser :
public ParserPair<Point>
372 PointParser(
int level) : vec(fl, level) { }
373 std::string Create(Point p)
const
375 std::vector<float> v;
379 return vec.Create(v);
381 Point Parse(std::string s,
bool &success)
const
383 std::vector<float> v = vec.Parse(s, success);
384 return Point(v[0],v[1],v[2]);
387 VectorParser<float> vec;
391class Point2dParser :
public ParserPair<Point2d>
394 Point2dParser(
int level) : vec(fl, level) { }
395 std::string Create(Point2d p)
const
397 std::vector<float> v;
400 return vec.Create(v);
402 Point2d Parse(std::string s,
bool &success)
const
404 std::vector<float> v = vec.Parse(s, success);
411 VectorParser<float> vec;
416class Vector3dParser :
public ParserPair<Vector>
419 Vector3dParser(
int level) : vec(fl, level) { }
420 std::string Create(Vector p)
const
422 std::vector<float> v;
426 return vec.Create(v);
428 Vector Parse(std::string s,
bool &success)
const
430 std::vector<float> v = vec.Parse(s, success);
431 return Vector(v[0],v[1],v[2]);
434 VectorParser<float> vec;
439class FaceCollectionParser :
public ParserPair<FaceCollection*>
443 FaceCollectionParser(
int level)
444 : pointsparser_level1(pointsparser_level2, level+1),
445 facepoint_level1(facepoint_level2, level+1),
446 facepoint_level2(facepoint_level3, level+2),
447 facepoint_level3(level+3),
448 pointnormal_level1(pointnormal_level2, level+1),
449 pointnormal_level2(pointnormal_level3, level+2),
450 pointnormal_level3(level+3),
451 color_level1(color_level2, level+1),
452 color_level2(color_level3, level+2),
453 texcoord_level1(texcoord_level2, level+1),
454 texcoord_level2(texcoord_level3, level+2),
455 texcoord_level3(level+3),
456 struct_parser(level+0)
458 struct_parser.push_back(NumFacesParser);
459 struct_parser.push_back(pointsparser_level1);
460 struct_parser.push_back(facepoint_level1);
461 struct_parser.push_back(pointnormal_level1);
462 struct_parser.push_back(color_level1);
463 struct_parser.push_back(texcoord_level1);
468 std::vector<int> numpoints;
469 std::vector<std::vector<Point> > facepoint;
470 std::vector<std::vector<Vector> > pointnormal;
471 std::vector<std::vector<unsigned int> >
color;
472 std::vector<std::vector<Point2d> > texcoord;
474 class FaceStructFaceCollection :
public SingleForwardFaceCollection
477 FaceStructFaceCollection(FaceStruct &st) : st(st) { }
478 void Collect(CollectVisitor &vis)
481 void HeavyPrepare() { }
483 virtual int NumFaces()
const {
return st.numfaces; }
484 virtual int NumPoints(
int face)
const
488 return st.numpoints[face];
490 virtual Point FacePoint(
int face,
int point)
const
492 return st.facepoint[face][point];
494 virtual Vector PointNormal(
int face,
int point)
const
496 return st.pointnormal[face][point];
498 virtual float Attrib(
int face,
int point,
int id)
const
502 virtual int AttribI(
int face,
int point,
int id)
const
506 virtual unsigned int Color(
int face,
int point)
const
508 return st.color[face][point];
510 virtual Point2d TexCoord(
int face,
int point)
const
512 return st.texcoord[face][point];
517 void Copy(FaceStruct &st, FaceCollection *coll)
const
523 st.numpoints.push_back(coll->
NumPoints(i));
524 st.facepoint.push_back(std::vector<Point>());
525 st.pointnormal.push_back(std::vector<Vector>());
526 st.color.push_back(std::vector<unsigned int>());
527 st.texcoord.push_back(std::vector<Point2d>());
528 for(
int k=0;k<st.numpoints[i];k++)
530 st.facepoint[i].push_back(coll->
FacePoint(i,k));
531 st.pointnormal[i].push_back(coll->
PointNormal(i,k));
532 st.color[i].push_back(coll->
Color(i,k));
533 st.texcoord[i].push_back(coll->
TexCoord(i,k));
537 virtual std::string Create(FaceCollection *t)
const
539 if (t==0)
return "_";
542 return struct_parser.Create(s);
544 virtual FaceCollection* Parse(std::string s,
bool &success)
const
546 if (s.length()==1 && s[0]==
'_') { success =
true;
return 0; }
547 FaceStruct *ss =
new FaceStruct;
548 *ss = struct_parser.Parse(s, success);
549 return new FaceStructFaceCollection(*ss);
553 IntParser NumFacesParser;
554 VectorParser<int> pointsparser_level1;
555 IntParser pointsparser_level2;
556 VectorParser<std::vector<Point> > facepoint_level1;
557 VectorParser<Point> facepoint_level2;
558 PointParser facepoint_level3;
559 VectorParser<std::vector<Vector> > pointnormal_level1;
560 VectorParser<Vector> pointnormal_level2;
561 Vector3dParser pointnormal_level3;
562 VectorParser<std::vector<unsigned int> > color_level1;
563 VectorParser<unsigned int> color_level2;
564 UnsignedIntParser color_level3;
565 VectorParser<std::vector<Point2d> > texcoord_level1;
566 VectorParser<Point2d> texcoord_level2;
567 Point2dParser texcoord_level3;
568 StructParser<FaceStruct> struct_parser;
572class BitmapParser :
public ParserPair<Bitmap<T>*>
575 BitmapParser(ParserPair<T> &pair,
int level) : level1(level2,level+0), level2(pair, level+1), pair(pair) { }
576 virtual std::string Create(Bitmap<T> *t)
const
578 std::vector<std::vector<T> > vec;
581 for(
int i=0;i<sy;i++)
583 vec.push_back(std::vector<T>());
584 for(
int j=0;j<sx;j++)
586 vec[i].push_back(t->
Map(i,j));
589 return level1.Create(vec);
592 class VectorVectorBitmap :
public Bitmap<T2>
595 VectorVectorBitmap(std::vector<std::vector<T2> > &vec) : vec(vec) { }
596 void Collect(CollectVisitor &vis)
599 void HeavyPrepare() { }
603 virtual int SizeX()
const {
if (vec.size()==0)
return 0;
return vec[0].size(); }
604 virtual int SizeY()
const {
return vec.size(); }
605 virtual T
Map(
int x,
int y)
const
610 std::vector<std::vector<T2> > &vec;
612 virtual Bitmap<T> *Parse(std::string s,
bool &success)
const
614 std::vector<std::vector<T> > vec = level1.Parse(s, success);
615 std::vector<std::vector<T> > *heap =
new std::vector<std::vector<T> >(vec);
616 return new VectorVectorBitmap<T>(*heap);
620 VectorParser<std::vector<T> > level1;
621 VectorParser<T> level2;
625class EventInfoParser :
public ParserPair<EventInfo>
628 EventInfoParser(
int level)
629 : event_info_parser(level)
631 event_info_parser.push_back(time_parser);
632 event_info_parser.push_back(ac_event_id_parser);
633 event_info_parser.push_back(deac_event_id_parser);
634 event_info_parser.push_back(time_origin_id_parser);
635 event_info_parser.push_back(key_value_parser);
636 event_info_parser.push_back(state_change_id_parser);
637 event_info_parser.push_back(timer_bool_parser);
638 event_info_parser.push_back(key_down_bool_parser);
639 event_info_parser.push_back(key_up_bool_parser);
640 event_info_parser.push_back(ac_mouse_bool_parser);
641 event_info_parser.push_back(deac_mouse_bool_parser);
642 event_info_parser.push_back(state_change_bool_parser);
643 event_info_parser.push_back(padding1);
644 event_info_parser.push_back(padding2);
647 virtual std::string Create(EventInfo t)
const
649 return event_info_parser.Create(t);
651 virtual EventInfo Parse(std::string s,
bool &success)
const
653 return event_info_parser.Parse(s,success);
656 FloatParser time_parser;
657 IntParser ac_event_id_parser;
658 IntParser deac_event_id_parser;
659 IntParser time_origin_id_parser;
660 IntParser key_value_parser;
661 IntParser state_change_id_parser;
662 BoolParser timer_bool_parser;
663 BoolParser key_down_bool_parser;
664 BoolParser key_up_bool_parser;
665 BoolParser ac_mouse_bool_parser;
666 BoolParser deac_mouse_bool_parser;
667 BoolParser state_change_bool_parser;
670 StructParser<EventInfo> event_info_parser;
673class LinkageInfoParser :
public ParserPair<LinkageInfo>
676 LinkageInfoParser(
int level)
679 parser.push_back(start_parser);
680 parser.push_back(end_parser);
682 virtual std::string Create(LinkageInfo t)
const
684 return parser.Create(t);
686 virtual LinkageInfo Parse(std::string s,
bool &success)
const
688 return parser.Parse(s,success);
691 IntParser start_parser;
692 IntParser end_parser;
693 StructParser<LinkageInfo> parser;
696class PolyHandleParser :
public ParserPair<FaceCollPolyHandle*>
699 PolyHandleParser(
int level) : coll(level+1), facesparser(level+2), arrayparser(facesparser,level+1), struct_parser(level)
701 struct_parser.push_back(
id);
702 struct_parser.push_back(coll);
703 struct_parser.push_back(arrayparser);
704 struct_parser.push_back(collowned);
705 struct_parser.push_back(arrayowned);
706 struct_parser.push_back(padding1);
707 struct_parser.push_back(padding2);
709 std::string Create(FaceCollPolyHandle* t)
const
711 if (t==0)
return "_";
712 FaceCollPolyHandle h = *t;
715 return struct_parser.Create(h);
717 FaceCollPolyHandle* Parse(std::string s,
bool &success)
const
719 if (s.length()==1 && s[0]==
'_') { success =
true;
return 0; }
721 faces = struct_parser.Parse(s,success);
723 return const_cast<FaceCollPolyHandle*
>(
static_cast<const FaceCollPolyHandle*
>(&faces));
728 FaceCollectionParser coll;
729 BoolParser collowned;
730 FaceCollectionParser facesparser;
731 ArrayParser<FaceCollection*> arrayparser;
732 BoolParser arrayowned;
735 StructParser<FaceCollPolyHandle> struct_parser;
736 mutable FaceCollPolyHandle faces;
741template<
class T,
class K>
742class DynamicCastParser :
public ParserPairConversion<T*, K*>
745 DynamicCastParser(ParserPair<T*> &p) : ParserPairConversion<T*,K*>(p) { }
746 virtual K *Convert_1(T *t)
const {
return dynamic_cast<K*
>(t); }
747 virtual T *Convert_2(K *k)
const {
return k; }
754class PolyHandleParser :
public ParserPair<PolyHandle*>
757 PolyHandleParser(
int level) : parser(level),
convert(parser) { }
759 FaceCollPolyHandleParser parser;
760 DynamicCastParser<PolyHandle, FaceCollPolyHandle>
convert;
766class BitmapHandleParser :
public ParserPair<BitmapHandle*>
769 BitmapHandleParser(
int level) : level(level), color_parser(level+3), bm_parser(color_parser, level+2)
771 color_parser.push_back(r_parser);
772 color_parser.push_back(g_parser);
773 color_parser.push_back(b_parser);
774 color_parser.push_back(alpha_parser);
777 virtual std::string Create(BitmapHandle* t)
const
779 BitmapColorHandle *chandle =
dynamic_cast<BitmapColorHandle*
>(t);
783 std::string s = p.Create(1);
784 StringParser string_parser;
785 VectorParser<std::string> vec_parser(string_parser, level+1);
786 std::vector<std::string> vec;
788 std::string s2 = bm_parser.Create(chandle->
bm);
790 return vec_parser.Create(vec);
794 std::cout <<
"ERROR, INVALID BITMAP TYPE IN SERIALIZE" << std::endl;
796 std::string s = p.Create(-1);
797 StringParser string_parser;
798 VectorParser<std::string> vec_parser(string_parser, level+1);
799 std::vector<std::string> vec;
803 return vec_parser.Create(vec);
807 virtual BitmapHandle* Parse(std::string s,
bool &success)
const
809 StringParser string_parser;
810 VectorParser<std::string> vec_parser(string_parser, level+1);
811 std::vector<std::string> vec = vec_parser.Parse(s,success);
812 if (!success)
return NULL;
813 std::string type_string = vec[0];
815 int value = p.Parse(type_string, success);
816 if (!success)
return NULL;
821 std::string bitmap_string = vec[1];
822 Bitmap<Color> *bm = bm_parser.Parse(bitmap_string, success);
823 if (!success)
return NULL;
824 BitmapColorHandle *handle =
new BitmapColorHandle;
831 std::cout <<
"UNKNOWN BITMAP TYPE IN UNSERIALIZE" << std::endl;
838 IntParser r_parser, g_parser, b_parser, alpha_parser;
839 StructParser<Color> color_parser;
840 BitmapParser<Color> bm_parser;
845class LinkInfoParser :
public ParserPair<LinkInfo>
848 LinkInfoParser(
int level) : poly_start(level+1), poly_end(level+1), bitmap_start(level+1), bitmap_end(level+1), link_info_parser(level)
850 link_info_parser.push_back(start_event);
851 link_info_parser.push_back(end_event);
852 link_info_parser.push_back(poly_start);
853 link_info_parser.push_back(poly_end);
854 link_info_parser.push_back(bitmap_start);
855 link_info_parser.push_back(bitmap_end);
857 link_info_parser.push_back(func1);
858 link_info_parser.push_back(func1_scale);
859 link_info_parser.push_back(
func2);
860 link_info_parser.push_back(func2_scale);
861 link_info_parser.push_back(func3);
862 link_info_parser.push_back(func3_scale);
863 link_info_parser.push_back(func4);
864 link_info_parser.push_back(func4_scale);
866 link_info_parser.push_back(polygon_posx_func);
867 link_info_parser.push_back(polygon_posy_func);
868 link_info_parser.push_back(polygon_posz_func);
869 link_info_parser.push_back(bitmap_posx_func);
870 link_info_parser.push_back(bitmap_posy_func);
871 link_info_parser.push_back(bitmap_posz_func);
872 link_info_parser.push_back(polygon_rotx_func);
873 link_info_parser.push_back(polygon_roty_func);
874 link_info_parser.push_back(polygon_rotz_func);
875 link_info_parser.push_back(sound_channel_func);
878 virtual std::string Create(LinkInfo t)
const
880 return link_info_parser.Create(t);
882 virtual LinkInfo Parse(std::string s,
bool &success)
const
884 return link_info_parser.Parse(s,success);
887 IntParser start_event;
889 PolyHandleParser poly_start;
890 PolyHandleParser poly_end;
891 BitmapHandleParser bitmap_start;
892 BitmapHandleParser bitmap_end;
894 FunctionParser func1;
895 BoolParser func1_scale;
896 FunctionParser
func2;
897 BoolParser func2_scale;
898 FunctionParser func3;
899 BoolParser func3_scale;
900 FunctionParser func4;
901 BoolParser func4_scale;
903 IntParser polygon_posx_func;
904 IntParser polygon_posy_func;
905 IntParser polygon_posz_func;
906 IntParser bitmap_posx_func;
907 IntParser bitmap_posy_func;
908 IntParser bitmap_posz_func;
909 IntParser polygon_rotx_func;
910 IntParser polygon_roty_func;
911 IntParser polygon_rotz_func;
912 IntParser sound_channel_func;
913 StructParser<LinkInfo> link_info_parser;
916class NDimParser :
public ParserPair<NDim<float,Point>*>
919 NDimParser(
int level) : pointparser(level+1) { }
920 virtual std::string Create(NDim<float,Point> *t)
const
922 int sz = t->
Count().size();
923 std::cout <<
"sz: " << sz << std::endl;
924 float *
array =
new float[sz];
925 for(
int i=0;i<sz;i++) {
array[i] = 0.0; }
926 std::string ss =
"{";
927 ss += intparser.Create(sz);
929 ss += CreateRecurse(t, array, sz,sz);
933 virtual NDim<float,Point> *Parse(std::string s,
bool &success)
const
938 std::string CreateRecurse(NDim<float,Point> *t,
float *array,
int sz,
int orig_sz)
const
944 s+=CreateRecurse(t, array, sz-1, orig_sz);
946 s+=CreateRecurse(t, array, sz-1, orig_sz);
949 s+=pointparser.Create(t->
Map(array, orig_sz));
953 s+=pointparser.Create(t->
Map(array, orig_sz));
959 PointParser pointparser;
962class PosInfoParser :
public ParserPair<PosInfo>
965 PosInfoParser(
int level) : curve(level+1), struct_parser(level)
967 struct_parser.push_back(
link);
968 struct_parser.push_back(curve);
970 virtual std::string Create(PosInfo t)
const
972 return struct_parser.Create(t);
974 virtual PosInfo Parse(std::string s,
bool &success)
const
976 return struct_parser.Parse(s,success);
982 CurveIn3dParser curve;
984 StructParser<PosInfo> struct_parser;
987class MousePlaneParser :
public ParserPair<MousePlane*>
990 MousePlaneParser(
int level) { }
991 virtual std::string Create(MousePlane* t)
const
993 if (t==0)
return "_";
996 virtual MousePlane* Parse(std::string s,
bool &success)
const
998 if (s.length()==1 && s[0]==
'_') { success =
true;
return 0; }
1006class StateInfo2Parser :
public ParserPair<StateInfo2>
1009 StateInfo2Parser(
int level) : enable_obj(boolparser, level+1), plane(level+1), struct_parser(level)
1011 struct_parser.push_back(enable_obj);
1012 struct_parser.push_back(plane);
1014 virtual std::string Create(StateInfo2 t)
const
1016 return struct_parser.Create(t);
1018 virtual StateInfo2 Parse(std::string s,
bool &success)
const
1020 return struct_parser.Parse(s,success);
1024 BoolParser boolparser;
1025 ArrayParser<bool> enable_obj;
1026 MousePlaneParser plane;
1027 StructParser<StateInfo2> struct_parser;
1030class SequencerParser :
public ParserPair<Sequencer2*>
1034 events_parser(eventinfo_parser, 1),
1035 eventinfo_parser(1),
1036 linkage_parser(linkageinfo_parser, 1),
1037 linkageinfo_parser(1),
1038 links_parser(linkinfo_parser, 1),
1040 pos_parser(posinfo_parser, 1),
1042 states_parser(stateinfo2_parser,1),
1043 stateinfo2_parser(1),
1046 struct_parser.push_back(events_parser);
1047 struct_parser.push_back(linkage_parser);
1048 struct_parser.push_back(links_parser);
1049 struct_parser.push_back(pos_parser);
1050 struct_parser.push_back(states_parser);
1054 std::vector<EventInfo> events;
1055 std::vector<LinkageInfo> linkage;
1056 std::vector<LinkInfo> links;
1057 std::vector<PosInfo> pos;
1058 std::vector<StateInfo2> states;
1060 class SeqDataSequencer2 :
public Sequencer2
1064 virtual int NumEvents()
const {
return data.events.size(); }
1065 virtual EventInfo Event(
int i)
const {
return data.events[i]; }
1067 virtual int NumLinks()
const {
return data.linkage.size(); }
1068 virtual LinkageInfo Linkage(
int i)
const {
return data.linkage[i]; }
1069 virtual LinkInfo Links(
int i)
const {
return data.links[i]; }
1071 virtual int NumPositions()
const {
return data.pos.size(); }
1072 virtual PosInfo Positions(
int i)
const {
return data.pos[i]; }
1074 virtual int NumStates()
const {
return data.states.size(); }
1075 virtual StateInfo2 States(
int i)
const {
return data.states[i]; }
1080 virtual std::string Create(Sequencer2* t)
const
1084 for(
int i1=0;i1<s1;i1++)
1089 for(
int i2=0;i2<s2;i2++)
1095 for(
int i3=0;i3<s3;i3++)
1100 for(
int i4=0;i4<s4;i4++)
1104 return struct_parser.Create(
data);
1106 virtual Sequencer2* Parse(std::string s,
bool &success)
const
1108 SeqData
data = struct_parser.Parse(s, success);
1109 if (!success)
return 0;
1110 SeqData *heap =
new SeqData(
data);
1111 return new SeqDataSequencer2(*heap);
1114 VectorParser<EventInfo> events_parser;
1115 EventInfoParser eventinfo_parser;
1116 VectorParser<LinkageInfo> linkage_parser;
1117 LinkageInfoParser linkageinfo_parser;
1118 VectorParser<LinkInfo> links_parser;
1119 LinkInfoParser linkinfo_parser;
1120 VectorParser<PosInfo> pos_parser;
1121 PosInfoParser posinfo_parser;
1122 VectorParser<StateInfo2> states_parser;
1123 StateInfo2Parser stateinfo2_parser;
1124 StructParser<SeqData> struct_parser;
PT Map(PT p, int face, int point, void *data)
Definition GameApiTest.cc:19
virtual I Size() const =0
virtual int SizeY() const =0
virtual int SizeX() const =0
virtual C Map(int x, int y) const =0
Definition EffectI.hh:212
virtual Vector PointNormal(int face, int point) const =0
virtual Point FacePoint(int face, int point) const =0
virtual unsigned int Color(int face, int point) const =0
virtual int NumPoints(int face) const =0
virtual Point2d TexCoord(int face, int point) const =0
virtual int NumFaces() const =0
virtual B Index(A a) const =0
virtual B Map(I *array, int size) const =0
virtual std::vector< I > Count() const =0
virtual int NumStates() const =0
virtual LinkInfo Links(int i) const =0
virtual StateInfo2 States(int i) const =0
virtual PosInfo Positions(int i) const =0
virtual EventInfo Event(int i) const =0
virtual LinkageInfo Linkage(int i) const =0
virtual int NumEvents() const =0
virtual int NumPositions() const =0
virtual int NumLinks() const =0
float dy
Definition VectorTools.hh:268
float dz
Definition VectorTools.hh:268
float dx
Definition VectorTools.hh:268
background color
Definition gameapi_example.php:46
PT func2(int face, int point, EveryApi &ev)
Definition test.cpp:27
convert($d)
Definition mesh_api.php:35
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
lazy data
Definition meshpage.php:1583
n< br > font size
Definition meshpage.php:3536
void array(const std::string &type, Module &m)
Definition bootstrap.hpp:23
std::vector< int > owned
Definition Parser.hh:27
~BitmapArrayHandle()
Definition Parser.hh:28
std::vector< BitmapHandle * > vec
Definition Parser.hh:26
~BitmapColorHandle()
Definition Parser.hh:17
Bitmap< Color > * bm
Definition Parser.hh:16
int id
Definition Parser.hh:9
virtual ~BitmapHandle()
Definition Parser.hh:10
Bitmap< int > * bm
Definition Parser.hh:21
~BitmapIntHandle()
Definition Parser.hh:22
Bitmap< Pos > * bm
Definition Parser.hh:44
~BitmapPosHandle()
Definition Parser.hh:45
~BitmapTileHandle()
Definition Parser.hh:51
Bitmap< Color > * bm
Definition Parser.hh:49
int tile_sy
Definition Parser.hh:50
int tile_sx
Definition Parser.hh:50
Array< int, FaceCollection * > * collarray
Definition Parser.hh:60
FaceCollection * coll
Definition Parser.hh:58
bool collarrayowned
Definition Parser.hh:62
bool padding1
Definition Parser.hh:64
bool collowned
Definition Parser.hh:61
~FaceCollPolyHandle()
Definition Parser.hh:66
FaceCollPolyHandle()
Definition Parser.hh:56
bool padding2
Definition Parser.hh:65
int id
Definition Parser.hh:57
float x
Definition VectorTools.hh:911
float y
Definition VectorTools.hh:911
float x
Definition Parser.cc:60
float y
Definition Parser.cc:60
float z
Definition Parser.cc:60
Definition Common2.hh:717
virtual ~PolyHandle()
Definition Common2.hh:719
int id
Definition Common2.hh:718
W link(std::string url, std::string str, int size_x, int size_y, int font_size, unsigned int font_colour, int align)
Definition ui.cc:731