Git Product home page Git Product logo

mailcore / mailcore2 Goto Github PK

View Code? Open in Web Editor NEW
2.6K 97.0 619.0 38.8 MB

MailCore 2 provide a simple and asynchronous API to work with e-mail protocols IMAP, POP and SMTP. The API has been redesigned from ground up.

License: Other

CMake 0.77% Shell 0.98% Makefile 0.14% Objective-C 6.51% Objective-C++ 7.78% Java 3.39% JavaScript 0.03% C++ 48.64% C 31.60% Batchfile 0.01% DIGITAL Command Language 0.02% Ruby 0.11% Swift 0.02%

mailcore2's Introduction

MailCore 2: Introduction

MailCore 2 provides a simple and asynchronous Objective-C API to work with the e-mail protocols IMAP, POP and SMTP. The API has been redesigned from the ground up. It features:

  • POP, IMAP and SMTP support
  • RFC822 parser and generator
  • Asynchronous APIs
  • HTML rendering of messages
  • iOS and Mac support

Build Status

Installation

Build for iOS/OSX

Read instructions for iOS/OSX.

Build for Android

Read instructions for Android.

Build for Windows

Read instructions for Windows.

Build for Linux

Read instructions for Linux.

Basic IMAP Usage

Using MailCore 2 is just a little more complex conceptually than the original MailCore. All fetch requests in MailCore 2 are made asynchronously through a queue. What does this mean? Well, let's take a look at a simple example:

  let session = MCOIMAPSession()
  
  session.hostname       = "imap.gmail.com"
  session.port           = 993
  session.username       = "[email protected]"
  session.password       = "123456"
  session.connectionType = .TLS
  
  let folder = "INBOX"
  let uids   = MCOIndexSet(range: MCORange(location: 1, length: UInt64.max))
  
  if let fetchOperation = session.fetchMessagesOperation(withFolder: folder, requestKind: .headers, uids: uids) {
    fetchOperation.start { error, fetchedMessages, vanishedMessages in
      // We've finished downloading the messages!
      
      // Let's check if there was an error
      if let error = error {
        print("Error downloading message headers: \(error.localizedDescription)")
      }
      
      // And, let's print out the messages:
      print("The post man delivereth: \(fetchedMessages.debugDescription)")
    }
  }

(You can also read an Objective-C Version)

In this sample, we retrieved and printed a list of email headers from an IMAP server. In order to execute the fetch, we request an asynchronous operation object from the MCOIMAPSession instance with our parameters (more on this later). This operation object is able to initiate a connection to Gmail when we call the start method. Now here's where things get a little tricky. We call the start function with a block, which is executed on the main thread when the fetch operation completes. The actual fetching from IMAP is done on a background thread, leaving your UI and other processing free to use the main thread.

Documentation

License

MailCore 2 is BSD-Licensed.

MailCore Supporters

mailcore2's People

Contributors

bbarenblat avatar bismark avatar codafi avatar ctmacuser avatar daveinaus avatar dglancy avatar dinhvh avatar disaykin avatar foxinushka avatar gabibbocode avatar gnachman avatar haithngn avatar honcheng avatar jwilling avatar lgarbo avatar libec avatar lucasderraugh avatar mronge avatar ocrickard avatar palleas avatar paulyoung avatar pfennema avatar pushkarsingh avatar robario avatar s2ler avatar serjepatoff avatar silenteh avatar tokyovigilante avatar yuklai avatar zhanleewo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mailcore2's Issues

iOS example

complete iOS example and add the view to show the content of the message.
Make sure that the following cases work: image attachments, file attachments, inline image attachments and inline HTML attachment.

MailCore crashes after multiple unsuccessful login attempts

Called checkAccountOperation with invalid credentials, got Authentication error, but after second/third unsuccessful attempt it crashed in MCIMAPSession.cc line 488, while debugging I found mImap not NULL.

