/**************************************************************************** ** ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the QtCore module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** GNU Lesser General Public License Usage ** This file may be used under the terms of the GNU Lesser General Public ** License version 2.1 as published by the Free Software Foundation and ** appearing in the file LICENSE.LGPL included in the packaging of this ** file. Please review the following information to ensure the GNU Lesser ** General Public License version 2.1 requirements will be met: ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU General ** Public License version 3.0 as published by the Free Software Foundation ** and appearing in the file LICENSE.GPL included in the packaging of this ** file. Please review the following information to ensure the GNU General ** Public License version 3.0 requirements will be met: ** http://www.gnu.org/copyleft/gpl.html. ** ** Other Usage ** Alternatively, this file may be used in accordance with the terms and ** conditions contained in a signed written agreement between you and Nokia. ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "qlatincodec_p.h" #include "qlist.h" #ifndef QT_NO_TEXTCODEC QT_BEGIN_NAMESPACE QLatin1Codec::~QLatin1Codec() { } QString QLatin1Codec::convertToUnicode(const char *chars, int len, ConverterState *) const { if (chars == 0) return QString(); return QString::fromLatin1(chars, len); } QByteArray QLatin1Codec::convertFromUnicode(const QChar *ch, int len, ConverterState *state) const { const char replacement = (state && state->flags & ConvertInvalidToNull) ? 0 : '?'; QByteArray r(len, Qt::Uninitialized); char *d = r.data(); int invalid = 0; for (int i = 0; i < len; ++i) { if (ch[i] > 0xff) { d[i] = replacement; ++invalid; } else { d[i] = (char)ch[i].cell(); } } if (state) { state->invalidChars += invalid; } return r; } QByteArray QLatin1Codec::name() const { return "ISO-8859-1"; } QList QLatin1Codec::aliases() const { QList list; list << "latin1" << "CP819" << "IBM819" << "iso-ir-100" << "csISOLatin1"; return list; } int QLatin1Codec::mibEnum() const { return 4; } QLatin15Codec::~QLatin15Codec() { } QString QLatin15Codec::convertToUnicode(const char* chars, int len, ConverterState *) const { if (chars == 0) return QString(); QString str = QString::fromLatin1(chars, len); QChar *uc = str.data(); while(len--) { switch(uc->unicode()) { case 0xa4: *uc = 0x20ac; break; case 0xa6: *uc = 0x0160; break; case 0xa8: *uc = 0x0161; break; case 0xb4: *uc = 0x017d; break; case 0xb8: *uc = 0x017e; break; case 0xbc: *uc = 0x0152; break; case 0xbd: *uc = 0x0153; break; case 0xbe: *uc = 0x0178; break; default: break; } uc++; } return str; } QByteArray QLatin15Codec::convertFromUnicode(const QChar *in, int length, ConverterState *state) const { const char replacement = (state && state->flags & ConvertInvalidToNull) ? 0 : '?'; QByteArray r(length, Qt::Uninitialized); char *d = r.data(); int invalid = 0; for (int i = 0; i < length; ++i) { uchar c; ushort uc = in[i].unicode(); if (uc < 0x0100) { if (uc > 0xa3) { switch(uc) { case 0xa4: case 0xa6: case 0xa8: case 0xb4: case 0xb8: case 0xbc: case 0xbd: case 0xbe: c = replacement; ++invalid; break; default: c = (unsigned char) uc; break; } } else { c = (unsigned char) uc; } } else { if (uc == 0x20ac) c = 0xa4; else if ((uc & 0xff00) == 0x0100) { switch(uc) { case 0x0160: c = 0xa6; break; case 0x0161: c = 0xa8; break; case 0x017d: c = 0xb4; break; case 0x017e: c = 0xb8; break; case 0x0152: c = 0xbc; break; case 0x0153: c = 0xbd; break; case 0x0178: c = 0xbe; break; default: c = replacement; ++invalid; } } else { c = replacement; ++invalid; } } d[i] = (char)c; } if (state) { state->remainingChars = 0; state->invalidChars += invalid; } return r; } QByteArray QLatin15Codec::name() const { return "ISO-8859-15"; } QList QLatin15Codec::aliases() const { QList list; list << "latin9"; return list; } int QLatin15Codec::mibEnum() const { return 111; } QT_END_NAMESPACE #endif // QT_NO_TEXTCODEC l isLinkDependentProperty(cmTarget *tgt, const std::string &p, + const char *interfaceProperty, + const char *config) +{ + cmComputeLinkInformation *info = tgt->GetLinkInformation(config); + + const cmComputeLinkInformation::ItemVector &deps = info->GetItems(); + + for(cmComputeLinkInformation::ItemVector::const_iterator li = + deps.begin(); + li != deps.end(); ++li) + { + if (!li->Target) + { + continue; + } + const char *prop = li->Target->GetProperty(interfaceProperty); + if (!prop) + { + continue; + } + + std::vector props; + cmSystemTools::ExpandListArgument(prop, props); + + for(std::vector::iterator pi = props.begin(); + pi != props.end(); ++pi) + { + if (*pi == p) + { + return true; + } + } + } + + return false; +} + +//---------------------------------------------------------------------------- +bool cmTarget::IsLinkInterfaceDependentBoolProperty(const std::string &p, + const char *config) +{ + return isLinkDependentProperty(this, p, "COMPATIBLE_INTERFACE_BOOL", + config); +} + +//---------------------------------------------------------------------------- void cmTarget::GetLanguages(std::set& languages) const { for(std::vector::const_iterator diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 69a00c1..b3e17b2 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -495,6 +495,8 @@ public: void GetLinkDependentTargetsForProperty(const std::string &p, std::set &targets); bool IsNullImpliedByLinkLibraries(const std::str