aboutsummaryrefslogtreecommitdiffstats
path: root/longbow/src/python/site-packages/longbow/Language_C.py
diff options
context:
space:
mode:
Diffstat (limited to 'longbow/src/python/site-packages/longbow/Language_C.py')
-rwxr-xr-xlongbow/src/python/site-packages/longbow/Language_C.py204
1 files changed, 0 insertions, 204 deletions
diff --git a/longbow/src/python/site-packages/longbow/Language_C.py b/longbow/src/python/site-packages/longbow/Language_C.py
deleted file mode 100755
index 1d97a676..00000000
--- a/longbow/src/python/site-packages/longbow/Language_C.py
+++ /dev/null
@@ -1,204 +0,0 @@
-#! /usr/bin/env python
-# Copyright (c) 2017 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-#
-import os
-import glob
-
-import fnmatch
-import subprocess
-
-def findFiles(startDir, pattern):
- matches = []
- for root, dirnames, filenames in os.walk(startDir):
- for filename in fnmatch.filter(filenames, pattern):
- matches.append(os.path.join(root, filename))
-
- return matches
-
-def getLibPathForObject(libraryPath, filename):
- '''
- Returns a path to an object file suitable for nm
- '''
- result = ''
-
- command = ['/usr/bin/ar', '-t', libraryPath]
- output = subprocess.check_output(command)
- lines = output.splitlines()
-
- for line in lines:
- tokens = line.split('.')
- if tokens[0] == filename:
- result = libraryPath + '(' + line + ')'
- break
-
- return result
-
-class Module:
- '''
- Represent a C language module.
- A module consists of the file names of the C source, C header file, object file, and an executable file
- '''
- def __init__(self, srcPath, objectDirs=[]):
- self.path = self.initialzePath(srcPath)
- if not objectDirs:
- objectDirs = [self.path]
- split = srcPath.split("/")
- self.originalName = split[len(split) - 1]
- self.originalBaseName = os.path.basename(srcPath)
- tokens = self.originalBaseName.split('.')
- self.fileName = tokens[0].replace("/","")
-
- if self.fileName.startswith("test_"):
- self.fileName = self.fileName[5:]
-
- # Search for an appropriate object
- self.objectPath = "";
- for objectDir in objectDirs:
- if objectDir.endswith(".a"):
- self.objectPath = getLibPathForObject(objectDir, self.fileName)
- if self.objectPath:
- break
- else:
- objectSearchPath = os.path.join(objectDir, self.fileName) + "*.o*"
- ofiles = glob.glob(objectSearchPath);
- if ofiles:
- # if we've found some matches, assume we want the first.
- self.objectPath = ofiles[0];
- break
- return
-
- def isTestExecutableName(self):
- return self.getTestExecutableName() == self.originalBaseName
-
- def isTestSourceName(self):
- return self.getTestSourceName() == self.originalBaseName
-
- def isCSourceName(self):
- return self.getCSourceName() == self.originalBaseName
-
- def isCHeaderName(self):
- return self.getCHeaderName() == self.originalBaseName
-
- def getCSourceName(self):
- return self.fileName + ".c"
-
- def getCHeaderName(self):
- return self.fileName + ".h"
-
- def getPathToObjectFile(self):
- return self.objectPath;
-
- def getExecutableName(self):
- return self.fileName
-
- def getTestExecutableName(self):
- return "test_" + self.fileName
-
- def getTestSourceName(self):
- return self.getTestExecutableName() + ".c"
-
- def getNamespace(self):
- sourceFileName = self.getCSourceName()
- if (sourceFileName.find("_") >= 0):
- stripped = sourceFileName[0:sourceFileName.index("_")]
- return stripped
- else:
- return None
-
- def getModuleName(self):
- sourceFileName = self.getCSourceName()
- split = sourceFileName.split("/")
- sourceFileName = split[len(split) - 1]
- if (sourceFileName.find(".") >= 0):
- stripped = sourceFileName[0:sourceFileName.index(".")]
- return stripped
- else:
- return None
-
- def getModulePrefix(self):
- sourceFileName = self.getCSourceName()
- squashed = sourceFileName.replace("_", "")
- if (squashed.find(".") >= 0):
- return squashed[0:squashed.index(".")]
- else:
- return None
-
- def getTypeName(self):
- sourceFileName = self.getCSourceName()
- if (sourceFileName.find(".") >= 0 and sourceFileName.find("_") >= 0):
- stripped = sourceFileName[(sourceFileName.index("_") + 1):sourceFileName.index(".")]
- return stripped
- else:
- return None
-
- def getModulePath(self):
- return self.path
-
- def initialzePath(self, sourceFileName):
- parts = sourceFileName.split("/")
- parts = parts[0:len(parts) - 1]
- return '/'.join(map(str, parts))
-
-if __name__ == '__main__':
- cFile = Module("file.c.gcov")
- if cFile.getCSourceName() != "file.c":
- print "getCSourceName failed", cFile.getCSourceName()
-
- if cFile.getCHeaderName() != "file.h":
- print "getCHeaderName failed", cFile.getCHeaderName()
-
- if cFile.getTestSourceName() != "test_file.c":
- print "getTestSourceName failed", cFile.getTestSourceName()
-
- if cFile.getTestExecutableName() != "test_file":
- print "getTestExecutableName failed", cFile.getTestExecutableName()
-
- if cFile.getNamespace() != None:
- print "getNamespace failed", cFile.getNamespace()
-
- if cFile.getModuleName() != "file":
- print "getModuleName failed", cFile.getModuleName()
-
- if cFile.getModulePrefix() != "file":
- print "getModulePrefix failed", cFile.getModulePrefix()
-
- if cFile.getTypeName() != None:
- print "getTypeName failed", cFile.getTypeName()
-
- cFile = Module("parc_Object.c.gcov")
- if cFile.getCSourceName() != "parc_Object.c":
- print "getCSourceName failed", cFile.getCSourceName()
-
- if cFile.getCHeaderName() != "parc_Object.h":
- print "getCHeaderName failed", cFile.getCHeaderName()
-
- if cFile.getTestSourceName() != "test_parc_Object.c":
- print "getTestSourceName failed", cFile.getTestSourceName()
-
- if cFile.getTestExecutableName() != "test_parc_Object":
- print "getTestExecutableName failed", cFile.getTestExecutableName()
-
- if cFile.getNamespace() != "parc":
- print "getNamespace failed", cFile.getNamespace()
-
- if cFile.getModuleName() != "parc_Object":
- print "getModuleName failed", cFile.getModuleName()
-
- if cFile.getModulePrefix() != "parcObject":
- print "getModulePrefix failed", cFile.getModulePrefix()
-
- if cFile.getTypeName() != "Object":
- print "getTypeName failed", cFile.getTypeName()