Code Monkey home page Code Monkey logo

mailcore2's Introduction

 __    __     ______     __     __         ______     ______     ______     ______    
/\ "-./  \   /\  __ \   /\ \   /\ \       /\  ___\   /\  __ \   /\  == \   /\  ___\   
\ \ \-./\ \  \ \  __ \  \ \ \  \ \ \____  \ \ \____  \ \ \/\ \  \ \  __<   \ \  __\   
 \ \_\ \ \_\  \ \_\ \_\  \ \_\  \ \_____\  \ \_____\  \ \_____\  \ \_\ \_\  \ \_____\ 
  \/_/  \/_/   \/_/\/_/   \/_/   \/_____/   \/_____/   \/_____/   \/_/ /_/   \/_____/ 

What is MailCore

MailCore is a Mac and iOS library designed to ease the pain of dealing with e-mail protocols. MailCore makes the process of sending e-mail easy by hiding the nasty details like MIME composition from you. Instead, there is a single method required to send a message. Checking e-mail on an IMAP server is a more complex beast, but MailCore makes the job much simpler by presenting everything as a set of objects like Messages, Folders and Accounts.

Example

This example shows how you can send email using MailCore.

CTCoreMessage *msg = [[CTCoreMessage alloc] init];
CTCoreAddress *toAddress = [CTCoreAddress addressWithName:@"Monkey"
                                                    email:@"[email protected]"];
[msg setTo:[NSSet setWithObject:toAddress]];
[msg setBody:@"This is a test message!"];
 
NSError *error;
BOOL success = [CTSMTPConnection sendMessage:testMsg 
                                      server:@"mail.test.com"
                                    username:@"test"
                                    password:@"test"
                                        port:587
                              connectionType:CTSMTPConnectionTypeStartTLS
                                     useAuth:YES
                                       error:&error];

Getting the code

First checkout the code and pulldown the required dependencies as submodules:

git clone https://github.com/mronge/MailCore.git
cd MailCore/
git submodule update --init

Now open up MailCore.xcodeproj and build either the iOS static library or the Mac OS X framework depending on your needs.

Adding MailCore to Your iOS Project

  1. First checkout the latest code and make sure you get the required submodules
  2. Locate MailCore.xcodeproj and add it to your project as a subproject. You can do this by dragging the Mailcore.xcodeproj file into your Xcode project.
  3. Navigate to your app’s target and switch to your app’s Build Phases. Once in Build Phases expand “Link Binary With Libraries” and click the + button. And add these libraries:
   libmailcore.a
   libssl.a
   libsasl2.a
   libcrypto.a
   libiconv.dylib
   CFNetwork.framework
  1. Add “MailCore iOS” under “Target Dependencies”
  2. Under your app’s target, switch to Build Settings. Locate “Header Search Paths” in the Build Settings and add "$(BUILT_PRODUCTS_DIR)/../../include"
  3. You are now ready to use MailCore. To use MailCore add #import <MailCore/MailCore.h> to the top of your Objective-C files.

Adding MailCore to Your Mac Project

  1. First checkout the latest code and make sure you get the required submodules
  2. Locate MailCore.xcodeproj and add it to your project as a subproject. You can do this by dragging the Mailcore.xcodeproj file into your Xcode project.
  3. Navigate to your app’s target and switch to your app’s Build Phases. Once in Build Phases expand “Link Binary With Libraries” and click the + button. From there add MailCore.framework.
  4. While still under Build Phases click “Add Build Phase” in the lower right and select “Add Copy Files”. A new copy files phase will be added, make sure the destination is set to “Frameworks”. Now add MailCore.framework to that copy files phase by using the + button.
  5. Add “MailCore” under “Target Dependencies”
  6. You are now ready to use MailCore. To use MailCore add #import <MailCore/MailCore.h> to the top of your Objective-C files.

More Docs

Consulting

Consulting services are available via Astro HQ. At Astro HQ we have years of experience working on email apps. If you need custom e-mail functionality developed, please get in touch via our website.

Thanks,

Matt Ronge
@mronge

mailcore2's People

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.

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

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.

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.).

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);
    }
}];

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);
        }
    }];

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

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.

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?

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?

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.

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

MCOMailProvider?

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

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?

Follow the Rule of Three

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

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

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

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.

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.