void IMAPSession::setup()
{
MCAssert(mImap == NULL);

I am still trying to find a valid fix for it, let me know if anyone knows what's going on.

Build problem. (null): "std::string::find(std::string const&, unsigned long) const", referenced from:

hi guys, anyone know why I have these errors when compiling for distribution.

Ld "/Users/bobby/Library/Developer/Xcode/DerivedData/iOS_UI_Test-gkavqsfprvlhavcrklnoxjoojlsx/Build/Intermediates/ArchiveIntermediates/iOS UI Test/InstallationBuildProductsLocation/Applications/iOS UI Test.app/iOS UI Test" normal armv7
cd "/Users/bobby/Desktop/XLBouncerFinal/example/ios/iOS UI Test"
setenv IPHONEOS_DEPLOYMENT_TARGET 6.1
setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk "-L/Users/bobby/Library/Developer/Xcode/DerivedData/iOS_UI_Test-gkavqsfprvlhavcrklnoxjoojlsx/Build/Intermediates/ArchiveIntermediates/iOS UI Test/BuildProductsPath/Release-iphoneos" "-F/Users/bobby/Library/Developer/Xcode/DerivedData/iOS_UI_Test-gkavqsfprvlhavcrklnoxjoojlsx/Build/Intermediates/ArchiveIntermediates/iOS UI Test/BuildProductsPath/Release-iphoneos" -filelist "/Users/bobby/Library/Developer/Xcode/DerivedData/iOS_UI_Test-gkavqsfprvlhavcrklnoxjoojlsx/Build/Intermediates/ArchiveIntermediates/iOS UI Test/IntermediateBuildFilesPath/iOS UI Test.build/Release-iphoneos/iOS UI Test.build/Objects-normal/armv7/iOS UI Test.LinkFileList" -dead_strip -lctemplate-ios -letpan-ios -licudata -licui18n -licuuc -lxml2 -lsasl2 -liconv -all_load -ltidy -lstdc++ -stdlib=libc++ -fobjc-arc -fobjc-link-runtime -miphoneos-version-min=6.1 "/Users/bobby/Library/Developer/Xcode/DerivedData/iOS_UI_Test-gkavqsfprvlhavcrklnoxjoojlsx/Build/Intermediates/ArchiveIntermediates/iOS UI Test/BuildProductsPath/Release-iphoneos/libMailCore-ios.a" -framework ImageIO -framework Security -framework UIKit -framework Foundation -framework CoreGraphics -framework CFNetwork -o "/Users/bobby/Library/Developer/Xcode/DerivedData/iOS_UI_Test-gkavqsfprvlhavcrklnoxjoojlsx/Build/Intermediates/ArchiveIntermediates/iOS UI Test/InstallationBuildProductsLocation/Applications/iOS UI Test.app/iOS UI Test"

Undefined symbols for architecture armv7:
"std::string::find(std::string const&, unsigned long) const", referenced from:
ctemplate::ContainsFullWord(std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template_pathops.o)
"std::string::at(unsigned long) const", referenced from:
ctemplate::ContainsFullWord(std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template_pathops.o)
"std::string::operator[](unsigned long) const", referenced from:
ctemplate::IsAbspath(std::string const&) in libctemplate-ios.a(libctemplate_la-template_pathops.o)
ctemplate::IsDirectory(std::string const&) in libctemplate-ios.a(libctemplate_la-template_pathops.o)
"std::Rb_tree_increment(std::Rb_tree_node_base const)", referenced from:
std::Rb_tree_const_iterator<std::pair<unsigned long long const, ctemplate::TemplateString> >::operator++() in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
std::Rb_tree_const_iterator<std::pair<std::string const, std::vector<ctemplate::TemplateDictionary, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> > const
> >::operator++() in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
std::Rb_tree_const_iterator<std::pair<unsigned long long const, std::vector<ctemplate::TemplateDictionary, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> >
> >::operator++() in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
std::Rb_tree_const_iterator<std::pair<std::string const, std::string> >::operator++() in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
"std::string::operator+=(std::string const&)", referenced from:
ctemplate::TemplateToken::ToString() const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::StringEmitter::Emit(std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
"std::string::erase(unsigned long, unsigned long)", referenced from:
ctemplate::(anonymous namespace)::PragmaMarker::ParseAttributeValue(char const
, char const**, std::string_) in libctemplate-ios.a(libctemplate_la-template.o)
"std::string::Rep::M_destroy(std::allocator const&)", referenced from:
renderTemplate(mailcore::String
, mailcore::HashMap
) in libMailCore-ios.a(MCHTMLRenderer.o)
"std::ios_base::Init::Init()", referenced from:
cxx_global_var_init in libctemplate-ios.a(libctemplate_la-arena.o)
cxx_global_var_init1 in libctemplate-ios.a(libctemplate_la-template.o)
cxx_global_var_init1 in libctemplate-ios.a(libctemplate_la-template_cache.o)
cxx_global_var_init in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
cxx_global_var_init in libctemplate-ios.a(libctemplate_la-template_modifiers.o)
cxx_global_var_init1 in libctemplate-ios.a(libctemplate_la-template_namelist.o)
cxx_global_var_init1 in libctemplate-ios.a(libctemplate_la-template_string.o)
...
"std::basic_ostringstream<char, std::char_traits, std::allocator >::str() const", referenced from:
ctemplate::(anonymous namespace)::WriteOneHeaderEntry(std::string
, std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
"std::basic_string<char, std::char_traits, std::allocator >::basic_string(std::string const&)", referenced from:
ctemplate::(anonymous namespace)::PragmaMarker::ParseAttributeValue(char const*, char const**, std::string
) in libctemplate-ios.a(libctemplate_la-template.o)
std::basic_string<char, std::char_traits, std::allocator > std::operator+<char, std::char_traits, std::allocator >(std::basic_string<char, std::char_traits, std::allocator > const&, std::basic_string<char, std::char_traits, std::allocator > const&) in libctemplate-ios.a(libctemplate_la-template.o)
std::basic_string<char, std::char_traits, std::allocator > std::operator+<char, std::char_traits, std::allocator >(std::basic_string<char, std::char_traits, std::allocator > const&, char const
) in libctemplate-ios.a(libctemplate_la-template.o)
std::pair<std::string const, std::string const>::pair(std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
std::pair<std::string, std::string>::pair<std::string const, std::string const>(std::pair<std::string const, std::string const> const&) in libctemplate-ios.a(libctemplate_la-template.o)
std::pair<std::string, std::string>::pair(std::pair<std::string, std::string> const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::TemplateTemplateNode::TemplateTemplateNode(ctemplate::TemplateToken const&, ctemplate::Strip, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
...
"std::string::data() const", referenced from:
ctemplate::EmitModifiedString(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&, char const
, unsigned long, ctemplate::PerExpandData const
, ctemplate::ExpandEmitter
) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::TemplateTemplateNode::ExpandOnce(ctemplate::ExpandEmitter
, ctemplate::TemplateDictionaryInterface const&, char const
, ctemplate::PerExpandData
, ctemplate::TemplateCache const
) const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::Template::ExpandLocked(ctemplate::ExpandEmitter
, ctemplate::TemplateDictionaryInterface const
, ctemplate::PerExpandData
, ctemplate::TemplateCache const
) const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::PragmaMarker::PragmaMarker(char const
, char const
, std::string
) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::TemplateTemplateNode::TemplateTemplateNode(ctemplate::TemplateToken const&, ctemplate::Strip, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::StringHash::operator()(std::string const&) const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::TemplateString::TemplateString(std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
...
"std::string::empty() const", referenced from:
ctemplate::SectionTemplateNode::GetNextToken(ctemplate::Template
) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::Template::ReloadIfChangedLocked() in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::PragmaMarker::PragmaMarker(char const
, char const
, std::string
) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::TemplateTemplateNode::TemplateTemplateNode(ctemplate::TemplateToken const&, ctemplate::Strip, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::IndentedWriter::Write(std::string, std::string, std::string, std::string, std::string, std::string, std::string) in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
ctemplate::IndentedWriter::EndsWithNewline(std::string const&) in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
ctemplate::PathJoin(std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template_pathops.o)
...
"std::List_node_base::hook(std::List_node_base)", referenced from:
std::list<ctemplate::TemplateNode
, std::allocatorctemplate::TemplateNode* >::M_insert(std::List_iteratorctemplate::TemplateNode*, ctemplate::TemplateNode* const&) in libctemplate-ios.a(libctemplate_la-template.o)
"std::string::compare(char const
) const", referenced from:
bool std::operator==<char, std::char_traits, std::allocator >(std::basic_string<char, std::char_traits, std::allocator > const&, char const
) in libctemplate-ios.a(libctemplate_la-template.o)
bool std::operator!=<char, std::char_traits, std::allocator >(std::basic_string<char, std::char_traits, std::allocator > const&, char const_) in libctemplate-ios.a(libctemplate_la-template.o)
"std::Rb_tree_increment(std::Rb_tree_node_base)", referenced from:
std::Rb_tree_iterator<std::pair<unsigned long long const, std::vector<ctemplate::TemplateDictionary*, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> >> >::operator++() in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
std::Rb_tree_iterator<std::pair<std::string const, std::vector<ctemplate::TemplateDictionary, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> > const
> >::operator++() in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
std::Rb_tree_iterator<std::pair<std::string const, std::string> >::operator++() in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
"std::allocator::std::allocator()", referenced from:
ctemplate::AnyMightModify(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&, ctemplate::PerExpandData const
) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::EmitModifiedString(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&, char const_, unsigned long, ctemplate::PerExpandData const_, ctemplate::ExpandEmitter_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::EmitMissingInclude(char const_, ctemplate::ExpandEmitter_, ctemplate::PerExpandData_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::SectionTemplateNode(ctemplate::TemplateToken const&, bool) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::~SectionTemplateNode() in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::WriteHeaderEntries(std::string_, std::string const&) const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::DumpToString(int, std::string_) const in libctemplate-ios.a(libctemplate_la-template.o)
...
"std::ostream::operator<<(int)", referenced from:
ctemplate::SectionTemplateNode::GetNextToken(ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::Template::Template(ctemplate::TemplateString const&, ctemplate::Strip, ctemplate::TemplateCache_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::Template::~Template() in libctemplate-ios.a(libctemplate_la-template.o)
"std::string::clear()", referenced from:
ctemplate::SectionTemplateNode::AddSubnode(ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::PragmaMarker::PragmaMarker(char const_, char const_, std::string_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::PragmaMarker::ParseAttributeValue(char const_, char const__, std::string_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::TemplateCache::FindTemplateFilename(std::string const&) const in libctemplate-ios.a(libctemplate_la-template_cache.o)
ctemplate::TemplateCache::ResolveTemplateFilename(std::string const&, std::string_, ctemplate::FileStat_) const in libctemplate-ios.a(libctemplate_la-template_cache.o)
"std::string::append(unsigned long, char)", referenced from:
std::basic_string<char, std::char_traits, std::allocator > std::operator+<char, std::char_traits, std::allocator >(std::basic_string<char, std::char_traits, std::allocator > const&, char) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::PrettyPrintOneModifier(ctemplate::ModifierAndValue const&) in libctemplate-ios.a(libctemplate_la-template_modifiers.o)
"std::string::length() const", referenced from:
ctemplate::(anonymous namespace)::WriteOneHeaderEntry(std::string_, std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::PragmaMarker::PragmaMarker(char const_, char const_, std::string_) in libctemplate-ios.a(libctemplate_la-template.o)
google_ctemplate_streamhtmlparser::HtmlParser::Parse(std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::TemplateTemplateNode::TemplateTemplateNode(ctemplate::TemplateToken const&, ctemplate::Strip, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::ContainsFullWord(std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template_pathops.o)
"std::string::operator+=(char)", referenced from:
ctemplate::StringEmitter::Emit(char) in libctemplate-ios.a(libctemplate_la-template.o)
"std::string::append(std::string const&)", referenced from:
ctemplate::(anonymous namespace)::WriteOneHeaderEntry(std::string_, std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::AppendTokenWithIndent(int, std::string_, std::string const&, ctemplate::TemplateToken const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::PrettyPrintTokenModifiers(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::PragmaMarker::PragmaMarker(char const_, char const_, std::string_) in libctemplate-ios.a(libctemplate_la-template.o)
std::basic_string<char, std::char_traits, std::allocator > std::operator+<char, std::char_traits, std::allocator >(std::basic_string<char, std::char_traits, std::allocator > const&, std::basic_string<char, std::char_traits, std::allocator > const&) in libctemplate-ios.a(libctemplate_la-template.o)
std::basic_string<char, std::char_traits, std::allocator > std::operator+<char, std::char_traits, std::allocator >(char const_, std::basic_string<char, std::char_traits, std::allocator > const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::IndentedWriter::DoWrite(std::string const&) in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
...
"std::string::operator=(char const_)", referenced from:
ctemplate::(anonymous namespace)::WriteOneHeaderEntry(std::string_, std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::PragmaMarker::PragmaMarker(char const_, char const_, std::string_) in libctemplate-ios.a(libctemplate_la-template.o)
"std::string::operator[](unsigned long)", referenced from:
ctemplate::(anonymous namespace)::WriteOneHeaderEntry(std::string_, std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
"std::string::substr(unsigned long, unsigned long) const", referenced from:
ctemplate::(anonymous namespace)::WriteOneHeaderEntry(std::string_, std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
"std::string::find(char const_, unsigned long) const", referenced from:
ctemplate::(anonymous namespace)::WriteOneHeaderEntry(std::string_, std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::PragmaMarker::ParseAttributeValue(char const_, char const**, std::string_) in libctemplate-ios.a(libctemplate_la-template.o)
"std::basic_ostringstream<char, std::char_traits, std::allocator >::basic_ostringstream(std::Ios_Openmode)", referenced from:
ctemplate::(anonymous namespace)::WriteOneHeaderEntry(std::string
, std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
"std::basic_ostream<char, std::char_traits >& std::operator<<<char, std::char_traits, std::allocator >(std::basic_ostream<char, std::char_traits >&, std::basic_string<char, std::char_traits, std::allocator > const&)", referenced from:
ctemplate::SectionTemplateNode::SectionTemplateNode(ctemplate::TemplateToken const&, bool) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::~SectionTemplateNode() in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::WriteOneHeaderEntry(std::string_, std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::AddTextNode(ctemplate::TemplateToken const_, ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::GetModifierForContext(ctemplate::TemplateContext, google_ctemplate_streamhtmlparser::HtmlParser_, ctemplate::Template const_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::AddSubnode(ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::GetNextToken(ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
...
"std::string::swap(std::string&)", referenced from:
ctemplate::EmitModifiedString(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&, char const_, unsigned long, ctemplate::PerExpandData const_, ctemplate::ExpandEmitter_) in libctemplate-ios.a(libctemplate_la-template.o)
"std::ostream::operator<<(std::ostream& ()(std::ostream&))", referenced from:
ctemplate::SectionTemplateNode::SectionTemplateNode(ctemplate::TemplateToken const&, bool) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::~SectionTemplateNode() in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::AddTextNode(ctemplate::TemplateToken const
, ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::GetModifierForContext(ctemplate::TemplateContext, google_ctemplate_streamhtmlparser::HtmlParser_, ctemplate::Template const_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::AddSubnode(ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::GetNextToken(ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::Template::Template(ctemplate::TemplateString const&, ctemplate::Strip, ctemplate::TemplateCache_) in libctemplate-ios.a(libctemplate_la-template.o)
...
"std::string::end() const", referenced from:
ctemplate::IndentedWriter::EndsWithNewline(std::string const&) in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
"std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const_, std::allocator const&)", referenced from:
ctemplate::EmitMissingInclude(char const_, ctemplate::ExpandEmitter_, ctemplate::PerExpandData_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::SectionTemplateNode(ctemplate::TemplateToken const&, bool) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::DumpToString(int, std::string_) const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::AddVariableNode(ctemplate::TemplateToken_, ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::GetIndentation(char const_, unsigned long, bool) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::FilenameValidForContext(std::string const&, ctemplate::TemplateContext) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::Template::ExpandLocked(ctemplate::ExpandEmitter_, ctemplate::TemplateDictionaryInterface const_, ctemplate::PerExpandData_, ctemplate::TemplateCache const_) const in libctemplate-ios.a(libctemplate_la-template.o)
...
"std::ostream::operator<<(unsigned long long)", referenced from:
ctemplate::(anonymous namespace)::WriteOneHeaderEntry(std::string_, std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
"std::basic_string<char, std::char_traits, std::allocator >::basic_string()", referenced from:
ctemplate::EmitModifiedString(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&, char const_, unsigned long, ctemplate::PerExpandData const_, ctemplate::ExpandEmitter_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::TemplateTemplateNode::ExpandOnce(ctemplate::ExpandEmitter_, ctemplate::TemplateDictionaryInterface const&, char const_, ctemplate::PerExpandData_, ctemplate::TemplateCache const_) const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::WriteOneHeaderEntry(std::string_, std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::GetModifierForContext(ctemplate::TemplateContext, google_ctemplate_streamhtmlparser::HtmlParser_, ctemplate::Template const_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::GetNextToken(ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::Template::Template(ctemplate::TemplateString const&, ctemplate::Strip, ctemplate::TemplateCache_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::Template::ExpandLocked(ctemplate::ExpandEmitter_, ctemplate::TemplateDictionaryInterface const_, ctemplate::PerExpandData_, ctemplate::TemplateCache const_) const in libctemplate-ios.a(libctemplate_la-template.o)
...
"std::string::operator+=(char const_)", referenced from:
ctemplate::TemplateToken::ToString() const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::StringEmitter::Emit(char const_) in libctemplate-ios.a(libctemplate_la-template.o)
"std::string::size() const", referenced from:
ctemplate::EmitModifiedString(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&, char const_, unsigned long, ctemplate::PerExpandData const_, ctemplate::ExpandEmitter_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::TemplateTemplateNode::ExpandOnce(ctemplate::ExpandEmitter_, ctemplate::TemplateDictionaryInterface const&, char const_, ctemplate::PerExpandData_, ctemplate::TemplateCache const_) const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::Template::ExpandLocked(ctemplate::ExpandEmitter_, ctemplate::TemplateDictionaryInterface const_, ctemplate::PerExpandData_, ctemplate::TemplateCache const_) const in libctemplate-ios.a(libctemplate_la-template.o)
std::basic_string<char, std::char_traits, std::allocator > std::operator+<char, std::char_traits, std::allocator >(char const_, std::basic_string<char, std::char_traits, std::allocator > const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::StringHash::operator()(std::string const&) const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::TemplateString::TemplateString(std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::UpdateBestMatch(char const_, unsigned long, char const_, unsigned long, ctemplate::ModifierInfo const_, ctemplate::ModifierInfo const**) in libctemplate-ios.a(libctemplate_la-template_modifiers.o)
...
"std::string::reserve(unsigned long)", referenced from:
ctemplate::EmitModifiedString(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&, char const_, unsigned long, ctemplate::PerExpandData const_, ctemplate::ExpandEmitter_) in libctemplate-ios.a(libctemplate_la-template.o)
std::basic_string<char, std::char_traits, std::allocator > std::operator+<char, std::char_traits, std::allocator >(char const_, std::basic_string<char, std::char_traits, std::allocator > const&) in libctemplate-ios.a(libctemplate_la-template.o)
"std::basic_ostream<char, std::char_traits >& std::endl<char, std::char_traits >(std::basic_ostream<char, std::char_traits >&)", referenced from:
ctemplate::SectionTemplateNode::SectionTemplateNode(ctemplate::TemplateToken const&, bool) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::~SectionTemplateNode() in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::AddTextNode(ctemplate::TemplateToken const_, ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::GetModifierForContext(ctemplate::TemplateContext, google_ctemplate_streamhtmlparser::HtmlParser_, ctemplate::Template const_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::AddSubnode(ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::GetNextToken(ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::Template::Template(ctemplate::TemplateString const&, ctemplate::Strip, ctemplate::TemplateCache_) in libctemplate-ios.a(libctemplate_la-template.o)
...
"std::allocator::~std::allocator()", referenced from:
ctemplate::AnyMightModify(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&, ctemplate::PerExpandData const_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::EmitModifiedString(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&, char const_, unsigned long, ctemplate::PerExpandData const_, ctemplate::ExpandEmitter_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::EmitMissingInclude(char const_, ctemplate::ExpandEmitter_, ctemplate::PerExpandData_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::SectionTemplateNode(ctemplate::TemplateToken const&, bool) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::~SectionTemplateNode() in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::WriteHeaderEntries(std::string_, std::string const&) const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::DumpToString(int, std::string_) const in libctemplate-ios.a(libctemplate_la-template.o)
...
"std::basic_string<char, std::char_traits, std::allocator >::basic_string(unsigned long, char, std::allocator const&)", referenced from:
ctemplate::AppendTokenWithIndent(int, std::string_, std::string const&, ctemplate::TemplateToken const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::IndentedWriter::IndentLine() in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
"std::string::operator=(std::string const&)", referenced from:
ctemplate::EmitModifiedString(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&, char const_, unsigned long, ctemplate::PerExpandData const_, ctemplate::ExpandEmitter_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::WriteOneHeaderEntry(std::string_, std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::AddSubnode(ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::PragmaMarker::PragmaMarker(char const_, char const_, std::string_) in libctemplate-ios.a(libctemplate_la-template.o)
std::pair<std::string, std::string>::operator=(std::pair<std::string, std::string> const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::TemplateCache::ResolveTemplateFilename(std::string const&, std::string_, ctemplate::FileStat_) const in libctemplate-ios.a(libctemplate_la-template_cache.o)
ctemplate::TemplateDictionary::DictionaryPrinter::DumpVariables(ctemplate::small_map<std::map<unsigned long long, ctemplate::TemplateString, std::less, ctemplate::ArenaAllocator<std::pair<unsigned long long const, ctemplate::TemplateString>, ctemplate::UnsafeArena> >, 4, std::equal_to, ctemplate::TemplateDictionary::map_arena_init> const&) in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
...
"std::basic_string<char, std::char_traits, std::allocator >::~basic_string()", referenced from:
ctemplate::VariableTemplateNode::Expand(ctemplate::ExpandEmitter_, ctemplate::TemplateDictionaryInterface const_, ctemplate::PerExpandData_, ctemplate::TemplateCache const_) const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::AnyMightModify(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&, ctemplate::PerExpandData const_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::EmitModifiedString(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&, char const_, unsigned long, ctemplate::PerExpandData const_, ctemplate::ExpandEmitter_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::TemplateTemplateNode::ExpandOnce(ctemplate::ExpandEmitter_, ctemplate::TemplateDictionaryInterface const&, char const_, ctemplate::PerExpandData_, ctemplate::TemplateCache const_) const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::EmitMissingInclude(char const_, ctemplate::ExpandEmitter_, ctemplate::PerExpandData_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::SectionTemplateNode(ctemplate::TemplateToken const&, bool) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::~SectionTemplateNode() in libctemplate-ios.a(libctemplate_la-template.o)
...
"std::basic_ostringstream<char, std::char_traits, std::allocator >::~basic_ostringstream()", referenced from:
ctemplate::(anonymous namespace)::WriteOneHeaderEntry(std::string_, std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
"std::string::Rep::S_empty_rep_storage", referenced from:
renderTemplate(mailcore::String
, mailcore::HashMap
) in libMailCore-ios.a(MCHTMLRenderer.o)
"std::string::compare(std::string const&) const", referenced from:
bool std::operator!=<char, std::char_traits, std::allocator >(std::basic_string<char, std::char_traits, std::allocator > const&, std::basic_string<char, std::char_traits, std::allocator > const&) in libctemplate-ios.a(libctemplate_la-template.o)
bool std::operator==<char, std::char_traits, std::allocator >(std::basic_string<char, std::char_traits, std::allocator > const&, std::basic_string<char, std::char_traits, std::allocator > const&) in libctemplate-ios.a(libctemplate_la-template.o)
bool std::operator<<char, std::char_traits, std::allocator >(std::basic_string<char, std::char_traits, std::allocator > const&, std::basic_string<char, std::char_traits, std::allocator > const&) in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
"std::basic_ostream<char, std::char_traits >& std::operator<<std::char_traits(std::basic_ostream<char, std::char_traits >&, char const_)", referenced from:
ctemplate::EmitMissingInclude(char const_, ctemplate::ExpandEmitter_, ctemplate::PerExpandData_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::SectionTemplateNode(ctemplate::TemplateToken const&, bool) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::~SectionTemplateNode() in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::WriteOneHeaderEntry(std::string_, std::string const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::AddTextNode(ctemplate::TemplateToken const_, ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::GetModifierForContext(ctemplate::TemplateContext, google_ctemplate_streamhtmlparser::HtmlParser_, ctemplate::Template const_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::AddSubnode(ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
...
"std::Rb_tree_insert_and_rebalance(bool, std::Rb_tree_node_base, std::Rb_tree_node_base, std::Rb_tree_node_base&)", referenced from:
std::Rb_tree<unsigned long long, std::pair<unsigned long long const, std::vector<ctemplate::TemplateDictionary, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> >
>, std::Select1st<std::pair<unsigned long long const, std::vector<ctemplate::TemplateDictionary, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> >
> >, std::less, ctemplate::ArenaAllocator<std::pair<unsigned long long const, std::vector<ctemplate::TemplateDictionary_, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> >>, ctemplate::UnsafeArena> >::M_insert(std::Rb_tree_node_base, std::Rb_tree_node_base, std::pair<unsigned long long const, std::vector<ctemplate::TemplateDictionary, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> >> const&) in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
std::Rb_tree<unsigned long long, std::pair<unsigned long long const, ctemplate::TemplateString>, std::Select1st<std::pair<unsigned long long const, ctemplate::TemplateString> >, std::less, ctemplate::ArenaAllocator<std::pair<unsigned long long const, ctemplate::TemplateString>, ctemplate::UnsafeArena> >::M_insert(std::Rb_tree_node_base, std::Rb_tree_node_base, std::pair<unsigned long long const, ctemplate::TemplateString> const&) in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
std::Rb_tree<unsigned long long, std::pair<unsigned long long const, ctemplate::TemplateString>, std::Select1st<std::pair<unsigned long long const, ctemplate::TemplateString> >, std::less, std::allocator<std::pair<unsigned long long const, ctemplate::TemplateString> > >::M_insert(std::Rb_tree_node_base, std::Rb_tree_node_base, std::pair<unsigned long long const, ctemplate::TemplateString> const&) in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
std::Rb_tree<std::string, std::pair<std::string const, std::vector<ctemplate::TemplateDictionary, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> > const
>, std::Select1st<std::pair<std::string const, std::vector<ctemplate::TemplateDictionary, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> > const
> >, std::lessstd::string, std::allocator<std::pair<std::string const, std::vector<ctemplate::TemplateDictionary
, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> > const
> > >::M_insert(std::Rb_tree_node_base, std::Rb_tree_node_base, std::pair<std::string const, std::vector<ctemplate::TemplateDictionary, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> > const> const&) in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
std::Rb_tree<std::string, std::pair<std::string const, std::string>, std::Select1st<std::pair<std::string const, std::string> >, std::lessstd::string, std::allocator<std::pair<std::string const, std::string> > >::M_insert(std::Rb_tree_node_base, std::Rb_tree_node_base, std::pair<std::string const, std::string> const&) in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
"std::string::c_str() const", referenced from:
ctemplate::EmitModifiedString(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&, char const
, unsigned long, ctemplate::PerExpandData const
, ctemplate::ExpandEmitter
) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::Template::template_file() const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::AddVariableNode(ctemplate::TemplateToken, ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::PragmaMarker::GetAttributeValue(char const_) const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::Template::Template(ctemplate::TemplateString const&, ctemplate::Strip, ctemplate::TemplateCache_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::Template::ReloadIfChangedLocked() in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::Template::original_filename() const in libctemplate-ios.a(libctemplate_la-template.o)
...
"std::cerr", referenced from:
ctemplate::EmitMissingInclude(char const_, ctemplate::ExpandEmitter_, ctemplate::PerExpandData_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::SectionTemplateNode(ctemplate::TemplateToken const&, bool) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::~SectionTemplateNode() in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::AddTextNode(ctemplate::TemplateToken const_, ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::(anonymous namespace)::GetModifierForContext(ctemplate::TemplateContext, google_ctemplate_streamhtmlparser::HtmlParser_, ctemplate::Template const_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::AddSubnode(ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::GetNextToken(ctemplate::Template_) in libctemplate-ios.a(libctemplate_la-template.o)
...
"std::_throw_length_error(char const)", referenced from:
std::vector<ctemplate::BaseArena::AllocatedBlock, std::allocatorctemplate::BaseArena::AllocatedBlock >::_M_fill_insert(__gnu_cxx::__normal_iterator<ctemplate::BaseArena::AllocatedBlock*, std::vector<ctemplate::BaseArena::AllocatedBlock, std::allocatorctemplate::BaseArena::AllocatedBlock > >, unsigned long, ctemplate::BaseArena::AllocatedBlock const&) in libctemplate-ios.a(libctemplate_la-arena.o)
std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue >::_M_insert_aux(gnu_cxx::normal_iterator<ctemplate::ModifierAndValue*, std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > >, ctemplate::ModifierAndValue const&) in libctemplate-ios.a(libctemplate_la-template.o)
std::vector<std::pair<std::string, std::string>, std::allocator<std::pair<std::string, std::string> > >::M_insert_aux(__gnu_cxx::__normal_iterator<std::pair<std::string, std::string>, std::vector<std::pair<std::string, std::string>, std::allocator<std::pair<std::string, std::string> > > >, std::pair<std::string, std::string> const&) in libctemplate-ios.a(libctemplate_la-template.o)
std::vector<ctemplate::TemplateDictionary
, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> >::reserve(unsigned long) in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
std::vector<ctemplate::TemplateDictionary*, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> >::M_insert_aux(gnu_cxx::normal_iterator<ctemplate::TemplateDictionary**, std::vector<ctemplate::TemplateDictionary*, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> > >, ctemplate::TemplateDictionary* const&) in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
std::vector<ctemplate::ModifierAndValue const*, std::allocator<ctemplate::ModifierAndValue const*> >::M_insert_aux(gnu_cxx::normal_iterator<ctemplate::ModifierAndValue const**, std::vector<ctemplate::ModifierAndValue const*, std::allocator<ctemplate::ModifierAndValue const*> > >, ctemplate::ModifierAndValue const* const&) in libctemplate-ios.a(libctemplate_la-template_modifiers.o)
std::vector<ctemplate::ModifierInfo const*, std::allocator<ctemplate::ModifierInfo const*> >::M_insert_aux(gnu_cxx::normal_iterator<ctemplate::ModifierInfo const**, std::vector<ctemplate::ModifierInfo const*, std::allocator<ctemplate::ModifierInfo const*> > >, ctemplate::ModifierInfo const* const&) in libctemplate-ios.a(libctemplate_la-template_modifiers.o)
...
"std::string::append(char const
, unsigned long)", referenced from:
std::basic_string<char, std::char_traits, std::allocator > std::operator+<char, std::char_traits, std::allocator >(char const
, std::basic_string<char, std::char_traits, std::allocator > const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::StringEmitter::Emit(char const
, unsigned long) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::FindModifier(char const
, unsigned long, char const
, unsigned long) in libctemplate-ios.a(libctemplate_la-template_modifiers.o)
ctemplate::PrettyPrintOneModifier(ctemplate::ModifierAndValue const&) in libctemplate-ios.a(libctemplate_la-template_modifiers.o)
"std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const, unsigned long, std::allocator const&)", referenced from:
ctemplate::AnyMightModify(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&, ctemplate::PerExpandData const) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::EmitModifiedString(std::vector<ctemplate::ModifierAndValue, std::allocatorctemplate::ModifierAndValue > const&, char const, unsigned long, ctemplate::PerExpandData const, ctemplate::ExpandEmitter) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::SectionTemplateNode(ctemplate::TemplateToken const&, bool) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::~SectionTemplateNode() in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::WriteHeaderEntries(std::string, std::string const&) const in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::AppendTokenWithIndent(int, std::string, std::string const&, ctemplate::TemplateToken const&, std::string const&) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::SectionTemplateNode::AddTextNode(ctemplate::TemplateToken const, ctemplate::Template) in libctemplate-ios.a(libctemplate_la-template.o)
...
"std::Rb_tree_decrement(std::Rb_tree_node_base)", referenced from:
std::Rb_tree_iterator<std::pair<unsigned long long const, std::vector<ctemplate::TemplateDictionary, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> >
> >::operator--() in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
std::Rb_tree_iterator<std::pair<unsigned long long const, ctemplate::TemplateString> >::operator--() in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
std::Rb_tree_iterator<std::pair<std::string const, std::vector<ctemplate::TemplateDictionary, ctemplate::ArenaAllocator<ctemplate::TemplateDictionary*, ctemplate::UnsafeArena> > const
> >::operator--() in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
std::Rb_tree_iterator<std::pair<std::string const, std::string> >::operator--() in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
"std::string::append(char const
)", referenced from:
ctemplate::(anonymous namespace)::PragmaMarker::ParseAttributeValue(char const, char const, std::string) in libctemplate-ios.a(libctemplate_la-template.o)
std::basic_string<char, std::char_traits, std::allocator > std::operator+<char, std::char_traits, std::allocator >(std::basic_string<char, std::char_traits, std::allocator > const&, char const*) in libctemplate-ios.a(libctemplate_la-template.o)
ctemplate::PrettyPrintOneModifier(ctemplate::ModifierAndValue const&) in libctemplate-ios.a(libctemplate_la-template_modifiers.o)
"std::ios_base::Init::~Init()", referenced from:
___cxx_global_var_init in libctemplate-ios.a(libctemplate_la-arena.o)
___cxx_global_var_init1 in libctemplate-ios.a(libctemplate_la-template.o)
___cxx_global_var_init1 in libctemplate-ios.a(libctemplate_la-template_cache.o)
___cxx_global_var_init in libctemplate-ios.a(libctemplate_la-template_dictionary.o)
___cxx_global_var_init in libctemplate-ios.a(libctemplate_la-template_modifiers.o)
___cxx_global_var_init1 in libctemplate-ios.a(libctemplate_la-template_namelist.o)
___cxx_global_var_init1 in libctemplate-ios.a(libctemplate_la-template_string.o)
...
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Showing first 200 notices only

Repeated assertion failure mImap == NULL

So I've been writing lots of async code around MailCore2, and I repeatedly get an assertion failure at line 488 in MCIMAPSession.cc, which is in this function:

void IMAPSession::setup()
{
    MCAssert(mImap == NULL);

    mImap = mailimap_new(0, NULL);
    mailimap_set_timeout(mImap, timeout());
    mailimap_set_progress_callback(mImap, body_progress, IMAPSession::items_progress, this);
}

And here is the backtrace:

* thread #30: tid = 0x4203, 0x39825350 libsystem_kernel.dylib`__pthread_kill + 8, stop reason = signal SIGABRT
    frame #0: 0x39825350 libsystem_kernel.dylib`__pthread_kill + 8
    frame #1: 0x3979bfb6 libsystem_c.dylib`pthread_kill + 58
    frame #2: 0x397d836a libsystem_c.dylib`abort + 94
    frame #3: 0x001d9332 Mercurius`mailcore::assertInteral(filename=0x002523c5, line=488, cond=0, condString=0x0025241a) + 70 at MCAssert.cc:13
    frame #4: 0x001ea6ae Mercurius`mailcore::IMAPSession::setup(this=0x22265930) + 78 at MCIMAPSession.cc:488
    frame #5: 0x001ea76a Mercurius`mailcore::IMAPSession::connect(this=0x22265930, pError=0x077f6e48) + 18 at MCIMAPSession.cc:516
    frame #6: 0x001eadb8 Mercurius`mailcore::IMAPSession::connectIfNeeded(this=0x22265930, pError=0x077f6e48) + 40 at MCIMAPSession.cc:588
    frame #7: 0x001eaddc Mercurius`mailcore::IMAPSession::loginIfNeeded(this=0x22265930, pError=0x077f6e48) + 20 at MCIMAPSession.cc:597
    frame #8: 0x001eb576 Mercurius`mailcore::IMAPSession::selectIfNeeded(this=0x22265930, folder=0x2228f3f0, pError=0x077f6e48) + 22 at MCIMAPSession.cc:753
    frame #9: 0x001ee51a Mercurius`mailcore::IMAPSession::fetchMessageByUID(this=0x22265930, folder=0x2228f3f0, uid=39180, progressCallback=0x22445848, pError=0x077f6e48) + 34 at MCIMAPSession.cc:1989
    frame #10: 0x001fba88 Mercurius`mailcore::IMAPFetchContentOperation::main(this=0x224457e0) + 220 at MCIMAPFetchContentOperation.cc:72
    frame #11: 0x001e43a6 Mercurius`mailcore::OperationQueue::runOperations(this=0x222d3180) + 586 at MCOperationQueue.cc:79
    frame #12: 0x001e4156 Mercurius`mailcore::OperationQueue::runOperationsOnThread(queue=0x222d3180) + 14 at MCOperationQueue.cc:47
    frame #13: 0x3977e0e0 libsystem_c.dylib`_pthread_start + 308

I have serialized access to MCOIMAPSession instances which my datasources use for submitting fetch requests, and this appears to have made this much less frequent, but it does still appear to happen for < 1% of these asynchronous fetch requests.

Any idea what I'm missing here?

Need Help

I try to build mailcore2 and i have this problem, can you help me please thanks

Captura de pantalla 2013-04-16 a la s 12 17 52

MCOMailProvider?

Does MCO*Session really obviate the need for a hard-coded provider object?

Please help - can't build

I have a Macbook pro from mid 2010 running Mountain Lion. I am trying to build the mailcore2 library to use in a project that I am working on in Xcode 4.6. Sorry that I am a newb when it comes to working with terminal, but I really need help.

When I try to build mailcore2.xcodeproj I get the error:

'libetpan/libetpan.h' file not found

I then try to run the script prepare.sh hoping that it will fix the issue. I get the following:

line 2: ./prepare-icu4c-macos.sh: No such file or directory
line 3: ./prepare-libetpan-macos.sh: No such file or directory
line 4: ./prepare-ctemplate-macos.sh: No such file or directory

I don't understand why it doesn't find the files. So I tried to run the scripts individually beginning with prepare-icu4c-macos.sh

I get the following

install from cache
mkdir: ../Externals/tmp: Permission denied
checkdir: cannot create extraction directory: ../Externals/tmp
mv: rename ../Externals/tmp/icu4c-50_1_1/icu4c to ../Externals: No such file or directory

I have tried changing the permissions but I have had no luck. Any help would be greatly appreciated.

Proper termination of an IDLE operation?

So in playing with the MCOIMAPIdleOperation I wanted to clarify if I'm supposed to call interruptIdle or cancel to terminate the operation early? It would appear that when I call cancel, it crashes the app due to unsetup() getting called twice?

What's the proper way to terminate an idle operation?

Error Build iOS

When i try to build an iOS project i get this error:

Undefined symbols for architecture armv7:
"_kCFStreamSSLValidatesCertificateChain", referenced from:
_mailstream_cfstream_set_ssl_enabled in libetpan-ios.a(mailstream_cfstream.o)
"_kCFStreamSSLLevel", referenced from:
_mailstream_cfstream_set_ssl_enabled in libetpan-ios.a(mailstream_cfstream.o)
"_kCFStreamSSLAllowsExpiredRoots", referenced from:
_mailstream_cfstream_set_ssl_enabled in libetpan-ios.a(mailstream_cfstream.o)
"_kCFStreamSSLAllowsAnyRoot", referenced from:
_mailstream_cfstream_set_ssl_enabled in libetpan-ios.a(mailstream_cfstream.o)
"_kCFStreamPropertySSLSettings", referenced from:
_mailstream_cfstream_set_ssl_enabled in libetpan-ios.a(mailstream_cfstream.o)
"_kCFStreamNetworkServiceTypeVoIP", referenced from:
_mailstream_low_cfstream_open_voip_timeout in libetpan-ios.a(mailstream_cfstream.o)
"_kCFStreamSSLAllowsExpiredCertificates", referenced from:
_mailstream_cfstream_set_ssl_enabled in libetpan-ios.a(mailstream_cfstream.o)
"_kCFStreamNetworkServiceType", referenced from:
_mailstream_low_cfstream_open_voip_timeout in libetpan-ios.a(mailstream_cfstream.o)

am i doing something wrong?

License

Hi,

great project! What is the license for mailcore2? I can't find it in the source. Is it App Store compliant?

Best Regards
--Anthony

EXC Bad Access

I'm getting an error at line 59 in MCIMAPCopyMessageOperation:

    ErrorCode error;
    session()->session()->copyMessages(folder(), mUids, mDestFolder, &mDestUids, &error);
    MC_SAFE_RETAIN(mDestUids); <---- TROUBLE
    setError(error);

Here's the MCLog + backtrace:

2013-05-29 11:55:45.286 [9112:4f07] MCIMAPSession.cc:543: ssl connect imap.gmail.com 993 2
2013-05-29 11:55:45.287 [9112:4f07] MCIMAPSession.cc:587: connect ok
2013-05-29 11:55:45.287 [9112:4f07] MCIMAPSession.cc:618: login
2013-05-29 11:55:46.147 [9112:4e0b] MCOperationQueue.cc:71: quitting 0 0x1d595280
2013-05-29 11:55:46.173 [9112:4f07] MCIMAPSession.cc:753: login ok
2013-05-29 11:55:46.173 [9112:4f07] MCIMAPSession.cc:812: select
2013-05-29 11:55:46.266 [9112:main] MCOperationQueue.cc:132: trying to quit 0x216bb870
2013-05-29 11:55:46.266 [9112:c807] MCOperationQueue.cc:71: quitting 1 0x0
2013-05-29 11:55:46.266 [9112:c807] MCOperationQueue.cc:73: stopping 0x216bb870
2013-05-29 11:55:46.266 [9112:c807] MCOperationQueue.cc:107: cleanup thread 0x216bb870
2013-05-29 11:55:46.737 [9112:4f07] MCIMAPSession.cc:816: select error : 0(lldb) bt
* thread #12: tid = 0x3103, 0x002bdd76 Mercurius`mailcore::IMAPCopyMessagesOperation::main(this=0x1d595280) + 134 at MCIMAPCopyMessagesOperation.cc:59, stop reason = EXC_BAD_ACCESS (code=1, address=0x6000000c)
    frame #0: 0x002bdd76 Mercurius`mailcore::IMAPCopyMessagesOperation::main(this=0x1d595280) + 134 at MCIMAPCopyMessagesOperation.cc:59
    frame #1: 0x002a6fd6 Mercurius`mailcore::OperationQueue::runOperations(this=0x1e8bc360) + 586 at MCOperationQueue.cc:79
    frame #2: 0x002a6d86 Mercurius`mailcore::OperationQueue::runOperationsOnThread(queue=0x1e8bc360) + 14 at MCOperationQueue.cc:47
    frame #3: 0x3b3910e0 libsystem_c.dylib`_pthread_start + 308

Move to submodules over build scripts

The current scripting interface is a little bit of a hassle, especially when there exist tools to ease the pulling of submodules (git, svn, cocoapods, etc.).

mac example crashes on message list key-scroll

StackTrace

When scrolling through the message list with the arrow keys… there is an almost immediate, and reproducible crash…

It seems like an OperationQueue issue…

_ZN8mailcore25IMAPFetchContentOperation4mainEv
<dyld_stub_pthread_mutex_unlock>
_ZZL19calcNameSetsLengthsP10UErrorCodeE8extChars

There is so little information on how to work with mixed C++, ObjC projects out there… so it is all a bit intimidating.

MCOSMTPSendOperation only works on iOS Simulator, not on device.

The code from the wiki (see below), with a valid email account and SMTP connection info, will send from the iOS Simulator, but will not send on the iPhone device.

The device returns an error:
Domain=MCOErrorDomain Code=5 "The operation couldn’t be completed. (MCOErrorDomain error 5.)

Is anyone else having this issue?

MCOSMTPSession *smtpSession = [[MCOSMTPSession alloc] init];
smtpSession.hostname = @"smtp.gmail.com";
smtpSession.port = 465;
smtpSession.username = USERNAME;
smtpSession.password = PASSWORD;
smtpSession.authType = (MCOAuthTypeSASLPlain | MCOAuthTypeSASLLogin);
smtpSession.connectionType = MCOConnectionTypeTLS;

MCOMessageBuilder * builder = [[MCOMessageBuilder alloc] init];
[[builder header] setFrom:[MCOAddress addressWithDisplayName:nil mailbox:USERNAME]];
NSMutableArray *to = [[NSMutableArray alloc] init];
for(NSString *toAddress in RECIPIENTS) {
    MCOAddress *newAddress = [MCOAddress addressWithMailbox:toAddress];
    [to addObject:newAddress];
}
[[builder header] setTo:to];
NSMutableArray *cc = [[NSMutableArray alloc] init];
for(NSString *ccAddress in CC) {
    MCOAddress *newAddress = [MCOAddress addressWithMailbox:ccAddress];
    [cc addObject:newAddress];
}
[[builder header] setCc:cc];
NSMutableArray *bcc = [[NSMutableArray alloc] init];
for(NSString *bccAddress in BCC) {
    MCOAddress *newAddress = [MCOAddress addressWithMailbox:bccAddress];
    [bcc addObject:newAddress];
}
[[builder header] setBcc:bcc];
[[builder header] setSubject:SUBJECT];
[builder setHTMLBody:BODY];
NSData * rfc822Data = [builder data];

MCOSMTPSendOperation *sendOperation = [smtpSession sendOperationWithData:rfc822Data];
[sendOperation start:^(NSError *error) {
    if(error) {
        NSLog(@"%@ Error sending email:%@", USERNAME, error);
    } else {
        NSLog(@"%@ Successfully sent email!", USERNAME);
    }
}];

How to handle transition from MailCore 1 to 2?

As there are now many apps using MailCore 1 I'm wondering how we should handle the transition. In either case I'll continue to maintain MailCore 1 for apps that use it.

I've got a few ideas but I'd love to hear other's thoughts:

Some possible transition ideas:

  1. Do nothing, just keep maintaining 1 and people can move over if they wish
  2. Document how to go from MailCore 1 to the sync C++ API
  3. Write a Obj-C API that is sync. and easier to port to from MailCore 1
  4. Write an API that runs off of MailCore2 but almost matches the MailCore1 API

Follow the Rule of Three

Copy constructors for each C++ object with a constructor and a destructor defined should either be defined or privatized.

SMTP sendOperation BUG

Trying to get MCOMessageBuilder data on iOS break with this error:

malloc: *** error for object 0x76b9024: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

CODE:

    MCOSMTPSession *smtpSession = [[MCOSMTPSession alloc] init];
    smtpSession.hostname = [NSString stringWithFormat:@"smtp.%@",[emailComponents objectAtIndex:1]];
    smtpSession.port = 465;
    smtpSession.username = [emailComponents objectAtIndex:0];
    smtpSession.password = password;
    smtpSession.authType = (MCOAuthTypeSASLPlain | MCOAuthTypeSASLLogin);
    smtpSession.connectionType = MCOConnectionTypeTLS;

    MCOMessageHeader *header = [[MCOMessageHeader alloc]init];
    header.from = [MCOAddress addressWithDisplayName:nil mailbox:email];
    header.to = @[email];
    header.subject = @"SUBJECT";

    MCOMessageBuilder *builder = [[MCOMessageBuilder alloc]init];
    builder.textBody = @"TEXTBODY";
    builder.header = header;

    NSData *data = builder.data; <--- BREAKS HERE!

    MCOSMTPSendOperation *sendOperation = [smtpSession sendOperationWithData:data];
    [sendOperation start:^(NSError *error) {
        if (error == nil) {
            NSLog(@"Nice SMTP");
        } else {
            NSLog(@"WTF SMTP: %@", error);
        }
    }];

Problems with building

Hi, I get some problems with building this project.
I noticed that there's a prepare.sh file in your project. So I run the script, but failed during compiling libEtPan.

Are you using automake? How can I build the project on Mac OS X?

Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.