mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 10:49:34 +02:00
GT-3434 - Refactored Namespace.NAMESPACE_DELIMITER to be shorter;
deprecated the old name
This commit is contained in:
parent
7ad8505dcf
commit
d96ee82856
25 changed files with 58 additions and 45 deletions
|
@ -31,7 +31,7 @@ import ghidra.util.exception.InvalidInputException;
|
||||||
* <a id="examples"></a>
|
* <a id="examples"></a>
|
||||||
* Example strings:
|
* Example strings:
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>global{@link Namespace#NAMESPACE_DELIMITER ::}child1{@link Namespace#NAMESPACE_DELIMITER ::}child2
|
* <li>global{@link Namespace#DELIMITER ::}child1{@link Namespace#DELIMITER ::}child2
|
||||||
* <li>child1
|
* <li>child1
|
||||||
* </ul>
|
* </ul>
|
||||||
* <p>
|
* <p>
|
||||||
|
|
|
@ -394,7 +394,7 @@ public class GoToHelper {
|
||||||
StringBuilder buf = new StringBuilder();
|
StringBuilder buf = new StringBuilder();
|
||||||
while (!nameStack.isEmpty()) {
|
while (!nameStack.isEmpty()) {
|
||||||
buf.append(nameStack.pop());
|
buf.append(nameStack.pop());
|
||||||
buf.append(Namespace.NAMESPACE_DELIMITER);
|
buf.append(Namespace.DELIMITER);
|
||||||
}
|
}
|
||||||
buf.append(externalLoc.getLabel());
|
buf.append(externalLoc.getLabel());
|
||||||
return buf.toString();
|
return buf.toString();
|
||||||
|
|
|
@ -192,7 +192,7 @@ public class NamespacePath implements Comparable<NamespacePath> {
|
||||||
public String asNamespaceString() {
|
public String asNamespaceString() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
doInOrderTraversal(
|
doInOrderTraversal(
|
||||||
nsp -> sb.append(sb.length() != 0 ? Namespace.NAMESPACE_DELIMITER : "").append(
|
nsp -> sb.append(sb.length() != 0 ? Namespace.DELIMITER : "").append(
|
||||||
nsp.isRoot() ? "ROOT" : nsp.name));
|
nsp.isRoot() ? "ROOT" : nsp.name));
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
@ -207,7 +207,7 @@ public class NamespacePath implements Comparable<NamespacePath> {
|
||||||
|
|
||||||
doInOrderTraversal(nsp -> {
|
doInOrderTraversal(nsp -> {
|
||||||
if (!nsp.isRoot()) {
|
if (!nsp.isRoot()) {
|
||||||
sb.append(sb.length() != 0 ? Namespace.NAMESPACE_DELIMITER : "").append(nsp.name);
|
sb.append(sb.length() != 0 ? Namespace.DELIMITER : "").append(nsp.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -219,7 +219,7 @@ public class NamespacePath implements Comparable<NamespacePath> {
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
doInOrderTraversal(
|
doInOrderTraversal(
|
||||||
nsp -> sb.append(sb.length() != 0 ? Namespace.NAMESPACE_DELIMITER : "").append(
|
nsp -> sb.append(sb.length() != 0 ? Namespace.DELIMITER : "").append(
|
||||||
nsp.isRoot() ? "ROOT" : nsp.name).append(
|
nsp.isRoot() ? "ROOT" : nsp.name).append(
|
||||||
"(" + (nsp.getType() != null ? nsp.getType() : "unknown type") + ")"));
|
"(" + (nsp.getType() != null ? nsp.getType() : "unknown type") + ")"));
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
|
|
|
@ -39,7 +39,7 @@ public abstract class DemangledObject {
|
||||||
protected static final String SPACE = " ";
|
protected static final String SPACE = " ";
|
||||||
protected static final Pattern SPACE_PATTERN = Pattern.compile(SPACE);
|
protected static final Pattern SPACE_PATTERN = Pattern.compile(SPACE);
|
||||||
|
|
||||||
protected static final String NAMESPACE_SEPARATOR = Namespace.NAMESPACE_DELIMITER;
|
protected static final String NAMESPACE_SEPARATOR = Namespace.DELIMITER;
|
||||||
protected static final String EMPTY_STRING = "";
|
protected static final String EMPTY_STRING = "";
|
||||||
|
|
||||||
protected String originalMangled;
|
protected String originalMangled;
|
||||||
|
|
|
@ -193,7 +193,7 @@ public class DemangledType {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer.append(Namespace.NAMESPACE_DELIMITER);
|
buffer.append(Namespace.DELIMITER);
|
||||||
return buffer.toString();
|
return buffer.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1057,7 +1057,7 @@ public class ProgramBuilder {
|
||||||
ExternalManager extMgr = program.getExternalManager();
|
ExternalManager extMgr = program.getExternalManager();
|
||||||
Namespace namespace = extMgr.addExternalLibraryName(libraryName, sourceType);
|
Namespace namespace = extMgr.addExternalLibraryName(libraryName, sourceType);
|
||||||
|
|
||||||
if (externalLabel != null && externalLabel.indexOf(Namespace.NAMESPACE_DELIMITER) > 0) {
|
if (externalLabel != null && externalLabel.indexOf(Namespace.DELIMITER) > 0) {
|
||||||
// External manager API does not yet support creation of namespaces within
|
// External manager API does not yet support creation of namespaces within
|
||||||
// library so we handle that here
|
// library so we handle that here
|
||||||
SymbolPath symPath = new SymbolPath(externalLabel);
|
SymbolPath symPath = new SymbolPath(externalLabel);
|
||||||
|
|
|
@ -1293,8 +1293,8 @@ public class CodeUnitFormat {
|
||||||
namespaceName = parentNamespace.getName(true);
|
namespaceName = parentNamespace.getName(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (namespaceName.length() != 0 && !namespaceName.endsWith(Namespace.NAMESPACE_DELIMITER)) {
|
if (namespaceName.length() != 0 && !namespaceName.endsWith(Namespace.DELIMITER)) {
|
||||||
namespaceName += Namespace.NAMESPACE_DELIMITER;
|
namespaceName += Namespace.DELIMITER;
|
||||||
}
|
}
|
||||||
return namespaceName + name;
|
return namespaceName + name;
|
||||||
}
|
}
|
||||||
|
|
|
@ -615,7 +615,7 @@ public class AddEditDialoglTest extends AbstractGhidraHeadedIntegrationTest {
|
||||||
Address inBodyAddress = entry.getAddress().add(1);
|
Address inBodyAddress = entry.getAddress().add(1);
|
||||||
addLabel(inBodyAddress);
|
addLabel(inBodyAddress);
|
||||||
String newName = "label_1";
|
String newName = "label_1";
|
||||||
setText("entry" + Namespace.NAMESPACE_DELIMITER + newName);
|
setText("entry" + Namespace.DELIMITER + newName);
|
||||||
pressOk();
|
pressOk();
|
||||||
assertFalse("Encountered a problem adding a label to the Global namespace",
|
assertFalse("Encountered a problem adding a label to the Global namespace",
|
||||||
dialog.isVisible());
|
dialog.isVisible());
|
||||||
|
@ -639,7 +639,7 @@ public class AddEditDialoglTest extends AbstractGhidraHeadedIntegrationTest {
|
||||||
Address inBodyAddress = entry.getAddress().add(1);
|
Address inBodyAddress = entry.getAddress().add(1);
|
||||||
addLabel(inBodyAddress);
|
addLabel(inBodyAddress);
|
||||||
String newName = "label_1";
|
String newName = "label_1";
|
||||||
setText(namespaceName + Namespace.NAMESPACE_DELIMITER + newName);
|
setText(namespaceName + Namespace.DELIMITER + newName);
|
||||||
pressOk();
|
pressOk();
|
||||||
assertFalse("Encountered a problem adding a label to the Global namespace",
|
assertFalse("Encountered a problem adding a label to the Global namespace",
|
||||||
dialog.isVisible());
|
dialog.isVisible());
|
||||||
|
@ -659,7 +659,7 @@ public class AddEditDialoglTest extends AbstractGhidraHeadedIntegrationTest {
|
||||||
Address inBodyAddress = entry.getAddress().add(1);
|
Address inBodyAddress = entry.getAddress().add(1);
|
||||||
addLabel(inBodyAddress);
|
addLabel(inBodyAddress);
|
||||||
String newName = "label_1";
|
String newName = "label_1";
|
||||||
setText(namespaceName + Namespace.NAMESPACE_DELIMITER + newName);
|
setText(namespaceName + Namespace.DELIMITER + newName);
|
||||||
pressOk();
|
pressOk();
|
||||||
assertFalse("Encountered a problem adding a label to the Global namespace",
|
assertFalse("Encountered a problem adding a label to the Global namespace",
|
||||||
dialog.isVisible());
|
dialog.isVisible());
|
||||||
|
@ -680,7 +680,7 @@ public class AddEditDialoglTest extends AbstractGhidraHeadedIntegrationTest {
|
||||||
Address inBodyAddress = otherEntryAddress.add(1);
|
Address inBodyAddress = otherEntryAddress.add(1);
|
||||||
addLabel(inBodyAddress);
|
addLabel(inBodyAddress);
|
||||||
String newName = "label_1";
|
String newName = "label_1";
|
||||||
setText("entry" + Namespace.NAMESPACE_DELIMITER + newName);
|
setText("entry" + Namespace.DELIMITER + newName);
|
||||||
pressOk();
|
pressOk();
|
||||||
assertFalse("Encountered a problem adding a label to the Global namespace",
|
assertFalse("Encountered a problem adding a label to the Global namespace",
|
||||||
dialog.isVisible());
|
dialog.isVisible());
|
||||||
|
@ -707,7 +707,7 @@ public class AddEditDialoglTest extends AbstractGhidraHeadedIntegrationTest {
|
||||||
|
|
||||||
editLabel(function);
|
editLabel(function);
|
||||||
String nsName = functionName;
|
String nsName = functionName;
|
||||||
setText(nsName + Namespace.NAMESPACE_DELIMITER + functionName);
|
setText(nsName + Namespace.DELIMITER + functionName);
|
||||||
pressOk();
|
pressOk();
|
||||||
assertFalse("Rename unsuccesful", dialog.isShowing());
|
assertFalse("Rename unsuccesful", dialog.isShowing());
|
||||||
|
|
||||||
|
|
|
@ -651,7 +651,7 @@ public class SymbolTreePlugin1Test extends AbstractGhidraHeadedIntegrationTest {
|
||||||
String newNamespace = "bob";
|
String newNamespace = "bob";
|
||||||
String prefix = "MY";
|
String prefix = "MY";
|
||||||
String newNameWithoutNamespace = prefix + s.getName();
|
String newNameWithoutNamespace = prefix + s.getName();
|
||||||
String newName = newNamespace + Namespace.NAMESPACE_DELIMITER + newNameWithoutNamespace;
|
String newName = newNamespace + Namespace.DELIMITER + newNameWithoutNamespace;
|
||||||
util.rename(advapi32Node, newName);
|
util.rename(advapi32Node, newName);
|
||||||
util.waitForTree();
|
util.waitForTree();
|
||||||
assertEquals(newNameWithoutNamespace, s.getName());
|
assertEquals(newNameWithoutNamespace, s.getName());
|
||||||
|
@ -681,7 +681,7 @@ public class SymbolTreePlugin1Test extends AbstractGhidraHeadedIntegrationTest {
|
||||||
GTreeNode nsNode = newNsNode;
|
GTreeNode nsNode = newNsNode;
|
||||||
String newNamespace = "OuterNamespace";
|
String newNamespace = "OuterNamespace";
|
||||||
String newName = "MyNamespace";
|
String newName = "MyNamespace";
|
||||||
String newFullName = newNamespace + Namespace.NAMESPACE_DELIMITER + newName;
|
String newFullName = newNamespace + Namespace.DELIMITER + newName;
|
||||||
setEditorText(path, nsNode, newFullName);
|
setEditorText(path, nsNode, newFullName);
|
||||||
|
|
||||||
namespacesNode = rootNode.getChild("Namespaces");
|
namespacesNode = rootNode.getChild("Namespaces");
|
||||||
|
|
|
@ -308,7 +308,7 @@ public class CreateNamespacesCmdTest extends AbstractGenericTest {
|
||||||
for (int i = 0; i < namespaceNames.length; i++) {
|
for (int i = 0; i < namespaceNames.length; i++) {
|
||||||
buffer.append(namespaceNames[i]);
|
buffer.append(namespaceNames[i]);
|
||||||
if (i + 1 < namespaceNames.length) {
|
if (i + 1 < namespaceNames.length) {
|
||||||
buffer.append(Namespace.NAMESPACE_DELIMITER);
|
buffer.append(Namespace.DELIMITER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ public class CreateRtti1BackgroundCmd extends AbstractCreateDataBackgroundCmd<Rt
|
||||||
|
|
||||||
// Plate Comment
|
// Plate Comment
|
||||||
EHDataTypeUtilities.createPlateCommentIfNeeded(program,
|
EHDataTypeUtilities.createPlateCommentIfNeeded(program,
|
||||||
RttiUtil.getDescriptorTypeNamespace(rtti0Model) + Namespace.NAMESPACE_DELIMITER,
|
RttiUtil.getDescriptorTypeNamespace(rtti0Model) + Namespace.DELIMITER,
|
||||||
RTTI_1_NAME, suffix, address, applyOptions);
|
RTTI_1_NAME, suffix, address, applyOptions);
|
||||||
|
|
||||||
monitor.checkCanceled();
|
monitor.checkCanceled();
|
||||||
|
|
|
@ -117,7 +117,7 @@ public class CreateRtti2BackgroundCmd extends AbstractCreateDataBackgroundCmd<Rt
|
||||||
|
|
||||||
// Plate Comment
|
// Plate Comment
|
||||||
EHDataTypeUtilities.createPlateCommentIfNeeded(program,
|
EHDataTypeUtilities.createPlateCommentIfNeeded(program,
|
||||||
RttiUtil.getDescriptorTypeNamespace(rtti0Model) + Namespace.NAMESPACE_DELIMITER,
|
RttiUtil.getDescriptorTypeNamespace(rtti0Model) + Namespace.DELIMITER,
|
||||||
RTTI_2_NAME, null, address, applyOptions);
|
RTTI_2_NAME, null, address, applyOptions);
|
||||||
|
|
||||||
monitor.checkCanceled();
|
monitor.checkCanceled();
|
||||||
|
|
|
@ -104,7 +104,7 @@ public class CreateRtti3BackgroundCmd extends AbstractCreateDataBackgroundCmd<Rt
|
||||||
|
|
||||||
// Plate Comment
|
// Plate Comment
|
||||||
EHDataTypeUtilities.createPlateCommentIfNeeded(program,
|
EHDataTypeUtilities.createPlateCommentIfNeeded(program,
|
||||||
RttiUtil.getDescriptorTypeNamespace(rtti0Model) + Namespace.NAMESPACE_DELIMITER,
|
RttiUtil.getDescriptorTypeNamespace(rtti0Model) + Namespace.DELIMITER,
|
||||||
RTTI_3_NAME, null, address, applyOptions);
|
RTTI_3_NAME, null, address, applyOptions);
|
||||||
|
|
||||||
monitor.checkCanceled();
|
monitor.checkCanceled();
|
||||||
|
|
|
@ -179,7 +179,7 @@ public class CreateRtti4BackgroundCmd extends AbstractCreateDataBackgroundCmd<Rt
|
||||||
|
|
||||||
// Plate Comment
|
// Plate Comment
|
||||||
EHDataTypeUtilities.createPlateCommentIfNeeded(program, RttiUtil.CONST_PREFIX +
|
EHDataTypeUtilities.createPlateCommentIfNeeded(program, RttiUtil.CONST_PREFIX +
|
||||||
RttiUtil.getDescriptorTypeNamespace(rtti0Model) + Namespace.NAMESPACE_DELIMITER,
|
RttiUtil.getDescriptorTypeNamespace(rtti0Model) + Namespace.DELIMITER,
|
||||||
RTTI_4_NAME, null, address, applyOptions);
|
RTTI_4_NAME, null, address, applyOptions);
|
||||||
|
|
||||||
monitor.checkCanceled();
|
monitor.checkCanceled();
|
||||||
|
|
|
@ -118,7 +118,7 @@ public class CreateVfTableBackgroundCmd extends AbstractCreateDataBackgroundCmd<
|
||||||
monitor.checkCanceled();
|
monitor.checkCanceled();
|
||||||
String demangledTypeDescriptor = rtti0Model.getDemangledTypeDescriptor();
|
String demangledTypeDescriptor = rtti0Model.getDemangledTypeDescriptor();
|
||||||
String prefixString = ((demangledTypeDescriptor != null)
|
String prefixString = ((demangledTypeDescriptor != null)
|
||||||
? (demangledTypeDescriptor + Namespace.NAMESPACE_DELIMITER)
|
? (demangledTypeDescriptor + Namespace.DELIMITER)
|
||||||
: "");
|
: "");
|
||||||
data.setComment(CodeUnit.EOL_COMMENT,
|
data.setComment(CodeUnit.EOL_COMMENT,
|
||||||
"terminator for " + prefixString + VF_TABLE_LABEL);
|
"terminator for " + prefixString + VF_TABLE_LABEL);
|
||||||
|
@ -174,7 +174,7 @@ public class CreateVfTableBackgroundCmd extends AbstractCreateDataBackgroundCmd<
|
||||||
// Plate Comment
|
// Plate Comment
|
||||||
EHDataTypeUtilities.createPlateCommentIfNeeded(program,
|
EHDataTypeUtilities.createPlateCommentIfNeeded(program,
|
||||||
RttiUtil.CONST_PREFIX + RttiUtil.getDescriptorTypeNamespace(rtti0Model) +
|
RttiUtil.CONST_PREFIX + RttiUtil.getDescriptorTypeNamespace(rtti0Model) +
|
||||||
Namespace.NAMESPACE_DELIMITER,
|
Namespace.DELIMITER,
|
||||||
VF_TABLE_LABEL, null, vfTableAddress, applyOptions);
|
VF_TABLE_LABEL, null, vfTableAddress, applyOptions);
|
||||||
|
|
||||||
monitor.checkCanceled();
|
monitor.checkCanceled();
|
||||||
|
@ -215,7 +215,7 @@ public class CreateVfTableBackgroundCmd extends AbstractCreateDataBackgroundCmd<
|
||||||
// Plate Comment
|
// Plate Comment
|
||||||
EHDataTypeUtilities.createPlateCommentIfNeeded(
|
EHDataTypeUtilities.createPlateCommentIfNeeded(
|
||||||
program, META_LABEL + " pointer for " +
|
program, META_LABEL + " pointer for " +
|
||||||
RttiUtil.getDescriptorTypeNamespace(rtti0Model) + Namespace.NAMESPACE_DELIMITER,
|
RttiUtil.getDescriptorTypeNamespace(rtti0Model) + Namespace.DELIMITER,
|
||||||
VF_TABLE_LABEL, null, metaAddress, applyOptions);
|
VF_TABLE_LABEL, null, metaAddress, applyOptions);
|
||||||
|
|
||||||
monitor.checkCanceled();
|
monitor.checkCanceled();
|
||||||
|
|
|
@ -101,7 +101,7 @@ class ApplySymbols {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Place compiler generated symbols (e.g., $LN9) within containing function when possible
|
// Place compiler generated symbols (e.g., $LN9) within containing function when possible
|
||||||
if (name.startsWith("$") && !name.contains(Namespace.NAMESPACE_DELIMITER)) {
|
if (name.startsWith("$") && !name.contains(Namespace.DELIMITER)) {
|
||||||
Function f = functionManager.getFunctionContaining(address);
|
Function f = functionManager.getFunctionContaining(address);
|
||||||
if (f != null && !f.getName().equals(name)) {
|
if (f != null && !f.getName().equals(name)) {
|
||||||
name = NamespaceUtils.getNamespaceQualifiedName(f, name, true);
|
name = NamespaceUtils.getNamespaceQualifiedName(f, name, true);
|
||||||
|
|
|
@ -479,7 +479,7 @@ public class PdbParser {
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
log.appendMsg("Unable to create class namespace: " + parentNamespace.getName(true) +
|
log.appendMsg("Unable to create class namespace: " + parentNamespace.getName(true) +
|
||||||
Namespace.NAMESPACE_DELIMITER + name);
|
Namespace.DELIMITER + name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -983,11 +983,11 @@ public class PdbParser {
|
||||||
* @return name without namespace prefix
|
* @return name without namespace prefix
|
||||||
*/
|
*/
|
||||||
String stripNamespace(String name) {
|
String stripNamespace(String name) {
|
||||||
int index = name.lastIndexOf(Namespace.NAMESPACE_DELIMITER);
|
int index = name.lastIndexOf(Namespace.DELIMITER);
|
||||||
if (index <= 0) {
|
if (index <= 0) {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
return name.substring(index + Namespace.NAMESPACE_DELIMITER.length());
|
return name.substring(index + Namespace.DELIMITER.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -997,7 +997,7 @@ public class PdbParser {
|
||||||
* @return the category path
|
* @return the category path
|
||||||
*/
|
*/
|
||||||
CategoryPath getCategory(String namespaceQualifiedDataTypeName, boolean addPdbRoot) {
|
CategoryPath getCategory(String namespaceQualifiedDataTypeName, boolean addPdbRoot) {
|
||||||
String[] names = namespaceQualifiedDataTypeName.split(Namespace.NAMESPACE_DELIMITER);
|
String[] names = namespaceQualifiedDataTypeName.split(Namespace.DELIMITER);
|
||||||
CategoryPath category = addPdbRoot ? pdbCategory : CategoryPath.ROOT;
|
CategoryPath category = addPdbRoot ? pdbCategory : CategoryPath.ROOT;
|
||||||
if (names.length > 1) {
|
if (names.length > 1) {
|
||||||
String[] categoryNames = new String[names.length - 1];
|
String[] categoryNames = new String[names.length - 1];
|
||||||
|
|
|
@ -29,7 +29,7 @@ import ghidra.util.exception.*;
|
||||||
* <a id="examples"></a>
|
* <a id="examples"></a>
|
||||||
* Example string format:
|
* Example string format:
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>global{@link Namespace#NAMESPACE_DELIMITER ::}child1{@link Namespace#NAMESPACE_DELIMITER ::}child2
|
* <li>global{@link Namespace#DELIMITER ::}child1{@link Namespace#DELIMITER ::}child2
|
||||||
* <li>child1
|
* <li>child1
|
||||||
* </ul>
|
* </ul>
|
||||||
* <a id="assumptions"></a>
|
* <a id="assumptions"></a>
|
||||||
|
@ -69,7 +69,7 @@ public class NamespaceUtils {
|
||||||
String str = new String();
|
String str = new String();
|
||||||
while (namespace != null && !(namespace instanceof GlobalNamespace) &&
|
while (namespace != null && !(namespace instanceof GlobalNamespace) &&
|
||||||
!(namespace instanceof Library)) {
|
!(namespace instanceof Library)) {
|
||||||
str = namespace.getName() + Namespace.NAMESPACE_DELIMITER + str;
|
str = namespace.getName() + Namespace.DELIMITER + str;
|
||||||
namespace = namespace.getParentNamespace();
|
namespace = namespace.getParentNamespace();
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
|
@ -90,7 +90,7 @@ public class NamespaceUtils {
|
||||||
str = getNamespacePathWithoutLibrary(namespace);
|
str = getNamespacePathWithoutLibrary(namespace);
|
||||||
}
|
}
|
||||||
else if (namespace != null && !(namespace instanceof GlobalNamespace)) {
|
else if (namespace != null && !(namespace instanceof GlobalNamespace)) {
|
||||||
str = namespace.getName(true) + Namespace.NAMESPACE_DELIMITER;
|
str = namespace.getName(true) + Namespace.DELIMITER;
|
||||||
}
|
}
|
||||||
str += symbolName;
|
str += symbolName;
|
||||||
return str;
|
return str;
|
||||||
|
@ -107,7 +107,7 @@ public class NamespaceUtils {
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static List<String> splitNamespacePath(String path) {
|
public static List<String> splitNamespacePath(String path) {
|
||||||
return Arrays.asList(path.trim().split(Namespace.NAMESPACE_DELIMITER));
|
return Arrays.asList(path.trim().split(Namespace.DELIMITER));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -172,7 +172,7 @@ public class SymbolPath implements Comparable<SymbolPath> {
|
||||||
*/
|
*/
|
||||||
public String getPath() {
|
public String getPath() {
|
||||||
if (parentPath != null) {
|
if (parentPath != null) {
|
||||||
return parentPath.getPath() + Namespace.NAMESPACE_DELIMITER + symbolName;
|
return parentPath.getPath() + Namespace.DELIMITER + symbolName;
|
||||||
}
|
}
|
||||||
return symbolName;
|
return symbolName;
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,7 @@ public class SymbolPathParser {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
"Symbol list must contain at least one symbol name!");
|
"Symbol list must contain at least one symbol name!");
|
||||||
}
|
}
|
||||||
if (name.indexOf(Namespace.NAMESPACE_DELIMITER) == -1) {
|
if (name.indexOf(Namespace.DELIMITER) == -1) {
|
||||||
List<String> list = new ArrayList<>();
|
List<String> list = new ArrayList<>();
|
||||||
list.add(name);
|
list.add(name);
|
||||||
return list;
|
return list;
|
||||||
|
|
|
@ -383,7 +383,7 @@ public class DataTypeUtilities {
|
||||||
public static DataType findNamespaceQualifiedDataType(DataTypeManager dataTypeManager,
|
public static DataType findNamespaceQualifiedDataType(DataTypeManager dataTypeManager,
|
||||||
String dtNameWithNamespace, Class<? extends DataType> classConstraint) {
|
String dtNameWithNamespace, Class<? extends DataType> classConstraint) {
|
||||||
|
|
||||||
String[] splitName = dtNameWithNamespace.split(Namespace.NAMESPACE_DELIMITER);
|
String[] splitName = dtNameWithNamespace.split(Namespace.DELIMITER);
|
||||||
String dtName = splitName[splitName.length - 1];
|
String dtName = splitName[splitName.length - 1];
|
||||||
|
|
||||||
return findDataType(dataTypeManager, dtName, classConstraint,
|
return findDataType(dataTypeManager, dtName, classConstraint,
|
||||||
|
|
|
@ -193,7 +193,7 @@ public class ExternalLocationDB implements ExternalLocation {
|
||||||
if (label == null) {
|
if (label == null) {
|
||||||
setName(getLibrary(), null, SourceType.DEFAULT);
|
setName(getLibrary(), null, SourceType.DEFAULT);
|
||||||
}
|
}
|
||||||
else if (label.indexOf(Namespace.NAMESPACE_DELIMITER) < 0) {
|
else if (label.indexOf(Namespace.DELIMITER) < 0) {
|
||||||
// if label does not include namespace keep current namespace
|
// if label does not include namespace keep current namespace
|
||||||
setName(symbol.getParentNamespace(), label, source);
|
setName(symbol.getParentNamespace(), label, source);
|
||||||
}
|
}
|
||||||
|
|
|
@ -213,7 +213,7 @@ public abstract class SymbolDB extends DatabaseObject implements Symbol {
|
||||||
Namespace ns = getParentNamespace();
|
Namespace ns = getParentNamespace();
|
||||||
if (!(ns instanceof GlobalNamespace)) {
|
if (!(ns instanceof GlobalNamespace)) {
|
||||||
String nsPath = ns.getName(true);
|
String nsPath = ns.getName(true);
|
||||||
symName = nsPath + Namespace.NAMESPACE_DELIMITER + symName;
|
symName = nsPath + Namespace.DELIMITER + symName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return symName;
|
return symName;
|
||||||
|
|
|
@ -193,7 +193,7 @@ public class PointerDataType extends BuiltIn implements Pointer {
|
||||||
|
|
||||||
String symName = symbol.getName();
|
String symName = symbol.getName();
|
||||||
symName = SymbolUtilities.getCleanSymbolName(symName, ref.getToAddress());
|
symName = SymbolUtilities.getCleanSymbolName(symName, ref.getToAddress());
|
||||||
symName = symName.replace(Namespace.NAMESPACE_DELIMITER, "_");
|
symName = symName.replace(Namespace.DELIMITER, "_");
|
||||||
return POINTER_LABEL_PREFIX + "_" + symName;
|
return POINTER_LABEL_PREFIX + "_" + symName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,39 +21,51 @@ import ghidra.util.exception.DuplicateNameException;
|
||||||
import ghidra.util.exception.InvalidInputException;
|
import ghidra.util.exception.InvalidInputException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Namespace interface.
|
* The Namespace interface
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public interface Namespace {
|
public interface Namespace {
|
||||||
static final long GLOBAL_NAMESPACE_ID = 0;
|
static final long GLOBAL_NAMESPACE_ID = 0;
|
||||||
/**
|
/**
|
||||||
* The delimiter that is used to separate namespace nodes in a namespace
|
* The delimiter that is used to separate namespace nodes in a namespace
|
||||||
* string. For example, "Global::child1::symbolName"
|
* string. For example, "Global::child1::symbolName"
|
||||||
*/
|
*/
|
||||||
|
public static final String DELIMITER = "::";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replaced by {@link #DELIMITER}
|
||||||
|
* @deprecated use {@link #DELIMITER}
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public static final String NAMESPACE_DELIMITER = "::";
|
public static final String NAMESPACE_DELIMITER = "::";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the symbol for this namespace; Note: The global namespace will return null
|
* Get the symbol for this namespace; Note: The global namespace will return null
|
||||||
|
* @return the symbol for this namespace; Note: The global namespace will return null
|
||||||
*/
|
*/
|
||||||
public Symbol getSymbol();
|
public Symbol getSymbol();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Returns true if this namespace is external (i.e., associated with a Library)
|
||||||
* @return true if this namespace is external (i.e., associated with a Library)
|
* @return true if this namespace is external (i.e., associated with a Library)
|
||||||
*/
|
*/
|
||||||
public boolean isExternal();
|
public boolean isExternal();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the name of the symbol for this scope.
|
* Get the name of the symbol for this scope
|
||||||
|
* @return the name of the symbol for this scope
|
||||||
*/
|
*/
|
||||||
public String getName();
|
public String getName();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the fully qualified name.
|
* Returns the fully qualified name
|
||||||
|
* @param includeNamespacePath true to include the namespace in the returned name
|
||||||
|
* @return the fully qualified name
|
||||||
*/
|
*/
|
||||||
public String getName(boolean includeNamespacePath);
|
public String getName(boolean includeNamespacePath);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the namespace id;
|
* Return the namespace id
|
||||||
|
* @return the namespace id
|
||||||
*/
|
*/
|
||||||
public long getID();
|
public long getID();
|
||||||
|
|
||||||
|
@ -66,6 +78,7 @@ public interface Namespace {
|
||||||
/**
|
/**
|
||||||
* Get the address set for this namespace. Note: The body of a namespace (currently
|
* Get the address set for this namespace. Note: The body of a namespace (currently
|
||||||
* only used by the function namespace) is restricted it Integer.MAX_VALUE.
|
* only used by the function namespace) is restricted it Integer.MAX_VALUE.
|
||||||
|
* @return the address set for this namespace
|
||||||
*/
|
*/
|
||||||
public AddressSetView getBody();
|
public AddressSetView getBody();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue