Overview
Comment: | Added errorfile argument |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | origin/master | trunk |
Files: | files | file ages | folders |
SHA3-256: |
b2b7e2b8cbda42fe467a4af7b3547799 |
User & Date: | gawthrop@users.sourceforge.net on 1998-07-08 15:35:15 |
Other Links: | branch diff | manifest | tags |
Context
1998-07-08
| ||
15:45:50 | out now aliases 2 check-in: 5b0761c846 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
15:35:15 | Added errorfile argument check-in: b2b7e2b8cb user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
15:34:56 | Sorted out error exit status check-in: 13939defb0 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
Changes
Modified mttroot/mtt/bin/trans/m/rbg2abg.m from [b7cb60a57a] to [8516bd9170].
|
| | > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function [bonds,components] = rbg2abg(name,rbonds,rstrokes,rcomponents,port_coord,port_name,\ infofile,errorfile) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% Version control history % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% $Id$ % %% $Log$ % %% Revision 1.34 1998/07/02 19:41:29 peterg % %% Fixed empty port string bug - set to null string. % %% % %% Revision 1.33 1998/07/02 17:16:06 peterg % %% Commented out redundent code -- obsolete due to new default mechanism % %% % %% Revision 1.32 1998/07/02 15:12:05 peterg % %% Added hard error reporting % %% Added error when two unlabled bonds point in. % %% |
︙ | ︙ | |||
121 122 123 124 125 126 127 | % %% Fixed no causal strokes bug. % %% % %% Revision 1.1 1996/08/04 18:30:14 peter % %% Initial revision % %% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | < < < < < | 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | % %% Fixed no causal strokes bug. % %% % %% Revision 1.1 1996/08/04 18:30:14 peter % %% Initial revision % %% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Default to no components components = [0]; % Xfig scaling factor scale = 1200.0/2.54546; |
︙ | ︙ | |||
214 215 216 217 218 219 220 | eval(['[comp_type, comp_name] = ', name, '_cmp(i)']); % There are n_comp_bonds bonds on this component with corresponding index [index,n_comp_bonds] = getindex(comp_near_bond,i); if index(1,1)==0 mtt_error(sprintf("Component %s (%s) has no bonds", comp_name, | | | | 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 | eval(['[comp_type, comp_name] = ', name, '_cmp(i)']); % There are n_comp_bonds bonds on this component with corresponding index [index,n_comp_bonds] = getindex(comp_near_bond,i); if index(1,1)==0 mtt_error(sprintf("Component %s (%s) has no bonds", comp_name, comp_type),errorfile); end; % Create the signed list of bonds on this component one = ones(n_comp_bonds,1); bond_list = index(:,1); % bond at component % Check that all bonds are unique -- error if not if unique(bond_list)==0 mtt_error(sprintf("Component %s (%s) is at both ends of a bond", comp_name, comp_type),errorfile); end; % which end of bond at component? bond_end = index(:,2); direction = -sign(bond_end-1.5*one); signed_bond_list = bond_list.*direction; |
︙ | ︙ | |||
259 260 261 262 263 264 265 | out_bonds++; port_name_i = "out"; end; elseif (unlabelled_ports==2) if port_direction>0 if (++in_bonds>1) mtt_error(["More than one unlabelled INport on component " \ | | | | | | | 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 | out_bonds++; port_name_i = "out"; end; elseif (unlabelled_ports==2) if port_direction>0 if (++in_bonds>1) mtt_error(["More than one unlabelled INport on component " \ comp_name " (" comp_type ")"],errorfile); else port_name_i = "in"; end else if (++out_bonds>1) mtt_error(["More than one unlabelled OUTport on component " \ comp_name " (" comp_type ")"],errorfile); else port_name_i = "out"; end end; else mtt_error(["More than two unlabelled ports on component " \ comp_name " (" comp_type ")"],errorfile); end mtt_info(["Defaulting port name [" port_name_i "]\t on component " \ comp_name " (" comp_type ")" ],infofile); port_name = [port_name; ["[" port_name_i "]"]]; # add to list [port_name_index,junk] = size(port_name); # the corresponding # index port_bond(port_name_index,:) = signed_bond; # add to port bond else port_name_i = deblank(port_name(port_name_index,:)); port_name_i = port_name_i(2:length(port_name_i)-1) # strip [] end; % Replace by alias -- if any eval( ["alias = ", comp_type, '_alias';]); # Get aliases if is_struct(alias) # are there any aliases if struct_contains(alias,port_name_i) # Is this an alias? eval(["new_port_name_i = alias.",port_name_i]); mtt_info(["Expanding port name [" port_name_i "]\t on component " \ comp_name " (" comp_type ")\t to [" new_port_name_i "]"],infofile); port_name = replace_name(port_name, \ ["[",new_port_name_i,"]"], \ port_name_index); end end end end |
︙ | ︙ | |||
376 377 378 379 380 381 382 | % bond signed_bond_index = port_bond(i); [other_bond_index,n_other] = getindex(port_bond,-signed_bond_index); if n_other == 1 other_port_name = port_name(other_bond_index,:); [other_subport,n_other_subports] = split_port(other_port_name, ','); if n_other_subports~=n_subports | | | | | | 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 | % bond signed_bond_index = port_bond(i); [other_bond_index,n_other] = getindex(port_bond,-signed_bond_index); if n_other == 1 other_port_name = port_name(other_bond_index,:); [other_subport,n_other_subports] = split_port(other_port_name, ','); if n_other_subports~=n_subports mtt_error(['Vector ports ', port_name_i, ' and ', other_port_name, 'are not compatible'],errorfile); end else mtt_error(['Vector port ', port_name_i, ' has no matching port'], errorfile); end; if other_bond_index>i %then its not been done yet mtt_info(['Vector port: ', port_name_i],infofile); mtt_info(['matching: ', other_port_name],infofile); % Remove sign info. bond_index = abs(signed_bond_index); sig = sign(signed_bond_index); % Put the first element of each port list in the expanded list exp_port_name = [exp_port_name; subport(1,:)]; exp_port_name = [exp_port_name; other_subport(1,:)]; |
︙ | ︙ | |||
468 469 470 471 472 473 474 | % Check that number of bonds on the component is the same as the number of % ports [n_comp_ports,m_comp_ports] = size(port_list); if (n_comp_ports~=n_comp_bonds) & ... ~(strcmp(comp_type,'zero')|strcmp(comp_type,'one')) message=sprintf('Component %s (%s) has %1.0f impinging bonds but has %1.0f ports', ... comp_name,comp_type,n_comp_bonds,n_comp_ports); | | | 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 | % Check that number of bonds on the component is the same as the number of % ports [n_comp_ports,m_comp_ports] = size(port_list); if (n_comp_ports~=n_comp_bonds) & ... ~(strcmp(comp_type,'zero')|strcmp(comp_type,'one')) message=sprintf('Component %s (%s) has %1.0f impinging bonds but has %1.0f ports', ... comp_name,comp_type,n_comp_bonds,n_comp_ports); mtt_error(message, errorfile); end; unsorted_port_list=""; if n_ports>0 % then there are some named ports % so find those associated with the bonds on this component. k=0; for j = 1:n_comp_bonds |
︙ | ︙ | |||
491 492 493 494 495 496 497 | else k=0; end; # %Either all ports or no ports should be labelled - write error # %message if this is not so # if (k~=0)&(k~=n_comp_bonds) | | | | | | | | | | | | < | 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 | else k=0; end; # %Either all ports or no ports should be labelled - write error # %message if this is not so # if (k~=0)&(k~=n_comp_bonds) # mtt_info(['Component ', comp_name, ' (', comp_type, ') has wrong number of labels'], infofile); # mtt_info(sprintf("\tit has %1.0f labels but should have 0 or \ # %1.0f",k,n_comp_bonds), infofile); # portnames=""; # for kk=1:k # portnames=sprintf("%s %s",portnames, unsorted_port_list(kk,:)); # end; # mtt_error(portnames,errorfile); # end; %Compute the number of labeled ports [n_unsorted_ports,m_unsorted_ports] = size(unsorted_port_list); if m_unsorted_ports==0 n_unsorted_ports = 0; end; # n_unsorted_ports,n_comp_bonds # % One port defaults: # if (n_comp_bonds==1)&(n_unsorted_ports==0) # %if (direction(1)<0) & ~strcmp(comp_type,'SS') % Wrong way for default # % mtt_error(['One-port ', comp_name, ' (', comp_type, ') has the sign pointing the wrong way '], errorfile); # %end; # unsorted_port_list = port_list; # end; # %Two port defaults # if (n_comp_bonds==2)&(n_unsorted_ports==0) # if direction(1)==direction(2) % Wrong way for default # % mtt_error(['Two-port ', comp_name, ' (', comp_type, ') does not have through-pointing arrows'], errorfile); # end; # if direction(1)==1 %in # % mtt_info([comp_name, ' in'],infofile); # unsorted_port_list = ['[in]';'[out]']; # else %reverse the order # % mtt_info([comp_name, ' out'],infofile); # unsorted_port_list = ['[out]';'[in]']; # end; # end; # % Recompute the number of unsorted ports # [n_unsorted_ports,m_unsorted_ports] = size(unsorted_port_list); # if m_unsorted_ports==0 # n_unsorted_ports = 0; # end; % Junctions or no lables(order of ports unimportant) if strcmp(comp_type,'zero')|strcmp(comp_type,'one') for j = 1:n_comp_bonds components(i,j) = signed_bond_list(j); end else %Order of ports is important unsorted_port_list, port_list if n_unsorted_ports==0 mtt_error(['Component ', comp_name, ' (', comp_type, ') has no labeled ports'], errorfile); end; %Write out the signed bond list in the correct order unsorted_port_list for j = 1:n_comp_bonds j name_k = unsorted_port_list(j,:) k = name_in_list(name_k, port_list); % Check that it only appears once in port list if length(k)>1 mtt_error(['Component ', comp_name, ' (', comp_type, ') has ports with the same name: ', name_k], errorfile); end; %Check that it only appears one in the label list kk = name_in_list(name_k,unsorted_port_list); if length(kk)>1 mtt_error(['Component ', comp_name, ' (', comp_type, ') has multiple port labels: ', name_k], errorfile); end; if k==0 mtt_error(['Component ', comp_name, ' (', comp_type, ') has an unrecognised port: ', name_k], errorfile); else components(i,k) = signed_bond_list(j); end; end; end; end; |