Ejemplo n.º 1
0
void CObjectOStream::SetFormattingFlags(TSerial_Format_Flags flags)
{
    TSerial_Format_Flags accepted =
        fSerial_AsnText_NoIndentation | fSerial_AsnText_NoEol;
    if (flags & ~accepted) {
        ERR_POST_X_ONCE(13, Warning <<
            "CObjectOStream::SetFormattingFlags: ignoring unknown formatting flags");
    }
    SetUseIndentation((flags & fSerial_AsnText_NoIndentation) == 0);
    SetUseEol(        (flags & fSerial_AsnText_NoEol)         == 0);
}
Ejemplo n.º 2
0
void CObjectOStream::SetVerifyDataGlobal(ESerialVerifyData verify)
{
    ESerialVerifyData now = TSerialVerifyData::GetDefault();
    if (now != eSerialVerifyData_Never &&
        now != eSerialVerifyData_Always &&
        now != eSerialVerifyData_DefValueAlways) {
        if (verify == eSerialVerifyData_Default) {
            TSerialVerifyData::ResetDefault();
        } else {
            if (verify != now && 
                (verify == eSerialVerifyData_No || verify == eSerialVerifyData_Never)) {
                ERR_POST_X_ONCE(3, Warning <<
                    "CObjectOStream::SetVerifyDataGlobal: data verification disabled");
            }
            TSerialVerifyData::SetDefault(verify);
        }
    }
}
Ejemplo n.º 3
0
void CObjectOStreamXml::SetFormattingFlags(TSerial_Format_Flags flags)
{
    TSerial_Format_Flags accepted =
        fSerial_Xml_NoIndentation | fSerial_Xml_NoEol    |
        fSerial_Xml_NoXmlDecl     | fSerial_Xml_NoRefDTD |
        fSerial_Xml_RefSchema     | fSerial_Xml_NoSchemaLoc;
    if (flags & ~accepted) {
        ERR_POST_X_ONCE(12, Warning <<
            "CObjectOStreamXml::SetFormattingFlags: ignoring unknown formatting flags");
    }
    m_UseXmlDecl   = (flags & fSerial_Xml_NoXmlDecl)   == 0;
    m_UseDTDRef    = (flags & fSerial_Xml_NoRefDTD)    == 0;
    m_UseSchemaRef = (flags & fSerial_Xml_RefSchema)   != 0;
    m_UseSchemaLoc = (flags & fSerial_Xml_NoSchemaLoc) == 0;

    CObjectOStream::SetFormattingFlags(
        flags & (fSerial_Xml_NoIndentation | fSerial_Xml_NoEol));
}
Ejemplo n.º 4
0
void* CObjectMemoryPool::Allocate(size_t size)
{
    if ( size > m_MallocThreshold ) {
        return 0;
    }
    for ( int i = 0; i < 2; ++i ) {
        if ( !m_CurrentChunk ) {
            m_CurrentChunk = CObjectMemoryPoolChunk::CreateChunk(m_ChunkSize);
        }
        void* ptr = m_CurrentChunk->Allocate(size);
        if ( ptr ) {
            return ptr;
        }
        m_CurrentChunk.Reset();
    }
    ERR_POST_X_ONCE(14, "CObjectMemoryPool::Allocate("<<size<<"): "
                        "double fault in chunk allocator");
    return 0;
}
Ejemplo n.º 5
0
static string s_HTMLEncode(const string& str, const string& set, 
                           CHTMLHelper::THTMLEncodeFlags flags)
{
    CNcbiOstrstream out;

    SIZE_TYPE last = 0;
    SIZE_TYPE semicolon = 0;

    // Find first symbol to encode.
    SIZE_TYPE ptr = str.find_first_of(set, last);
    while ( ptr != NPOS ) {
        // Copy plain part of the input string
        if ( ptr != last ) {
            out.write(str.data() + last, ptr - last);
        }
        // Append encoded symbol
        switch (str[ptr]) {
        case '"':
            out << "&quot;";
            break;
        case '&':
            {{
            out.put('&');
            bool is_entity = false;
            // Check on HTML entity
            if ((flags & CHTMLHelper::fSkipEntities) &&
                (ptr+2 < str.length())  &&
                (semicolon != NPOS)) {
                if ( ptr >= semicolon )
                    semicolon = str.find(";", ptr+1);
                if ( semicolon != NPOS ) {
                    SIZE_TYPE len = semicolon - ptr;
                    SIZE_TYPE p = ptr + 1;
                    if (str[ptr+1] == '#') {
                        // Check on numeric character reference encoding
                        if (flags & CHTMLHelper::fSkipNumericEntities) {
                            p++;
                            if (len  ||  len <= 4) {
                                for (; p < semicolon; ++p) {
                                    if (!isdigit((unsigned char)(str[p])))
                                        break;
                                }
                            }
                        }
                    } else {
                        // Check on literal entity
                        if (flags & CHTMLHelper::fSkipLiteralEntities) {
                            if (len  &&  len <= 10) {
                                for (; p < semicolon; ++p) {
                                    if (!isalpha((unsigned char)(str[p])))
                                        break;
                                }
                            }
                        }
                    }
                    is_entity = (p == semicolon);
                }
            }
            if ( is_entity ) {
                if (flags & CHTMLHelper::fCheckPreencoded) {
                    ERR_POST_X_ONCE(2, Info << "string \"" <<  str <<
                                    "\" contains HTML encoded entities");
                }
            } else {
                out << "amp;";
            }
            }}
            break;

        case '<':
            out << "&lt;";
            break;
        case '>':
            out << "&gt;";
            break;
        }
        // Find next symbol to encode
        last = ptr + 1;
        ptr = str.find_first_of(set, last);
    }
    // Append last part of the source string
    if ( last != str.size() ) {
        out.write(str.data() + last, str.size() - last);
    }
    return CNcbiOstrstreamToString(out);
}