Mac OSX Build and Run!

OSX上でのプログラミングの初歩について、情報共有ができればと思います。

Free OSX用FTP RBrowserLite

OSXでは標準の設定のままでは、ファインダーによりフレームワークがあるuserホルダーが参照できなくなっています。
内部を参照するにはOSX用のFree のFTP RBrowserLiteがローカルのホルダーを簡単に参照できるので便利に思います。また、使い方も簡単です。以下から入手可能です。

http://www.rbrowser.com/RBrowserLite/
RBrowserLite入手HPへ

尚、Xcodeのプロジェクトファイルからは標準で設定されているフレームワークについてはヘッダーファイルは参照可能です。

スポンサーサイト

C Carbon対応(Dialog,Window)

ToolBox(システムでサポートされる関数)は大きく分けてOS8.5以前のClassic用とその後整理されてCarbon用に限定されたものがあります。従ってOSXで全てのToolBoxは使える訳ではなく、Carbonに対応したもののみが使用できます。また、Carbonでは初期化が不要になった関数や従来は直接取り出せた参照値が、専用関数(アクセッサー)を使い取り出す様に変更された物もあります。以下はClassicのToolBoxをCarbonに対応させる場合のCでの事例集です。




Carbon で廃止された初期化関数を削除します。
#ifndef TARGET_API_MAC_CARBON//Classicなら以下を適用、カーボンなら不要
MaxApplZone();
InitGraf(&qd.thePort);
InitFonts();
InitWindows();
InitMenus();
TEInit();
InitDialogs(0);
#endif
FlushEvents(everyEvent,0);//イベントのクリアーでcarbonでも必要です。
InitCursor();//carbonでも必要です。




#ifdef TARGET_API_MAC_CARBON
SetPortWindowPort(gWindPtr);//carbon用
#else
SetPort(gWindPtr);//classic用
#endif


FB Carbon対応(Dialog,Window)

ToolBox(システムでサポートされる関数)は大きく分けてOS8.5以前のClassic用とその後整理されてCarbon用に限定されたものがあります。従ってOSXで全てのToolBoxは使える訳ではなく、Carbonに対応したもののみが使用できます。また、従来は直接取り出せた参照値が、専用関数(アクセッサー)を使い取り出す必要があります。以下はClassicのToolBoxをCarbonに対応させる場合の事例集です。
尚、ToolBoxの使用例なのでCでも同様の方法で活用できます。



Dim dialRef As Ptr
Dim dialPort As Ptr To CGrafPort

#If CarbonLib
SizeWindow(Fn GetWindowFromPort(dialPort),oldRect.right - oldRect.left,ツ
oldRect.bottom - oldRect.top,_true)

#Else
SizeWindow(dialRef,oldRect.right - oldRect.left,ツ
oldRect.bottom - oldRect.top,_true)
#Endif




#IF CarbonLib
TOOLBOX FN GetDialogPort(ptr)= ptr
#ENDIF




#IF CarbonLib
DIM err AS OSErr
err = FN SetDialogDefaultItem( pDlg, _okBtn )
#ENDIF




#IF CarbonLib
SetPort( FN GetDialogPort( pDlg ) )
SelectWindow( FN GetWindowFromPort( FN GetDialogPort( pDlg ) ) )
#ELSE
SetPort( pDlg ) 'set grafport
SelectWindow( pDlg ) 'set output to DLOG window
#ENDIF




ProcPtr = PROC "userDialogPROC"

#IF CarbonLib
ProcPtr = FN NewModalFilterUPP([ProcPtr + _FBprocToProcPtrOffset])
#ENDIF




#IF CarbonLib
SetPort( FN GetDialogPort( DialogPtr ) )
#ELSE
SetPort( DialogPtr ) ' Set the current dialog window as the active grafport
#ENDIF




#IF CarbonLib = 0
FN frameDLOGBtn( pDlg, _okBtn ) 'loop for input from dialog cntrls
#ENDIF




#If CarbonLib = 0
Dim As Int @ VolRefNum
FileName = Files$(_fOpen,,,VolRefNum)
ResFileNum = Fn OpenRFPerm (FileName,VolRefNum,_fsRdWrPerm)
#Else
Dim As FSSpec fSpec
FileName = Files$(_FSSpecOpen,,,fSpec)
ResFileNum = Fn FSpOpenResFile (fSpec,_fsRdWrPerm)
#Endif




#if CarbonLib
def fn IsThisWndNotShaded( theW as WindowRef ) = ( fn IsWindowCollapsed( theW ) == _false )
#else//
def fn IsThisWndNotShaded( theW as .CWindowRecord ) = ( fn EmptyRgn( theW.contRgn ) == _false )
#endif




gTrackProc = proc "DragTrackTextProc"
gReceiveProc = proc "DragRecvTextProc"
#if CarbonLib
gTrackProc = fn NewDragTrackingHandlerUPP([gTrackProc + _FBprocToProcPtrOffset])
gReceiveProc = fn NewDragReceiveHandlerUPP([gReceiveProc + _FBprocToProcPtrOffset])
#endif




#If CarbonLib
FlushWindowBuffer
#EndIf




#If CarbonLib
Dim devH As Handle To GDevice
devH = Fn GetMainDevice
Screen = devH..gdRect
#Else
Dim WMgrPort As Pointer To GrafPort
Call GetWMgrPort(WMgrPort)
Screen = WMgrPort.portRect
#Endif




#IF CarbonLib
QDFlushPortBuffer( fn GetWindowPort( gWindPtr ), 0 )
#ENDIF




#IF CarbonLib = 0
SetPort(gWindPtr)
#ELSE
SetPortWindowPort(gWindPtr)
#ENDIF




#IF CarbonLib = 0
DIM err AS OSErr
DIM theWorld AS SysEnvRec

err = FN SysEnvirons(1, theWorld)

LONG IF theWorld.hasColorQD = 0
SysBeep(50)
ExitToShell
END IF
#ELSE
DIM @ devH AS ..GDevice
DIM @ theWorld AS PTR

GetGWorld(theWorld,devH)
LONG IF devH..gdFlags = 0
SysBeep(50)
ExitToShell
END IF
#ENDIF



OSのバージョン確認

/*
Future BASIC用Gestaltの使い方2
Misc Examples/Detecting PPC-Carbon versionのサンプルの簡易版です。
以下の例ではシステムのバージョンを調べています。
尚、実際のサンプルの方が実用的な関数で書かれています。

使用したいセレクター項目をADCで調べ、以下の手順で呼び出せば各機能のバージョン情報等が得られます。後は結果の表記形式のみです。
*/

Dim As Double SystemVersion
Dim As Long @ response

//_gestaltSystemVersion = _"sysv"//FBでは既に定義済みのエラーとなります。

Long If Fn Gestalt( _gestaltSystemVersion, response ) = _noErr//responseにバージョンが入ります。
SystemVersion = Val&( Hex$( response ) )/100.
End If

Print "System version";SystemVersion;" is installed."
//パンサーなら10.39となります。本当は10.3.9と書くのが正しい。
Long If SystemVersion = 0
Print "SystemVersion not properly installed."
End If

Include "Subs Quick Event Loop.Incl"


/*
Copy right by Apple


enum {
gestaltSystemVersion = 'sysv'
};

Gestalt

Obtains information about the operating environment.

OSErr Gestalt (
OSType selector,
long * response
);
*/

/*


Parameter Descriptions
selector
The selector code for the information you need. You can provide any of the four-character sequences
defined in メGestalt Manager Constants.

response
On input, Gestalt interprets this parameter as an address at which it is to place the result returned by the selector function. Gestalt ignores any information already at this address. On return, a pointer to
the requested information whose format depends on the selector code specified in the selector parameter. Note that the Gestalt function returns the response from all selectors in a long word, which occupies 4 bytes. When not all 4 bytes are needed,

The significant information appears in the low-order byte or bytes.

function result
A result code. See メGestalt Manager Result Codesモ.
*/

/*
Gestalt Manager Result Codes

The most common result codes returned by the Gestalt Manager are listed below.

Result code

Value

Comment
gestaltUnknownErr
-5550
Specifies an unknown error.
gestaltUndefSelectorErr
-5551
Specifies an undefined selector was passed to the Gestalt Manager.
gestaltDupSelectorErr
-5552
Specifies you tried to add an entry that already existed.
gestaltLocationErr
-5553
Specifies the gestalt function ptr was not in the system heap.
*/

FBでGestalt関数を使うには

/*
Future BASIC用Gestaltの使い方
Misc Examples/Detecting PPC-Carbon versionのサンプルの簡易版です。
尚、実際のサンプルは実用的な関数で書かれています。

*/

Dim As Double CarbonVersion
Dim As Long @ response

_gestaltCarbonVersion = _"cbon"//FBだと定数はこのように書きます。

//Long If Fn Gestalt( _"cbon", response ) = _noErr
Long If Fn Gestalt( _gestaltCarbonVersion, response ) = _noErr//responseにバージョンが入ります。
CarbonVersion = Val&( Hex$( response ) )/100.
End If

Print "Carbon version";CarbonVersion;" is installed."
//パンサーなら1.6となります。
Long If CarbonVersion = 0
Print "Carbon not properly installed."
End If

Include "Subs Quick Event Loop.Incl"//イベント処理

/*
Copy right by Apple
以下はCによる関連資料です。ADCで情報が得られます。

enum {
gestaltCarbonVersion = 'cbon'
};

Gestalt

Obtains information about the operating environment.

OSErr Gestalt (
OSType selector,
long * response
);
*/

/*


Parameter Descriptions
selector
The selector code for the information you need. You can provide any of the four-character sequences defined in Gestalt Manager Constants.

response
On input, Gestalt interprets this parameter as an address at which it is to place the result returned by the selector function. Gestalt ignores any information already at this address. On return, a pointer to the requested information whose format depends on the selector code specified in the selector parameter. Note that the Gestalt function returns the response from all selectors in a long word, which occupies 4 bytes. When not all 4 bytes are needed,

The significant information appears in th low-order byte or bytes.

function result
A result code. See Gestalt Manager Result Codes.
*/

/*
Gestalt Manager Result Codes

The most common result codes returned by the Gestalt Manager are listed below.

Result code

Value

Comment
gestaltUnknownErr
-5550
Specifies an unknown error.
gestaltUndefSelectorErr
-5551
Specifies an undefined selector was passed to the Gestalt Manager.
gestaltDupSelectorErr
-5552
Specifies you tried to add an entry that already existed.
gestaltLocationErr
-5553
Specifies the gestalt function ptr was not in the system heap.
*/

たんぽぽの綿毛

きれいに広がった綿毛が目に止まりました。

P1000013.jpg

今日咲いていた花です。(つめ草かな?)

P1000015.jpg

Xcode 1.5 付属OpenGLサンプル

Developer Tools には付属サンプルコードが付属しています。これ以外にもADCには多くのサンプルコードがあり、入手できます。
以下はCocoaのサンプルです。プロジェクトファイルはXXXX.pbprojやXXXX.xcodeと言う名前で、このファイルからXcodeを起動します。
尚、場合により古い形式なのでファイル変換を要求される場合があります。

以下はOpenGLのサンプルコードです。CocoaとCabon版があります。

OpenGLSample.jpg

Xcode 1.5 付属AppleScriptサンプル

Developer Tools には付属サンプルコードが付属しています。これ以外にもADCには多くのサンプルコードがあり、入手できます。
以下はAppleScript+Cocoaのサンプルです。プロジェクトファイルはXXXX.pbprojやXXXX.xcodeと言う名前で、このファイルからXcodeを起動します。
尚、場合により古い形式なのでファイル変換を要求される場合があります。

以下はAppleScriptのサンプルコードです。

AppleScriptSample.jpg

Xcode 1.5 付属Javaサンプル

Developer Tools には付属サンプルコードが付属しています。これ以外にもADCには多くのサンプルコードがあり、入手できます。
以下はJavaのサンプルです。プロジェクトファイルはXXXX.pbprojやXXXX.xcodeと言う名前で、このファイルからXcodeを起動します。
尚、場合により古い形式なのでファイル変換を要求される場合があります。

以下はJavaのサンプルコードです。

javaSample.jpg

Xcode 1.5 付属Carbonサンプル

Developer Tools には付属サンプルコードが付属しています。これ以外にもADCには多くのサンプルコードがあり、入手できます。
以下はCarbonのサンプルです。プロジェクトファイルはXXXX.pbprojやXXXX.xcodeと言う名前で、このファイルからXcodeを起動します。
尚、場合により古い形式なのでファイル変換を要求される場合があります。

以下はカーボンのサンプルコードです。

CarbonSample.jpg

Xcode 1.5 付属Cocoaサンプル

Developer Tools には付属サンプルコードが付属しています。これ以外にもADCには多くのサンプルコードがあり、入手できます。
以下はCocoaのサンプルです。プロジェクトファイルはXXXX.pbprojやXXXX.xcodeと言う名前で、このファイルからXcodeを起動します。
尚、場合により古い形式なのでファイル変換を要求される場合があります。

以下はココアのサンプルコードです。

CocoaSample.jpg

Xcode 1.5 について

現在(2005年)の最新版の開発環境はXcode 2.0ですが、OSX 10.4のタイガー用となります。私はまだ移行していないのでXcode 1.5 について紹介します。
基本的な使い方は他の方が説明されているので記載しませんが、どのような内容が含まれているかについて画像で示します。

まずは、Xcode 1.5本体はDeveloper/Applications/のホルダー内にあります。これ以外にもウインドウ内のパーツレイアウトや設定を行うInterface Builderやアイコン作成用のIcon Composer、及び各種プロパィーの変更を行うProperty List Editor等が含まれています。

xcode_tools_1.5.jpg

EventRecord

C ToolBoxイベントのEventRecordについて
以下を見ればイベントレコードの詳細が分かると思います。

struct EventRecord {
EventKind what;
UInt32 message;
UInt32 when;
Point where;
EventModifiers modifiers;
};
typedef struct EventRecord EventRecord;


EventKind what↓

enum {
nullEvent = 0,
mouseDown = 1,
mouseUp = 2,
keyDown = 3,
keyUp = 4,
autoKey = 5,
updateEvt = 6,
diskEvt = 7,
activateEvt = 8,
osEvt = 15,
kHighLevelEvent = 23
};
typedef UInt16 EventKind;


Point where↓

struct Point {
short v;
short h;
};

EventModifiers modifiers↓

enum {
activeFlagBit = 0,
btnStateBit = 7,
cmdKeyBit = 8,
shiftKeyBit = 9,
alphaLockBit = 10,
optionKeyBit = 11,
controlKeyBit = 12,
rightShiftKeyBit = 13,
rightOptionKeyBit = 14,
rightControlKeyBit = 15
};
typedef UInt16 EventModifiers;





PascalでのEventRecord表記(参考)

TYPE EventRecord =
RECORD
what: Integer; {event code}
message: LongInt; {event message}
when: LongInt; {ticks since startup}
where: Point; {mouse location}
modifiers: Integer; {modifier flags}
END;

what↓
CONST
nullEvent = 0; {no other pending events}
mouseDown = 1; {mouse button pressed}
mouseUp = 2; {mouse button released}
keyDown = 3; {key pressed}
keyUp = 4; {key released}
autoKey = 5; {key repeatedly held down}
updateEvt = 6; {window needs updating}
diskEvt = 7; {disk inserted}
activateEvt = 8; {activate/deactivate window}
osEvt = 15;{operating-system event-- }
{ resume, suspend, or }
{ mouse-moved}
kHighLevelEvent = 23;{high-level event}

message↓
・null, mouse-up, mouse-down
・key-up, key-down, auto-key
・update, activate
・disk-inserted
・resume
・suspend
・mouse-moved
・high-level

when↓
where↓
modifiers↓

Cocoa Foundation Frameworksへのパス

☆CocoaのFoundation のヘッダーファイルへのパスです。

cocoa_foundation.gif


以下のヘッダーが含まれます。
objc/objc

CoreFoundation/CoreFoundation

ObjCRuntime
Archiver
Array
AttributedString
AutoreleasePool
Bundle
ByteOrder
CalendarDate
CharacterSet
ClassDescription
Coder
Connection
Data
Date
DateFormatter
Decimal
DecimalNumber
Dictionary
DistantObject
DistributedLock
DistributedNotificationCenter
Enumerator
Error
Exception
FileHandle
FileManager
Formatter
Geometry
HashTable
HFSFileTypes
Host
IndexSet
Invocation
JavaSetup
KeyValueCoding
KeyValueObserving
KeyedArchiver
Lock
MapTable
MethodSignature
NetServices
Notification
NotificationQueue
Null
NumberFormatter
Object
PathUtilities
Port
PortCoder
PortMessage
PortNameServer
ProcessInfo
PropertyList
ProtocolChecker
Proxy
Range
RunLoop
Scanner
Set
SortDescriptor
SpellServer
Stream
String
Task
Thread
TimeZone
Timer
UndoManager
URL
URLHandle
UserDefaults
Value
ValueTransformer
XMLParser
Zone

AppleEventDescriptor
AppleEventManager
AppleScript
ObjectScripting
ScriptClassDescription
ScriptCoercionHandler
ScriptCommand
ScriptCommandDescription
ScriptExecutionContext
ScriptKeyValueCoding
ScriptObjectSpecifiers
ScriptStandardSuiteCommands
ScriptSuiteRegistry
ScriptWhoseTests


AvailabilityMacros

以下MAC_OS_X_VERSION_10_2以降
URLAuthenticationChallenge
URLCredential
URLCredentialStorage
URLProtectionSpace
URLCache
URLConnection
URLProtocol
URLRequest
URLResponse
HTTPCookie
HTTPCookieStorage
URLDownload
URLError

Serialization

Cocoa Appkit Frameworksへのパス

☆以下はCocoa Appkit のヘッダーファイルへのパスです。

cocoa_appkit.gif


ヘッダーファイルの名称を見ると参照するヘッダーがすぐに見つかります。
尚、先頭にあるNSがNext Step時代のなごりです。

Foundation/Foundation
AppKitDefines
GraphicsContext
Accessibility
ActionCell
Alert
AppleScriptExteio
Application
Box
Button
ButtonCell
Cell
ClipView
Control
Font
FontDescriptor
FontManager
FontPanel
Form
FormCell
Matrix
Menu
MenuItem
Color
BitmapImageRep
Browser
BrowserCell
CachedImageRep
ColorList
ColorPanel
ColorPicking
ColorPicker
ColorWell
Cursor
CustomImageRep
Document
DocumentController
Dragging
EPSImageRep
Errors
Event
FileWrapper
HelpManager
Graphics
Image
ImageCell
ImageRep
ImageView
Nib
NibLoading
Printer
SpeechRecognizer
SpeechSynthesizer
SpellChecker
SplitView
OpenPanel
PageLayout
Panel
Pasteboard
PopUpButton
PrintInfo
PrintOperation
PrintPanel
Responder
SavePanel
Screen
ScrollView
Scroller
SegmentedControl
SegmentedCell
Slider
SliderCell
SpellProtocol
Text
TextField
TextFieldCell
Text
View
Window
WindowController
Workspace
ComboBox
ComboBoxCell
TableColumn
TableHeaderCell
TableHeaderView
TableView
OutlineView
AttributedString
LayoutManager
ParagraphStyle
TextStorage
TextView
TextContainer
TextAttachment
InputManager
InputServer
StringDrawing
RulerMarker
RulerView
SecureTextField
InterfaceStyle
NibDeclaratio
ProgressIndicator
TabView
TabViewItem
MenuView
MenuItemCell
PopUpButtonCell
GraphicsContext
AffineTraform
BezierPath
PICTImageRep
StatusBar
StatusItem
Sound
Movie
MovieView
PDFImageRep
QuickDrawView
Drawer
OpenGL
OpenGLView
Applicatiocripting
DocumentScripting
TextStorageScripting
Toolbar
ToolbarItem
WindowScripting
Stepper
StepperCell
GlyphInfo
Shadow
ATSTypesetter
GlyphGenerator
SearchField
SearchFieldCell
Controller
ObjectController
ArrayController
UserDefaultsController
KeyValueBinding

Floating point data types

各ヘッダーを参照すると使い方が分かります。

------------------------------------------------
/***************************************
* Floating point data types *
****************************************/
 
typedef float float_t;
typedef double double_t;
 
#define HUGE_VAL 1e500
#define HUGE_VALF 1e50f
 
#define INFINITY HUGE_VALF
 
------------------------------------------------
acos
double_t acos (
double_t x
);
 
acosh
double_t acosh (
double_t x
);
 
acoshl
long double acoshl (
long double x
);
 
acosl
long double acosl (
long double x
);
 
annuity
double_t annuity (
double_t rate,
double_t periods
);
 
asin
double_t asin (
double_t x
);
 
asinh
double_t asinh (
double_t x
);
 
asinhl
long double asinhl (
long double x
);
 
asinl
long double asinl (
long double x
);
 
atan
double_t atan (
double_t x
);
 
atan2
double_t atan2 (
double_t y,
double_t x
);
 
atan2l
long double atan2l (
long double y,
long double x
);
 
atanh
double_t atanh (
double_t x
);
 
atanhl
long double atanhl (
long double x
);
 
atanl
long double atanl (
long double x
);
 
ceil
double_t ceil (
double_t x
);
 
ceill
long double ceill (
long double x
);
 
compound
double_t compound (
double_t rate,
double_t periods
);
 
copysign
double_t copysign (
double_t x,
double_t y
);
 
copysignl
long double copysignl (
long double x,
long double y
);
 
cos
double_t cos (
double_t x
);
 
cosh
double_t cosh (
double_t x
);
 
coshl
long double coshl (
long double x
);
 
cosl
long double cosl (
long double x
);
 
dec2f
float dec2f (
const decimal * d
);
 
dec2l
long dec2l (
const decimal * d
);
 
dec2num
double_t dec2num (
const decimal * d
);
 
dec2numl
long double dec2numl (
const decimal * d
);
 
dec2s
short dec2s (
const decimal * d
);
 
dec2str
void dec2str (
const decform * f,
const decimal * d,
char * s
);

dtox80
void dtox80 (
const double * x,
extended80 * x80
);
 
erf
double_t erf (
double_t x
);
 
erfc
double_t erfc (
double_t x
);
 
erfcl
long double erfcl (
long double x
);
 
erfl
long double erfl (
long double x
);
 
exp
double_t exp (
double_t x
);
 
exp2
double_t exp2 (
double_t x
);
 
exp2l
long double exp2l (
long double x
);
 
expl
long double expl (
long double x
);
 
expm1
double_t expm1 (
double_t x
);
 
expm1l
long double expm1l (
long double x
);
 
fabs
double_t fabs (
double_t x
);
 
fabsl
long double fabsl (
long double x
);
 
fdim
double_t fdim (
double_t x,
double_t y
);
 
fdiml
long double fdiml (
long double x,
long double y
);
 
------------------------------------------------
_FE_DFL_ENV
_FE_DFL_ENV ();
Header: fp.h
Header: fenv.h

feclearexcept
void feclearexcept (
excepts
);
 
Header: fenv.h

fegetenv
void fegetenv (
fenv_t *envp
);
 
fegetexcept
void fegetexcept (
fexcept_t *flagp,
excepts
);
 
fegetround
int fegetround ();
 
feholdexcept
int feholdexcept (
fenv_t *envp
);
 
feraiseexcept
void feraiseexcept (
excepts
);
 
Parameter Descriptions
excepts
 
fesetenv
void fesetenv (
const fenv_t *envp
);
 
fesetexcept
void fesetexcept (
const fexcept_t *flagp,
excepts
);
 
fesetround
int fesetround (
round
);
 
fetestexcept
int fetestexcept (
excepts
);
 
feupdateenv
void feupdateenv (
const fenv_t *envp
);
 
------------------------------------------------
floor
double_t floor (
double_t x
);
 
floorl
long double floorl (
long double x
);

fmax
double_t fmax (
double_t x,
double_t y
);
 
fmaxl
long double fmaxl (
long double x,
long double y
);
 
fmin
double_t fmin (
double_t x,
double_t y
);
 
fminl
long double fminl (
long double x,
long double y
);
 
fmod
double_t fmod (
double_t x,
double_t y
);
 
__fpclassifyd
long __fpclassifyd (
double x
);
 
__fpclassifyf
long __fpclassifyf (
float x
);
 
frexp
double_t frexp (
double_t x,
int * exponent
);
 
frexpl
long double frexpl (
long double x,
int * exponent
);
 
gamma
double_t gamma (
double_t x
);
gammal
long double gammal (
long double x
);
 
hypot
double_t hypot (
double_t x,
double_t y
);
 
 
hypotl
long double hypotl (
long double x,
long double y
);
 
__inf
double_t __inf ();
 
Parameter Descriptions
__isfinited
long __isfinited (
double x
);
 
__isfinitef
long __isfinitef (
float x
);
 
__isnand
long __isnand (
double x
);
 
__isnanf
long __isnanf (
float x
);
 
__isnormald
long __isnormald (
double x
);
 
__isnormalf
long __isnormalf (
float x
);
 
ldexp
double_t ldexp (
double_t x,
int n
);
 
ldexpl
long double ldexpl (
long double x,
int n
);
 
ldtox80
void ldtox80 (
const long double * x,
extended80 * x80
);
 
lgamma
double_t lgamma (
double_t x
);
lgammal
long double lgammal (
long double x
);
 
log
double_t log (
double_t x
);
 
log10
double_t log10 (
double_t x
);
 
log10l
long double log10l (
long double x
);
 
log1p
double_t log1p (
double_t x
);
 
log1pl
long double log1pl (
long double x
);
 
log2
double_t log2 (
double_t x
);
 
log2l
long double log2l (
long double x
);
 
logb
double_t logb (
double_t x
);
 
logbl
long double logbl (
long double x
);
 
logl
long double logl (
long double x
);
 
modf
double_t modf (
double_t x,
double_t * iptr
);
modff
float modff (
float x,
float * iptrf
);
 
nan
double nan (
const char * tagp
);
 
nanf
float nanf (
const char * tagp
);
 
nearbyint
double_t nearbyint (
double_t x
);
 
nearbyintl
long double nearbyintl (
long double x
);
 
nextafterd
double nextafterd (
double x,
double y
);
 
nextafterf
float nextafterf (
float x,
float y
);
 
num2dec
void num2dec (
const decform * f,
double_t x,
decimal * d
);
 
num2decl
void num2decl (
const decform * f,
long double x,
decimal * d
);
 
pi
pi ();
 
pow
double_t pow (
double_t x,
double_t y
);
 
powl
long double powl (
long double x,
long double y
);
 
randomx
double_t randomx (
double_t * x
);
 
relation
relop relation (
double_t x,
double_t y
);
 
relationl
relop relationl (
long double x,
long double y
);
 
remainder
double_t remainder (
double_t x,
double_t y
);
 
remainderl
long double remainderl (
long double x,
long double y
);
 
remquo
double_t remquo (
double_t x,
double_t y,
int * quo
);
 
remquol
long double remquol (
long double x,
long double y,
int * quo
);
 
rint
double_t rint (
double_t x
);
 
rintl
long double rintl (
long double x
);
 
rinttol
long rinttol (
double_t x
);
 
rinttoll
long rinttoll (
long double x
);
 
round
double_t round (
double_t x
);
 
roundl
long double roundl (
long double x
);
 
roundtol
long roundtol (
double_t round
);
 
roundtoll
long roundtoll (
long double x
);
 
S32Set
SInt32 S32Set (
SInt64 value
);
 
Header: Math64.h
 
S64Absolute
SInt64 S64Absolute (
SInt64 value
);
 
------------------------------------------------
Parameter Descriptions
value
 
S64Add
SInt64 S64Add (
SInt64 left,
SInt64 right
);
 
S64And
Boolean S64And (
SInt64 left,
SInt64 right
);
 
S64BitwiseAnd
SInt64 S64BitwiseAnd (
SInt64 left,
SInt64 right
);
 
S64BitwiseEor
SInt64 S64BitwiseEor (
SInt64 left,
SInt64 right
);
 
S64BitwiseNot
SInt64 S64BitwiseNot (
SInt64 value
);
 
S64BitwiseOr
SInt64 S64BitwiseOr (
SInt64 left,
SInt64 right
);
 
S64Compare
SInt32 S64Compare (
SInt64 left,
SInt64 right
);
 
S64Div
Under evaluation
SInt64 S64Div (
SInt64 dividend,
SInt64 divisor
);
 
S64Divide
SInt64 S64Divide (
SInt64 dividend,
SInt64 divisor,
SInt64 * remainder
);
 
S64Eor
Boolean S64Eor (
SInt64 left,
SInt64 right
);
 
S64Max
SInt64 S64Max ();
 
S64Min
SInt64 S64Min ();
 
S64Multiply
SInt64 S64Multiply (
SInt64 left,
SInt64 right
);
 
S64Negate
SInt64 S64Negate (
SInt64 value
);
 
S64Not
Boolean S64Not (
SInt64 value
);
 
S64Or
Boolean S64Or (
SInt64 left,
SInt64 right
);
 
S64Set
SInt64 S64Set (
SInt32 value
);
 
S64SetU
SInt64 S64SetU (
UInt32 value
);
 
