#!/usr/bin/python -u
# -*- coding: utf-8 -*-


class NamespaceStack():


    def __init__(self):

        #        self.increaseDepth()


        self._depth = 1

        self._prefix_2_uri = {}
        self._uri_2_prefix = {}

        self._pairs = []

        pass



    def getDepth(self):

        return self._depth


    def incDepth(self):

        self._depth += 1


    def decDepth(self):

        self._depth -= 1





    def count(self):
        """Provider the current number of active namespaces."""

        return len(self._pairs)







    def push(self, prefix, uri):

        self._prefix_2_uri[prefix] = uri
        self._uri_2_prefix[uri] = prefix

        self._pairs.append((prefix, uri))

        #print "PUSH", prefix, uri




    def pop(self):

        self._pairs.pop()

        #print "POP"





    def getPrefix(self, index):

        if index < len(self._pairs):
            return self._pairs[index][0]

        else:
            return -1


    def findPrefix(self, uri):

        if uri in self._uri_2_prefix:
            return self._uri_2_prefix[uri]

        else:
            return -1


    def getUri(self, index):

        if index < len(self._pairs):
            return self._pairs[index][1]

        else:
            return -1


    def findUri(self, prefix):

        if prefix in self._prefix_2_uri:
            return self._prefix_2_uri[prefix]

        else:
            return -1