<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki-pnb.eri.ucsb.edu/index.php?action=history&amp;feed=atom&amp;title=Read_struc.m</id>
	<title>Read struc.m - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-pnb.eri.ucsb.edu/index.php?action=history&amp;feed=atom&amp;title=Read_struc.m"/>
	<link rel="alternate" type="text/html" href="https://wiki-pnb.eri.ucsb.edu/index.php?title=Read_struc.m&amp;action=history"/>
	<updated>2026-05-22T19:19:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>https://wiki-pnb.eri.ucsb.edu/index.php?title=Read_struc.m&amp;diff=214&amp;oldid=prev</id>
		<title>128.111.101.185: Created page with '&lt;pre&gt; %READ_STRUC2.M %SRW 11/98,09/99 %Returns an empty structure in parfile not found. %Reads data into a structure from a file with, %  1) Field name lines begin with a #,##,##…'</title>
		<link rel="alternate" type="text/html" href="https://wiki-pnb.eri.ucsb.edu/index.php?title=Read_struc.m&amp;diff=214&amp;oldid=prev"/>
		<updated>2010-08-05T23:53:13Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;&amp;lt;pre&amp;gt; %READ_STRUC2.M %SRW 11/98,09/99 %Returns an empty structure in parfile not found. %Reads data into a structure from a file with, %  1) Field name lines begin with a #,##,##…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
%READ_STRUC2.M&lt;br /&gt;
%SRW 11/98,09/99&lt;br /&gt;
%Returns an empty structure in parfile not found.&lt;br /&gt;
%Reads data into a structure from a file with,&lt;br /&gt;
%  1) Field name lines begin with a #,##,###, etc.&lt;br /&gt;
%  3) Data lines must include ' ' for strings, and [],{} for arrays and &lt;br /&gt;
%     can go across lines without contiuation marks (...).&lt;br /&gt;
%  3) #@ means put into all elements of that field&lt;br /&gt;
%  4) % are comments&lt;br /&gt;
%  5) If there are no (')'s or ([)'s in an entry, i.e. a block of text,&lt;br /&gt;
%  then a padded string array of lines is returned for that field.&lt;br /&gt;
&lt;br /&gt;
function [mystruc,struc_list]=read_struc3(filename)&lt;br /&gt;
  if (isempty(find(filename=='/')) &amp;amp;...&lt;br /&gt;
      isempty(find(filename=='\'))),&lt;br /&gt;
    file=fullfile(pwd,filename);&lt;br /&gt;
  else&lt;br /&gt;
    file=filename;&lt;br /&gt;
  end&lt;br /&gt;
  struc_name='mystruc';&lt;br /&gt;
  fid=fopen(file,'r+');&lt;br /&gt;
  %keyboard&lt;br /&gt;
  str1=[];&lt;br /&gt;
  struc_list=[];&lt;br /&gt;
  while fid~=-1&lt;br /&gt;
    oline=fgetl(fid);&lt;br /&gt;
    % allow for comments following %'s&lt;br /&gt;
    eline=findstr(oline,'%');&lt;br /&gt;
    if ~isempty(eline),&lt;br /&gt;
      oline=oline(1:eline-1);&lt;br /&gt;
    end&lt;br /&gt;
    if isempty(oline),&lt;br /&gt;
      %do nothing, go to next line&lt;br /&gt;
    elseif oline(1)=='#' | oline==-1,&lt;br /&gt;
      if oline(1)=='#',&lt;br /&gt;
	struc_field=oline(2:size(parse(oline,1),2));&lt;br /&gt;
	struc_number=parse(oline,2);&lt;br /&gt;
	if ~isempty(struc_number),&lt;br /&gt;
	  if struc_number(1)=='@';&lt;br /&gt;
	    struc_number=0; %copy to all strucures in the array&lt;br /&gt;
	  end&lt;br /&gt;
	end&lt;br /&gt;
      end&lt;br /&gt;
      if ~isempty(str1), &lt;br /&gt;
          str1;&lt;br /&gt;
	%substitute for any macros, define in top level of structure&lt;br /&gt;
	while ~isempty(find(str1=='$')),&lt;br /&gt;
	  mac_ind=find(str1=='$');&lt;br /&gt;
	  mac_name=str1((mac_ind(1)+1):(mac_ind(2)-1));&lt;br /&gt;
	  mac_val=eval([struc_name '.' mac_name]);&lt;br /&gt;
	  mac_name=['$' mac_name '$'];&lt;br /&gt;
	  if ~ischar(mac_val),&lt;br /&gt;
	    mac_val=num2str(mac_val);&lt;br /&gt;
	  end&lt;br /&gt;
	  str1=strrep(str1,mac_name,mac_val);&lt;br /&gt;
	end % while&lt;br /&gt;
	while ~isempty(findstr('$',str)),&lt;br /&gt;
	  mac_ind=findstr('$',str);&lt;br /&gt;
	  mac_name=str((mac_ind(1)+1):(mac_ind(2)-1));&lt;br /&gt;
	  mac_val=eval([struc_name '.' mac_name]);&lt;br /&gt;
	  mac_name=['$' mac_name '$'];&lt;br /&gt;
	  if ~ischar(mac_val),&lt;br /&gt;
	    mac_val=num2str(mac_val);&lt;br /&gt;
	  end&lt;br /&gt;
	  str=strrep(str,mac_name,mac_val);&lt;br /&gt;
	end % while&lt;br /&gt;
	struc_list=strvcat(struc_list, ...&lt;br /&gt;
			   parse(str1(find(str1=='.')+1:find(str1=='=')),1));&lt;br /&gt;
	if ~isempty(findstr(str,'''')) | ~isempty(findstr(str,'[')) |...&lt;br /&gt;
	      ~isempty(findstr(str,'{')),&lt;br /&gt;
&lt;br /&gt;
	  eval([str1 str ';'])&lt;br /&gt;
	else&lt;br /&gt;
	  eval([str1 'char(cstr);'])&lt;br /&gt;
	end&lt;br /&gt;
	if oline == -1,&lt;br /&gt;
	  fclose(fid);&lt;br /&gt;
	  return&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
      end&lt;br /&gt;
      str1=[struc_name '.' struc_field ' = '];&lt;br /&gt;
      str=[];&lt;br /&gt;
      cstr={};&lt;br /&gt;
      %still need to add @ option to copy to all structures&lt;br /&gt;
% $$$       if struc_number&amp;gt;0,&lt;br /&gt;
% $$$ 	str=[struc_name '(' struc_number ')' '.' struc_field ' = '];&lt;br /&gt;
% $$$       else&lt;br /&gt;
% $$$ 	str=[struc_name '.' struc_field ' = '];&lt;br /&gt;
% $$$       end&lt;br /&gt;
    else&lt;br /&gt;
      str=[str oline];&lt;br /&gt;
      if ~isempty(oline),&lt;br /&gt;
	cstr=[cstr; {oline}];&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  eval([struc_name '= []' ';'])&lt;br /&gt;
  return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;[[read_struc]]&amp;lt;big&amp;gt;&lt;/div&gt;</summary>
		<author><name>128.111.101.185</name></author>
		
	</entry>
</feed>