Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Stalift/floating_mixed_subdivisions_io.adb, Revision 1.1
1.1 ! maekawa 1: with integer_io; use integer_io;
! 2: with Standard_Floating_Numbers_io; use Standard_Floating_Numbers_io;
! 3: with Standard_Integer_Vectors_io;
! 4: with Standard_Floating_Vectors_io;
! 5: with Lists_of_Floating_Vectors_io;
! 6: with Floating_Integer_Convertors; use Floating_Integer_Convertors;
! 7: with Integer_Mixed_Subdivisions;
! 8: with Mixed_Volume_Computation; use Mixed_Volume_Computation;
! 9:
! 10: package body Floating_Mixed_Subdivisions_io is
! 11:
! 12: -- AUXILIARY :
! 13:
! 14: procedure Mixed_Volume ( n : in natural;
! 15: mix : in Standard_Integer_Vectors.Vector;
! 16: mic : in out Mixed_Cell; mv : out natural ) is
! 17:
! 18: intmic : Integer_Mixed_Subdivisions.Mixed_Cell;
! 19: intsub : Integer_Mixed_Subdivisions.Mixed_Subdivision;
! 20: use Integer_Mixed_Subdivisions;
! 21:
! 22: begin
! 23: if mic.sub /= null
! 24: then intsub := Convert(mic.sub.all);
! 25: Mixed_Volume(n,mix,intsub,mv);
! 26: Deep_Clear(intsub);
! 27: else intmic := Convert(mic);
! 28: Mixed_Volume(n,mix,intmic,mv);
! 29: if intmic.sub /= null
! 30: then mic.sub := new Floating_Mixed_Subdivisions.
! 31: Mixed_Subdivision'(Convert(intmic.sub.all));
! 32: end if;
! 33: Deep_Clear(intmic);
! 34: end if;
! 35: end Mixed_Volume;
! 36:
! 37: -- INPUT ROUTINES :
! 38:
! 39: procedure get ( n,m : in natural; mic : out Mixed_Cell ) is
! 40: begin
! 41: get(Standard_Input,n,m,mic);
! 42: end get;
! 43:
! 44: procedure get ( file : in file_type;
! 45: n,m : in natural; mic : out Mixed_Cell ) is
! 46:
! 47: adl : Array_of_Lists(1..m);
! 48: l : natural;
! 49:
! 50: begin
! 51: Standard_Floating_Vectors_io.get(file,n+1,mic.nor);
! 52: for k in 1..m loop
! 53: get(file,l);
! 54: Lists_of_Floating_Vectors_io.get(file,n+1,l,adl(k));
! 55: end loop;
! 56: mic.pts := new Array_of_Lists'(adl);
! 57: get(file,l);
! 58: if l /= 0
! 59: then declare
! 60: nn,mm : natural;
! 61: mix : Standard_Integer_Vectors.Link_to_Vector;
! 62: sub : Mixed_Subdivision;
! 63: begin
! 64: get(file,nn,mm,mix,sub);
! 65: if not Is_Null(sub)
! 66: then mic.sub := new Mixed_Subdivision'(sub);
! 67: end if;
! 68: end;
! 69: end if;
! 70: end get;
! 71:
! 72: procedure get ( n,m : out natural;
! 73: mixed_type : out Standard_Integer_Vectors.Link_to_Vector;
! 74: mixsub : out Mixed_Subdivision ) is
! 75: begin
! 76: get(Standard_Input,n,m,mixed_type,mixsub);
! 77: end get;
! 78:
! 79: procedure get ( file : in file_type; n,m : out natural;
! 80: mixed_type : out Standard_Integer_Vectors.Link_to_Vector;
! 81: mixsub : out Mixed_Subdivision ) is
! 82:
! 83: res,res_last : Mixed_Subdivision;
! 84: l,nn,mm : natural;
! 85:
! 86: begin
! 87: get(file,nn); n := nn;
! 88: get(file,mm); m := mm;
! 89: Standard_Integer_Vectors_io.get(file,mm,mixed_type);
! 90: get(file,l);
! 91: for k in 1..l loop
! 92: declare
! 93: mic : Mixed_Cell;
! 94: begin
! 95: get(file,nn,mm,mic);
! 96: Append(res,res_last,mic);
! 97: end;
! 98: end loop;
! 99: mixsub := res;
! 100: end get;
! 101:
! 102: -- OUTPUT ROUTINES :
! 103:
! 104: procedure put ( lifvec : in Standard_Floating_Vectors.Vector ) is
! 105: begin
! 106: put(Standard_Output,lifvec);
! 107: end put;
! 108:
! 109: procedure put ( file : in file_type;
! 110: lifvec : in Standard_Floating_Vectors.Vector ) is
! 111: begin
! 112: for i in lifvec'first..lifvec'last-1 loop
! 113: text_io.put(file,' '); put(file,lifvec(i),1,0,0);
! 114: end loop;
! 115: text_io.put(file,' '); put(file,lifvec(lifvec'last));
! 116: end put;
! 117:
! 118: procedure put ( lifsup : in List ) is
! 119: begin
! 120: put(Standard_Output,lifsup);
! 121: end put;
! 122:
! 123: procedure put ( file : in file_type; lifsup : in List ) is
! 124:
! 125: tmp : List := lifsup;
! 126:
! 127: begin
! 128: while not Is_Null(tmp) loop
! 129: put(file,Head_Of(tmp).all); new_line(file);
! 130: tmp := Tail_Of(tmp);
! 131: end loop;
! 132: end put;
! 133:
! 134: procedure put ( lifsup : in Array_of_Lists ) is
! 135: begin
! 136: put(Standard_Output,lifsup);
! 137: end put;
! 138:
! 139: procedure put ( file : in file_type; lifsup : in Array_of_Lists ) is
! 140: begin
! 141: for i in lifsup'range loop
! 142: put(file,lifsup(i)); new_line(file);
! 143: end loop;
! 144: end put;
! 145:
! 146: procedure put ( n : in natural; mix : in Standard_Integer_Vectors.Vector;
! 147: mic : in Mixed_Cell ) is
! 148: begin
! 149: put(Standard_Output,n,mix,mic);
! 150: end put;
! 151:
! 152: procedure put ( n : in natural; mix : in Standard_Integer_Vectors.Vector;
! 153: mic : in out Mixed_Cell; mv : out natural ) is
! 154: begin
! 155: put(Standard_Output,n,mix,mic,mv);
! 156: end put;
! 157:
! 158: procedure put ( file : in file_type; n : in natural;
! 159: mix : in Standard_Integer_Vectors.Vector;
! 160: mic : in Mixed_Cell ) is
! 161: begin
! 162: for i in mic.nor'range loop
! 163: put(file,mic.nor(i)); new_line(file);
! 164: end loop;
! 165: for k in mic.pts'range loop
! 166: put(file,Length_Of(mic.pts(k)),1); new_line(file);
! 167: put(file,mic.pts(k));
! 168: end loop;
! 169: if mic.sub = null
! 170: then put(file,0,1); new_line(file);
! 171: else put(file,1,1); new_line(file);
! 172: put(file,n,mix,mic.sub.all);
! 173: end if;
! 174: end put;
! 175:
! 176: procedure put ( file : in file_type;
! 177: n : in natural; mix : in Standard_Integer_Vectors.Vector;
! 178: mic : in out Mixed_Cell; mv : out natural ) is
! 179: begin
! 180: text_io.put_line(file," normal to cell : ");
! 181: for i in mic.nor'range loop
! 182: put(file,mic.nor(i)); new_line(file);
! 183: end loop;
! 184: text_io.put_line(file," the points in the cell : ");
! 185: for k in mic.pts'range loop
! 186: text_io.put(file," component "); put(file,k,1);
! 187: text_io.put(file," with ");
! 188: put(file,Length_Of(mic.pts(k)),1); text_io.put_line(file," points :");
! 189: put(file,mic.pts(k));
! 190: end loop;
! 191: Mixed_Volume(n,mix,mic,mv);
! 192: if mic.sub /= null
! 193: then text_io.put_line(file," with refinement : ");
! 194: put(file,n,mix,mic.sub.all,mv);
! 195: end if;
! 196: end put;
! 197:
! 198: procedure put ( n : in natural; mix : in Standard_Integer_Vectors.Vector;
! 199: mixsub : in Mixed_Subdivision ) is
! 200: begin
! 201: put(Standard_Output,n,mix,mixsub);
! 202: end put;
! 203:
! 204: procedure put ( n : in natural; mix : in Standard_Integer_Vectors.Vector;
! 205: mixsub : in out Mixed_Subdivision; mv : out natural ) is
! 206: begin
! 207: put(Standard_Output,n,mix,mixsub,mv);
! 208: end put;
! 209:
! 210: procedure put ( file : in file_type; n : in natural;
! 211: mix : in Standard_Integer_Vectors.Vector;
! 212: mixsub : in Mixed_Subdivision ) is
! 213:
! 214: tmp : Mixed_Subdivision := mixsub;
! 215:
! 216: begin
! 217: put(file,n,1); new_line(file);
! 218: put(file,mix'last,1); new_line(file);
! 219: Standard_Integer_Vectors_io.put(file,mix); new_line(file);
! 220: put(file,Length_Of(mixsub),1); new_line(file);
! 221: while not Is_Null(tmp) loop
! 222: put(file,n,mix,Head_Of(tmp));
! 223: tmp := Tail_Of(tmp);
! 224: end loop;
! 225: end put;
! 226:
! 227: procedure put ( file : in file_type; n : in natural;
! 228: mix : in Standard_Integer_Vectors.Vector;
! 229: mixsub : in out Mixed_Subdivision; mv : out natural ) is
! 230:
! 231: tmp : Mixed_Subdivision := mixsub;
! 232: cnt,res : natural := 0;
! 233: vol : natural;
! 234:
! 235: begin
! 236: text_io.put(file,"Dimension without lifting : ");
! 237: put(file,n,1); new_line(file);
! 238: text_io.put(file,"Number of different supports : ");
! 239: put(file,mix'last,1); new_line(file);
! 240: text_io.put(file,"Type of mixture : ");
! 241: Standard_Integer_Vectors_io.put(file,mix); new_line(file);
! 242: put_line(file,"The cells in the subdivision :");
! 243: while not Is_Null(tmp) loop
! 244: cnt := cnt + 1;
! 245: text_io.put(file,"Cell "); put(file,cnt,1); text_io.put_line(file," :");
! 246: declare
! 247: mic : Mixed_Cell := Head_Of(tmp);
! 248: begin
! 249: put(file,n,mix,mic,vol);
! 250: Set_Head(tmp,mic);
! 251: end;
! 252: text_io.put(file,"==> Volume : "); put(file,vol,1); put_line(file,".");
! 253: res := res + vol;
! 254: tmp := Tail_Of(tmp);
! 255: end loop;
! 256: mv := res;
! 257: end put;
! 258:
! 259: end Floating_Mixed_Subdivisions_io;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>