S64ShiftLeft
SInt64 S64ShiftLeft (
SInt64 value,
UInt32 shift
);
 
S64ShiftRight
SInt64 S64ShiftRight (
SInt64 value,
UInt32 shift
);
 
S64Subtract
SInt64 S64Subtract (
SInt64 left,
SInt64 right
);
 
------------------------------------------------
scalb
double_t scalb (
double_t x,
_scalb_n_type n
);
 
scalbl
long double scalbl (
long double x,
long n
);
 
__signbitd
long __signbitd (
double x
);
 
__signbitf
long __signbitf (
float x
);
 
sin
double_t sin (
double_t x
);
 
sinh
double_t sinh (
double_t x
);
 
sinhl
long double sinhl (
long double x
);
 
sinl
long double sinl (
long double x
);
 
------------------------------------------------
SInt64ToUInt64
UInt64 SInt64ToUInt64 (
SInt64 value
);
 
------------------------------------------------
sqrt
double_t sqrt (
double_t x
);
function result
See page for a description of the double_t data type.
 
sqrtl
long double sqrtl (
long double x
);
 
str2dec
void str2dec (
const char * s,
short * ix,
decimal * d,
short * vp
);
 
tan
double_t tan (
double_t x
);
 
tanh
double_t tanh (
double_t x
);
 
tanhl
long double tanhl (
long double x
);
 
tanl
long double tanl (
long double x
);
 
trunc
_trunc_return_type trunc (
double_t x
);
 
truncl
long double truncl (
long double x
);
 
------------------------------------------------
U32SetU
UInt32 U32SetU (
UInt64 value
);
 
U64Add
UInt64 U64Add (
UInt64 left,
UInt64 right
);
 
U64And
Boolean U64And (
UInt64 left,
UInt64 right
);
 
U64BitwiseAnd
UInt64 U64BitwiseAnd (
UInt64 left,
UInt64 right
);
 
U64BitwiseEor
UInt64 U64BitwiseEor (
UInt64 left,
UInt64 right
);
 
U64BitwiseNot
UInt64 U64BitwiseNot (
UInt64 value
);
 
U64BitwiseOr
UInt64 U64BitwiseOr (
UInt64 left,
UInt64 right
);
 
U64Compare
SInt32 U64Compare (
UInt64 left,
UInt64 right
);
 
U64Div
Under evaluation
UInt64 U64Div (
UInt64 dividend,
UInt64 divisor
);
 
U64Divide
UInt64 U64Divide (
UInt64 dividend,
UInt64 divisor,
UInt64 * remainder
);
 
U64Eor
Boolean U64Eor (
UInt64 left,
UInt64 right
);
 
U64Max
UInt64 U64Max ();
 
U64Multiply
UInt64 U64Multiply (
UInt64 left,
UInt64 right
);
 
U64Not
Boolean U64Not (
UInt64 value
);
 
U64Or
Boolean U64Or (
UInt64 left,
UInt64 right
);
 
U64Set
UInt64 U64Set (
SInt32 value
);
 
U64SetU
UInt64 U64SetU (
UInt32 value
);
 
U64ShiftLeft
UInt64 U64ShiftLeft (
UInt64 value,
UInt32 shift
);
 
U64ShiftRight
UInt64 U64ShiftRight (
UInt64 value,
UInt32 shift
);
 
U64Subtract
UInt64 U64Subtract (
UInt64 left,
UInt64 right
);
 
UInt64ToSInt64
SInt64 UInt64ToSInt64 (
UInt64 value
);
 
------------------------------------------------
WideAdd
wide * WideAdd (
wide * target,
const wide * source
);
 
WideBitShift
wide * WideBitShift (
wide * src,
long shift
);
 
WideCompare
short WideCompare (
const wide * target,
const wide * source
);
 
WideDivide
long WideDivide (
const wide * dividend,
long divisor,
long * remainder
);
 
WideMultiply
wide * WideMultiply (
long multiplicand,
long multiplier,
wide * target
);
 
WideNegate
wide * WideNegate (
wide * target
);
 
WideShift
wide * WideShift (
wide * target,
long shift
);
 
WideSquareRoot
unsigned long WideSquareRoot (
const wide * source
);
 
WideSubtract
wide * WideSubtract (
wide * target,
const wide * source
);
 
WideWideDivide
wide * WideWideDivide (
wide * dividend,
long divisor,
long * remainder
);
 
------------------------------------------------
x80tod
double x80tod (
const extended80 * x80
);
 
x80told
void x80told (
const extended80 * x80,
long double * x
);

Cocoa Frameworksへのパス

☆Cocoaのヘッダーファイルへのパス(appkit+foundation)

Cocoa.hを見ると以下の2つのヘッダーを束ねています。FoundationとAppKitのフレームワークにCocoa関連のHeaderがまとめられています。Carbonに比べシンプルな印象を持ちます。

#import
#import

cocoa.gif

数学・論理のユーティリィティ関数

Carbonで使用可能な数学的・論理的なユーティリィティ関数のリファレンス
 
関連ヘッダー
Header: include/architecture/ppc/math.h
Header: include/architecture/ppc/fenv.h
Header: CarbonCore/fp.h
Header: CarbonCore/FixMath.h
 
Carbon > データーマネージメント >
 
