1 /* -*- mode: C++; c-basic-offset: 4; tab-width: 4 -*- 
   3  * Copyright (c) 2005-2009 Apple Inc. All rights reserved. 
   5  * @APPLE_LICENSE_HEADER_START@ 
   7  * This file contains Original Code and/or Modifications of Original Code 
   8  * as defined in and that are subject to the Apple Public Source License 
   9  * Version 2.0 (the 'License'). You may not use this file except in 
  10  * compliance with the License. Please obtain a copy of the License at 
  11  * http://www.opensource.apple.com/apsl/ and read it before using this 
  14  * The Original Code and all software distributed under the License are 
  15  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  16  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  17  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 
  18  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  19  * Please see the License for the specific language governing rights and 
  20  * limitations under the License. 
  22  * @APPLE_LICENSE_HEADER_END@ 
  25 #ifndef __EXECUTABLEFILE__ 
  26 #define __EXECUTABLEFILE__ 
  31 #include "ObjectFile.h" 
  35 namespace ExecutableFile 
{ 
  39                 ObjectFile::Reader
*             reader
; 
  40                 LibraryOptions                  options
; 
  43         class Writer 
: public ObjectFile::Reader
 
  48                 virtual const char*                                                             getPath() = 0; 
  49                 virtual std::vector
<class ObjectFile::Atom
*>&   getAtoms() = 0; 
  50                 virtual std::vector
<class ObjectFile::Atom
*>*   getJustInTimeAtomsFor(const char* name
) = 0; 
  51                 virtual ObjectFile::Atom
&                                               makeObjcInfoAtom(ObjectFile::Reader::ObjcConstraint objcContraint
,  
  52                                                                                                                                                 bool objcReplacementClasses
) = 0; 
  53                 virtual class ObjectFile::Atom
*                                 getUndefinedProxyAtom(const char* name
) = 0; 
  54                 virtual void                                                                    addSynthesizedAtoms(const std::vector
<class ObjectFile::Atom
*>& existingAtoms
, 
  55                                                                                                                                                           class ObjectFile::Atom
* dyldClassicHelperAtom
, 
  56                                                                                                                                                           class ObjectFile::Atom
* dyldCompressedHelperAtom
, 
  57                                                                                                                                                           class ObjectFile::Atom
* dyldLazyDylibHelperAtom
, 
  58                                                                                                                                                           bool biggerThanTwoGigs
, 
  59                                                                                                                                                           uint32_t dylibSymbolCount
, 
  60                                                                                                                                                           std::vector
<class ObjectFile::Atom
*>& newAtoms
) = 0; 
  61                 virtual uint64_t                                                                write(std::vector
<class ObjectFile::Atom
*>& atoms
, 
  62                                                                                                                           std::vector
<class ObjectFile::Reader::Stab
>& stabs
, 
  63                                                                                                                           class ObjectFile::Atom
* entryPointAtom
, 
  64                                                                                                                           bool createUUID
, bool canScatter
, 
  65                                                                                                                           ObjectFile::Reader::CpuConstraint cpuConstraint
, 
  66                                                                                                                           std::set
<const class ObjectFile::Atom
*>& atomsThatOverrideWeak
, 
  67                                                                                                                           bool hasExternalWeakDefinitions
) = 0; 
  70                                                                         Writer(std::vector
<DyLibUsed
>&) {}; 
  75 #endif // __EXECUTABLEFILE__