function [name_,name__] = dsGetNamespaces(spec)
% Purpose: retrieve namespaces for all objects in specification
% Outputs:
% name_: object names separated by single underscore
% name__: object names separated by double underscores
%
% See also: dsPropagateNamespaces
%
% Author: Jason Sherfey, PhD <jssherfey@gmail.com>
% Copyright (C) 2016 Jason Sherfey, Boston University, USA
if isfield(spec,'specification') % this is a model structure
spec=spec.specification; % extract the specification
end
name_={};
name__={};
% population namespaces to replace
for i=1:length(spec.populations)
name_{end+1}=[spec.populations(i).name '_'];
name__{end+1}=[spec.populations(i).name '_'];
for j=1:length(spec.populations(i).mechanisms)
name_{end+1}=[spec.populations(i).name '_' spec.populations(i).mechanisms(j).name '_'];
name__{end+1}=[spec.populations(i).name '__' spec.populations(i).mechanisms(j).name '_'];
end
end
% connection namespaces to replace
for i=1:length(spec.connections)
name_{end+1}=[spec.connections(i).target '_' spec.connections(i).source '_'];
name__{end+1}=[spec.connections(i).target '__' spec.connections(i).source '_'];
for j=1:length(spec.connections(i).mechanisms)
name_{end+1}=[spec.connections(i).target '_' spec.connections(i).source '_' spec.connections(i).mechanisms(j).name '_'];
name__{end+1}=[spec.connections(i).target '__' spec.connections(i).source '__' spec.connections(i).mechanisms(j).name '_'];
end
end