⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deref.m

📁 这是一个关于MATLAB的函数
💻 M
字号:
function nn = deref(pp,index)
%DEREF 
%  MM = DEREF  Constructs a Memory object that represents
%  the variable which is pointed to by this object.

%   Copyright 2002 The MathWorks, Inc.


error(nargchk(1,2,nargin));
if ~ishandle(pp)
    error('First Parameter must be a POINTER handle');
end
if nargin==1 
    if prod(pp.size)==1,    index = 1;
    else  error('Provide the index of the pointer element you want to dereference ');
    end
else
	if ~isnumeric(index)
        error('Second Parameter must be numeric ');
	end
end

% si - info structure from CC.LIST method
si = pp.referent;

% address
si.address = [read(pp,index) GetPage(pp)];

% If referent is VOID, 
si = GetSymbolInfoForVoidType(pp,si);

% If referent is STRUCTURE, add 'address' info
si = GetStructureAddress(pp,si);

% Create object
nn = createobj(pp.link,si);

%-------------------------------------
function si = GetStructureAddress(pp,si)

if ~strcmpi(si.uclass,'structure'), return; end;

member_list = fieldnames(si.members);
for i=1:length(member_list)
    member = si.members.(member_list{i});
    if ~pp.isrecursive,
        % add address property for each STRUCT member
        si.members.(member_list{i}).address = [si.address(1)+member.offset, si.address(2)];
    else
        % set to correct address property for each STRUCT member
        si.members.(member_list{i}).address = [si.address(1)+member.offset, si.address(2)];
    end
end

%------------------------------
function si = GetSymbolInfoForVoidType(pp,si)

if ~strcmpi(si.type,'void'), return; end;

si(1).size   = 1;
si(1).uclass = 'numeric';
if strcmp(pp.procsubfamily(1:2),'C6'),  si.type  = 'uint32';
elseif strcmp(pp.procsubfamily,'C54x'), si.type  = 'uint16';
end

% --------------------------------
function page = GetPage(pp)

if strcmp(pp.procsubfamily(1:2),'C6')
    page = 0; % page does not matter
elseif strcmp(pp.procsubfamily,'C54x')
    page = 1; % data page
end

% [EOF] deref.m
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -