summaryrefslogtreecommitdiff
path: root/cuobjdump_to_ptxplus/stringList.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cuobjdump_to_ptxplus/stringList.cc')
-rw-r--r--cuobjdump_to_ptxplus/stringList.cc128
1 files changed, 128 insertions, 0 deletions
diff --git a/cuobjdump_to_ptxplus/stringList.cc b/cuobjdump_to_ptxplus/stringList.cc
new file mode 100644
index 0000000..8d1ae42
--- /dev/null
+++ b/cuobjdump_to_ptxplus/stringList.cc
@@ -0,0 +1,128 @@
+// Copyright (c) 2009-2011, Jimmy Kwa,
+// The University of British Columbia
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+// Redistributions in binary form must reproduce the above copyright notice, this
+// list of conditions and the following disclaimer in the documentation and/or
+// other materials provided with the distribution.
+// Neither the name of The University of British Columbia nor the names of its
+// contributors may be used to endorse or promote products derived from this
+// software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+#include "stringList.h"
+#include <stdio.h>
+#include <iostream>
+
+//Constructor
+stringList::stringList()
+{
+ //initilize everything to empty
+ m_size = 0;
+ m_listStart = NULL;
+ m_listEnd = NULL;
+}
+
+//retrieve list size
+int stringList::getSize()
+{
+ return m_size;
+}
+
+//retrieve pointer to list start
+stringListPiece* stringList::getListStart()
+{
+ return m_listStart;
+}
+
+//retrieve point to list end
+stringListPiece* stringList::getListEnd()
+{
+ return m_listEnd;
+}
+
+//add string to end of the list
+//initilize list starting point if this is the first entry
+//increment list size count
+int stringList::add(stringListPiece* newString)
+{
+
+ if(m_listStart==NULL)
+ m_listStart=newString;
+ else
+ m_listEnd->nextString = newString;
+
+ m_listEnd = newString;
+ m_listEnd->nextString = NULL;
+
+ return m_size++;
+}
+
+bool stringList::remove(int index)
+{
+ if(index >= m_size ) return false;
+
+ stringListPiece* m_remove;
+ stringListPiece* currentPiece;
+
+ if(m_size == 1) {
+ m_remove = m_listStart;
+ m_listStart = NULL;
+ m_listEnd = NULL;
+ } else {
+
+ if(index == 0) {
+ m_remove = m_listStart;
+ m_listStart = m_remove->nextString;
+ } else if(index == m_size - 1) {
+ m_remove = m_listEnd;
+ currentPiece = m_listStart;
+ for(int i=1; i<m_size-1; i++)
+ {
+ currentPiece = currentPiece->nextString;
+ }
+ currentPiece->nextString = NULL;
+ m_listEnd = currentPiece;
+ } else {
+ currentPiece = m_listStart;
+ for(int i=1; i<=index-1; i++)
+ {
+ currentPiece = currentPiece->nextString;
+ }
+ m_remove = currentPiece->nextString;
+ currentPiece->nextString = m_remove->nextString;
+ }
+ }
+
+ delete m_remove;
+ m_size -= 1;
+ return true;
+}
+
+//print out all the cuobjdump Instructions in the list
+void stringList::printStringList()
+{
+ stringListPiece* currentPiece = m_listStart;
+
+ for(int i=0; (i<m_size)&&(currentPiece!=NULL); i++)
+ {
+ std::cout << currentPiece->stringText << " ";
+ currentPiece = currentPiece->nextString;
+ }
+}