LCOV - code coverage report
Current view: top level - tools/profiler/lul - LulCommon.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 23 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 8 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2             : /* vim: set ts=8 sts=2 et sw=2 tw=80: */
       3             : 
       4             : // Copyright (c) 2011, 2013 Google Inc.
       5             : // All rights reserved.
       6             : //
       7             : // Redistribution and use in source and binary forms, with or without
       8             : // modification, are permitted provided that the following conditions are
       9             : // met:
      10             : //
      11             : //     * Redistributions of source code must retain the above copyright
      12             : // notice, this list of conditions and the following disclaimer.
      13             : //     * Redistributions in binary form must reproduce the above
      14             : // copyright notice, this list of conditions and the following disclaimer
      15             : // in the documentation and/or other materials provided with the
      16             : // distribution.
      17             : //     * Neither the name of Google Inc. nor the names of its
      18             : // contributors may be used to endorse or promote products derived from
      19             : // this software without specific prior written permission.
      20             : //
      21             : // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      22             : // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      23             : // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
      24             : // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
      25             : // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
      26             : // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
      27             : // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
      28             : // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
      29             : // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
      30             : // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
      31             : // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      32             : 
      33             : // Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
      34             : 
      35             : 
      36             : // This file is derived from the following files in
      37             : // toolkit/crashreporter/google-breakpad:
      38             : //   src/common/module.cc
      39             : //   src/common/unique_string.cc
      40             : 
      41             : // There's no internal-only interface for LulCommon.  Hence include
      42             : // the external interface directly.
      43             : #include "LulCommonExt.h"
      44             : 
      45             : #include <stdlib.h>
      46             : #include <string.h>
      47             : 
      48             : #include <string>
      49             : #include <map>
      50             : 
      51             : 
      52             : namespace lul {
      53             : 
      54             : using std::string;
      55             : 
      56             : ////////////////////////////////////////////////////////////////
      57             : // Module
      58             : //
      59           0 : Module::Module(const string &name, const string &os,
      60           0 :                const string &architecture, const string &id) :
      61             :     name_(name),
      62             :     os_(os),
      63             :     architecture_(architecture),
      64           0 :     id_(id) { }
      65             : 
      66           0 : Module::~Module() {
      67           0 : }
      68             : 
      69             : 
      70             : ////////////////////////////////////////////////////////////////
      71             : // UniqueString
      72             : //
      73             : class UniqueString {
      74             :  public:
      75           0 :   explicit UniqueString(string str) { str_ = strdup(str.c_str()); }
      76           0 :   ~UniqueString() { free(reinterpret_cast<void*>(const_cast<char*>(str_))); }
      77             :   const char* str_;
      78             : };
      79             : 
      80           0 : const char* FromUniqueString(const UniqueString* ustr)
      81             : {
      82           0 :   return ustr->str_;
      83             : }
      84             : 
      85           0 : bool IsEmptyUniqueString(const UniqueString* ustr)
      86             : {
      87           0 :   return (ustr->str_)[0] == '\0';
      88             : }
      89             : 
      90             : 
      91             : ////////////////////////////////////////////////////////////////
      92             : // UniqueStringUniverse
      93             : //
      94           0 : UniqueStringUniverse::~UniqueStringUniverse()
      95             : {
      96           0 :   for (std::map<string, UniqueString*>::iterator it = map_.begin();
      97           0 :        it != map_.end(); it++) {
      98           0 :     delete it->second;
      99             :   }
     100           0 : }
     101             : 
     102           0 : const UniqueString* UniqueStringUniverse::ToUniqueString(string str)
     103             : {
     104           0 :   std::map<string, UniqueString*>::iterator it = map_.find(str);
     105           0 :   if (it == map_.end()) {
     106           0 :     UniqueString* ustr = new UniqueString(str);
     107           0 :     map_[str] = ustr;
     108           0 :     return ustr;
     109             :   } else {
     110           0 :     return it->second;
     111             :   }
     112             : }
     113             : 
     114             : }  // namespace lul

Generated by: LCOV version 1.13