acos
acosh
acoshl
acosl
annuity
asin
asinh
asinhl
asinl
atan
atan2
atan2l
atanh
atanhl
atanl
ceil
ceill
compound
copysign
copysignl
cos
cosh
coshl
cosl
dec2f
dec2l
dec2num
dec2numl
dec2s
dec2str
dtox80
erf
erfc
erfcl
erfl
exp
exp2
exp2l
expl
expm1
expm1l
fabs
fabsl
fdim
fdiml
_FE_DFL_ENV
feclearexcept
fegetenv
fegetexcept
fegetround
feholdexcept
feraiseexcept
fesetenv
fesetexcept
fesetround
fetestexcept
feupdateenv
floor
floorl
fmax
fmaxl
fmin
fminl
fmod
__fpclassifyd
__fpclassifyf
frexp
frexpl
gamma
gammal
hypot
hypotl
__inf
__isfinited
__isfinitef
__isnand
__isnanf
__isnormald
__isnormalf
ldexp
ldexpl
ldtox80
lgamma
lgammal
log
log10
log10l
log1p
log1pl
log2
log2l
logb
logbl
logl
modf
modff
nan
nanf
nearbyint
nearbyintl
nextafterd
nextafterf
num2dec
num2decl
pi
pow
powl
randomx
relation
relationl
remainder
remainderl
remquo
remquol
rint
rintl
rinttol
rinttoll
round
roundl
roundtol
roundtoll
S32Set
S64Absolute
S64Add
S64And
S64BitwiseAnd
S64BitwiseEor
S64BitwiseNot
S64BitwiseOr
S64Compare
S64Div
S64Divide
S64Eor
S64Max
S64Min
S64Multiply
S64Negate
S64Not
S64Or
S64Set
S64SetU
S64ShiftLeft
S64ShiftRight
S64Subtract
scalb
scalbl
__signbitd
__signbitf
sin
sinh
sinhl
sinl
SInt64ToUInt64
sqrt
sqrtl
str2dec
tan
tanh
tanhl
tanl
trunc
truncl
U32SetU
U64Add
U64And
U64BitwiseAnd
U64BitwiseEor
U64BitwiseNot
U64BitwiseOr
U64Compare
U64Div
U64Divide
U64Eor
U64Max
U64Multiply
U64Not
U64Or
U64Set
U64SetU
U64ShiftLeft
U64ShiftRight
U64Subtract
UInt64ToSInt64
WideAdd
WideBitShift
WideCompare
WideDivide
WideMultiply
WideNegate
WideShift
WideSquareRoot
WideSubtract
WideWideDivide
x80tod
x80told
 

CarbonCore Frameworksへのパス

Carbonの核となるヘッダーファイルがこの中にあります。

Carboncore.gif


例えば、システム情報を得る関数があります。
File: CarbonCore/Gestalt.h
Contains: Gestalt Interfaces.

/*
* Gestalt()
*
* Summary:
* Gestalt returns information about the operating environment.
*
* Discussion:
* The Gestalt function places the information requested by the
* selector parameter in the variable parameter response . Note that
* Gestalt returns the response from all selectors in a long word,
* which occupies 4 bytes. When not all 4 bytes are needed, the
* significant information appears in the low-order byte or bytes.
* Although the response parameter is declared as a variable
* parameter, you cannot use it to pass information to Gestalt or to
* a Gestalt selector function. Gestalt interprets the response
* parameter as an address at which it is to place the result
* returned by the selector function specified by the selector
* parameter. Gestalt ignores any information already at that
* address.
*
* The Apple-defined selector codes fall into two categories:
* environmental selectors, which supply specific environmental
* information you can use to control the behavior of your
* application, and informational selectors, which supply
* information you can't use to determine what hardware or software
* features are available. You can use one of the selector codes
* defined by Apple (listed in the "Constants" section beginning on
* page 1-14 ) or a selector code defined by a third-party
* product.
*
* The meaning of the value that Gestalt returns in the response
* parameter depends on the selector code with which it was called.
* For example, if you call Gestalt using the gestaltTimeMgrVersion
* selector, it returns a version code in the response parameter. In
* this case, a returned value of 3 indicates that the extended Time
* Manager is available.
*
* In most cases, the last few characters in the selector's symbolic
* name form a suffix that indicates what type of value you can
* expect Gestalt to place in the response parameter. For example,
* if the suffix in a Gestalt selector is Size , then Gestalt
* returns a size in the response parameter.
*
* Attr: A range of 32 bits, the meanings of which are defined by a
* list of constants. Bit 0 is the least significant bit of the long
* word.
* Count: A number indicating how many of the indicated type of item
* exist.
* Size: A size, usually in bytes.
* Table: The base address of a table.
* Type: An index to a list of feature descriptions.
* Version: A version number, which can be either a constant with a
* defined meaning or an actual version number, usually stored as
* four hexadecimal digits in the low-order word of the return
* value. Implied decimal points may separate digits. The value
* $0701, for example, returned in response to the
* gestaltSystemVersion selector, represents system software version
* 7.0.1.
*
* Selectors that have the suffix Attr deserve special attention.
* They cause Gestalt to return a bit field that your application
* must interpret to determine whether a desired feature is present.
* For example, the application-defined sample function
* MyGetSoundAttr , defined in Listing 1-2 on page 1-6 , returns a
* LongInt that contains the Sound Manager attributes field
* retrieved from Gestalt . To determine whether a particular
* feature is available, you need to look at the designated bit.
*
* Mac OS X threading:
* Thread safe since version 10.3
*
* Parameters:
*
* selector:
* The selector to return information for
*
* response:
* On exit, the requested information whose format depends on the
* selector specified.
*
* Availability:
* Mac OS X: in version 10.0 and later in CoreServices.framework
* CarbonLib: in CarbonLib 1.0 and later
* Non-Carbon CFM: in InterfaceLib 7.1 and later
*/
extern OSErr
Gestalt(
OSType selector,
long * response) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;

Carbon Frameworksのパス

Carbon フレームワークにはToolBoxと呼ばれる7000もの関数が含まれています。詳細はヘッダーファイルを参照して下さい。

carbon.gif



HIToolbox/CarbonEvents.h
Contains: Carbon Event Manager


/*ムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムム*/
/* ・ Event Loop Routines */
/*ムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムムム*/

