--------------------------------------------------------------------------------
--  Copyright (c) 2011-2012 Sierra Wireless.
--  All rights reserved. This program and the accompanying materials
--  are made available under the terms of the Eclipse Public License v1.0
--  which accompanies this distribution, and is available at
--  http://www.eclipse.org/legal/epl-v10.html
--
--  Contributors:
--       Simon BERNARD <sbernard@sierrawireless.com>
--           - initial API and implementation and initial documentation
--------------------------------------------------------------------------------
local M = {}

--------------------------------------------------------------------------------
-- API MODEL
--------------------------------------------------------------------------------

function M._file()
  local file = {
    -- FIELDS
    tag              = "file",
    name             = nil,    -- string
    shortdescription = "",    -- string
    description      = "",    -- string
    types            = {},     -- map from typename to type
    globalvars       = {},     -- map from varname to item
    returns          = {},     -- list of return

    -- FUNCTIONS
    addtype =  function (self,type)
      self.types[type.name] = type
      type.parent = self
    end,

    mergetype =  function (self,newtype,erase,erasesourcerangefield)
      local currenttype = self.types[newtype.name]
      if currenttype then
        -- merge recordtypedef
        if currenttype.tag =="recordtypedef" and newtype.tag == "recordtypedef" then
          -- merge fields
          for fieldname ,field in pairs( newtype.fields) do
            local currentfield = currenttype.fields[fieldname]
            if erase or not currentfield then
              currenttype:addfield(field)
            elseif erasesourcerangefield then
              if field.sourcerange.min and field.sourcerange.max then
                currentfield.sourcerange.min = field.sourcerange.min
                currentfield.sourcerange.max = field.sourcerange.max
              end
            end
          end

          -- merge descriptions and source ranges
          if erase then
            if newtype.description or newtype.description == ""  then currenttype.description = newtype.description end
            if newtype.shortdescription or newtype.shortdescription == ""  then currenttype.shortdescription = newtype.shortdescription end
            if newtype.sourcerange.min and newtype.sourcerange.max then
              currenttype.sourcerange.min = newtype.sourcerange.min
              currenttype.sourcerange.max = newtype.sourcerange.max
            end
          end
          -- merge functiontypedef
        elseif currenttype.tag == "functiontypedef" and newtype.tag == "functiontypedef" then
          -- merge params
          for i, param1 in ipairs(newtype.params) do
            local missing = true
            for j, param2 in ipairs(currenttype.params) do
              if param1.name == param2.name then
                missing = false
                break
              end
            end
            if missing then
              table.insert(currenttype.params,param1)
            end
          end

          -- merge descriptions and source ranges
          if erase then
            if newtype.description or newtype.description == "" then currenttype.description = newtype.description end
            if newtype.shortdescription or newtype.shortdescription == ""  then currenttype.shortdescription = newtype.shortdescription end
            if newtype.sourcerange.min and newtype.sourcerange.max then
              currenttype.sourcerange.min = newtype.sourcerange.min
              currenttype.sourcerange.max = newtype.sourcerange.max
            end
          end
        end
      else
        self:addtype(newtype)
      end
    end,

    addglobalvar =  function (self,item)
      self.globalvars[item.name] = item
      item.parent = self
    end,

    moduletyperef = function (self)
      if self and self.returns[1] and self.returns[1].types[1] then
        local typeref = self.returns[1].types[1]
        return typeref
      end
    end
  }
  return file
end

function M._recordtypedef(name)
  local recordtype = {
    -- FIELDS
    tag                  = "recordtypedef",
    name                 = name,    -- string (mandatory)
    shortdescription     = "",      -- string
    description          = "",      -- string
    fields               = {},      -- map from fieldname to field
    sourcerange          = {min=0,max=0},
    supertype            = nil,     -- supertype of the type def (inheritance), should be a recordtypedef ref
    defaultkeytyperef    = nil,     -- the default typeref of key
    defaultvaluetyperef  = nil,     -- the default typeref of value
    structurekind        = nil,     -- kind of structure of the type: could be nil, "map" or "list"
    structuredescription = nil,     -- description of the structure
    call                 = nil,     -- typeref to the function use as __call on the type.
    -- FUNCTIONS
    addfield = function (self,field)
      self.fields[field.name] = field
      field.parent = self
    end,

    getcalldef = function( self)
      if self.call and self.call.tag == 'internaltyperef' then
        if self.parent and self.parent.tag == 'file' then
          local file = self.parent
          return file.types[self.call.typename]
        end
      end
    end
  }
  return recordtype
end

function M._functiontypedef(name)
  return {
    tag              = "functiontypedef",
    name             = name,              -- string (mandatory)
    shortdescription = "",               -- string
    description      = "",               -- string
    params           = {},                -- list of parameter
    returns          = {}                 -- list of return
  }
end

function M._parameter(name)
  return {
    tag         = "parameter",
    name        = name, -- string (mandatory)
    description = "",   -- string
    type        = nil   -- typeref (external or internal or primitive typeref)
  }
end

function M._item(name)
  return {
    -- FIELDS
    tag              = "item",
    name             = name,   -- string (mandatory)
    shortdescription = "",     -- string
    description      = "",     -- string
    type             = nil,    -- typeref (external or internal or primitive typeref)
    occurrences      = {},     -- list of identifier (see internalmodel)
    sourcerange      = {min=0, max=0},

    -- This is A TRICK
    -- This value is ALWAYS nil, except for internal purposes (short references).
    external         = nil,

    -- FUNCTIONS
    addoccurence = function (self,occ)
      table.insert(self.occurrences,occ)
      occ.definition = self
    end,

    resolvetype = function (self,file)
      if self and self.type then
        if self.type.tag =="internaltyperef" then
          -- if file is not given try to retrieve it.
          if not file then
            if self.parent and self.parent.tag == 'recordtypedef' then
              file = self.parent.parent
            elseif self.parent.tag == 'file' then
              file = self.parent
            end
          end
          if file then return file.types[self.type.typename] end
        elseif self.type.tag =="inlinetyperef" then
          return self.type.def
        end
      end
    end
  }
end

function M._externaltypref(modulename, typename)
  return {
    tag        = "externaltyperef",
    modulename = modulename,        -- string
    typename   =  typename          -- string
  }
end

function M._internaltyperef(typename)
  return {
    tag      = "internaltyperef",
    typename =  typename          -- string
  }
end

function M._primitivetyperef(typename)
  return {
    tag      = "primitivetyperef",
    typename =  typename           -- string
  }
end

function M._moduletyperef(modulename,returnposition)
  return {
    tag            = "moduletyperef",
    modulename     = modulename,      -- string
    returnposition = returnposition   -- number
  }
end

function M._exprtyperef(expression,returnposition)
  return {
    tag            = "exprtyperef",
    expression     =  expression,   -- expression (see internal model)
    returnposition = returnposition -- number
  }
end

function M._inlinetyperef(definition)
  return {
    tag            = "inlinetyperef",
    def            =  definition,   -- expression (see internal model)

  }
end

function M._return(description)
  return {
    tag         = "return",
    description =  description or "", -- string
    types       = {}                  -- list of typref (external or internal or primitive typeref)
  }
end
return M