/*
* RunApplicationEventLoop()
*
* Discussion:
* This routine is used as the main event loop for a Carbon
* Event-based application. Once entered, this function waits for
* events to arrive and dispatches them to your event handlers
* automatically.
*
* Mac OS X threading:
* Not thread safe
*
* Availability:
* Mac OS X: in version 10.0 and later in Carbon.framework
* CarbonLib: in CarbonLib 1.1 and later
* Non-Carbon CFM: not available
*/
extern void
RunApplicationEventLoop(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;


Frameworksまでのpath一覧

Carbon,Cocoa,Applescript,kernel等で使用されるヘッダーファイルがこの中にあります。

Frameworks.gif

GCCへのパス

GCCへのパスの一覧です。

gcc.gif

C++のpath一覧です。

ANSI-C,C++等のヘッダー一覧はファインダーからは見ません。以下はFTPによりローカルHD内を見ています。

cpp_path.gif

math.hまでのpath一覧です。

OSXではANSI-Cのヘッダー一覧はファインダーからは見ません。以下はFTPによりローカルを見ています。尚、math.hには計算に使う関数群が書かれています。


math.gif

諏訪の花

街角でみつけた名も知らない花です。
2004110315.jpg

Xcodeの入手方法の紹介

☆Xcodeとはアップル社製のOSX専用開発ツールです。
C、C++、Object-C、JAVA、Apple Script等が使用できます。そして、ADC会員なら無料で最新版をダウンロードして入手することができます。但し、ファイルサイズが300MB程ありブロードバンドの光りケーブルやADSLの接続環境が必要です。

サンプルコードはApple Developer Centerに豊富にありダウンロードできます。
以下にAppleDeveloperConnectionへの無料(Online)会員になり、只でXcodeをダウンロードして入手するまでの手続きを紹介します。有料会員なら色と特典があり、新規にMacを購入するなら予定があるなら割り引きがあので事前に有料会員になるのも手かも。学生会員なら年会費$99でセレクト会員に近いサービスが受けられるそうです。

以下のリンクがスタートポイントです。
ADCへのリンクGetXcode1.jpg

GetXcode2.jpg

GetXcode3.jpg

最近登録フォームが一元化された様です。必要事項を記入して登録を行って下さい。これが済めば、無料でXcodeがダウンロードできます。
GetXcode4.jpg

以下が開発ツールのXcode 1.5です。では有効活用して下さい。
GetXcode5.jpg

11月頃の花の写真です。

辺りを散歩していた時に見かけた可愛い花の写真です。

20041103_13s.jpg

Xcode ANSI-Cのヘッダーファイルの所在

☆ANSI-Cのstdin.hまでのpath一覧です。(CarbonやCocoaでは内部に含まれており宣言は不要です。)
尚、ANSI-Cのヘッダー一覧はファインダーからは見ません。以下はFTPによりローカルを見ています。

stdint.gif

Xcodeで使用しているヘッダーへのPath一覧

以下からヘッダーを参照する場所が分かります。
ANSI-C,Carbon,Cocoa,AppleScript,kernel,GCC,OpenGL,QuickTime等のヘッダーが有ります。
 
/System/Library/Frameworks/CoreFoundation.framework/Headers

/System/Library/Frameworks/Cocoa.framework/Headers <-- Cocoa
/System/Library/Frameworks/Foundation.framework/Headers <-- Cocoa
/System/Library/Frameworks/AppKit.framework/Headers <-- Cocoa

/usr/include <-- ANSI-C
/usr/include/sys
/usr/include/mach
/usr/include/mach-o
/usr/include/objc
/usr/include/net
/usr/include/netinfo

/usr/include/gcc/darwin/3.3/c++
/usr/include/gcc/darwin/3.3/c++/backward
/usr/include/gcc/darwin/3.3/c++/bits
/usr/include/gcc/darwin/3.3/c++/ext
/usr/include/gcc/darwin/3.3/c++/ppc-darwin/bits

/System/Library/Frameworks/Carbon.framework/Headers
/System/Library/Frameworks/Carbon.framework/Frameworks/CarbonSound.framework/Headers
/System/Library/Frameworks/Carbon.framework/Frameworks/CommonPanels.framework/Headers
/System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox.framework/Headers
/System/Library/Frameworks/Carbon.framework/Frameworks/HTMLRendering.framework/Headers
/System/Library/Frameworks/Carbon.framework/Frameworks/Help.framework/Headers
/System/Library/Frameworks/Carbon.framework/Frameworks/IBCarbonRuntime.framework/Headers
/System/Library/Frameworks/Carbon.framework/Frameworks/ImageCapture.framework/Headers
/System/Library/Frameworks/Carbon.framework/Frameworks/NSL.framework/Headers
/System/Library/Frameworks/Carbon.framework/Frameworks/NavigationServices.framework/Headers
/System/Library/Frameworks/Carbon.framework/Frameworks/OpenScripting.framework/Headers
/System/Library/Frameworks/Carbon.framework/Frameworks/Print.framework/Headers
/System/Library/Frameworks/Carbon.framework/Frameworks/SecurityHI.framework/Headers
/System/Library/Frameworks/Carbon.framework/Frameworks/SpeechRecognition.framework/Headers
/System/Library/Frameworks/Carbon.framework/Frameworks/URLAccess.framework/Headers

/System/Library/Frameworks/ApplicationServices.framework/Frameworks/AE.framework/Headers
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/ATS.framework/Headers
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/ColorSync.framework/Headers
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreGraphics.framework/Headers
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/FindByContent.framework/Headers
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/LangAnalysis.framework/Headers
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/LaunchServices.framework/Headers
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/PrintCore.framework/Headers
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/QD.framework/Headers
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/SpeechSynthesis.framework/Headers

/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers
/System/Library/Frameworks/CoreServices.framework/Frameworks/NSLCore.framework/Headers
/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers
/System/Library/Frameworks/CoreServices.framework/Frameworks/OT.framework/Headers
/System/Library/Frameworks/CoreServices.framework/Frameworks/SecurityCore.framework/Headers
/System/Library/Frameworks/CoreAudio.framework/Headers

/System/Library/Frameworks/IOKit.framework/Headers

/System/Library/Frameworks/OpenGL.framework/Headers

/System/Library/Frameworks/QuickTime.framework/Headers

/System/Library/Frameworks/Kernel.framework/Headers

11/24/2003  by Lightchaos