省型旧形国電の残影を求めて

戦前型旧形国電および鉄道と変褪色フィルム写真を中心とした写真補正編集の話題を扱います。他のサイトでは得られない、筆者独自開発の写真補正ツールや補正技法についても情報提供しています。写真補正技法への質問はコメント欄へどうぞ

CTL プログラミング Tips: CTL の仕様の制約

f:id:yasuo_ssi:20210904211415j:plain

 CTL は基本的に C / C++ 言語のサブセットになっているようです。当然ながら C 言語で使える仕様がすべて使えるわけではなく、かなり限定されたものになっています。既に文字型変数は使えないという指摘はしておきましたが、詳しい説明は以下の説明書にあります。

https://ampasctl.sourceforge.net/CtlManual.pdf

 この中で、いくつかの要点に関して、かいつまんで、紹介します。

まず使える区切り記号や演算子記号ですが

[ ]  ( )  { }  .  *  +  -  ~  !  /  %  <<  >>  <  >  <=  >=  ==
!=  ^  &  |  &&  ||  ;  =  ,

はサポートしています。しかし以下はサポートしていません。

->  ++  --  ?  :  ...  *=  /=  %=  +=  -=  &=  ^=  |=  <<=  >>=

#  ## <:  :>  <%  %>  %:  %: %:

従って、以下のような、条件演算⼦(ternary operator)を使用することはできません。

  distance.x = ach == 0.0f ? 0.0f : (ach - rgb.x) / _fabs(ach);

 

また、定数の型を指定する接尾詞 (リテラル) に関しては、

 1.2e2 や 1.2h (ハーフリテラル)

はサポートしていますが、f, F, L はサポートしていません。例えば以下のような表現は許容されません。

 0.0f  1.2L

 

C, C++ で使える組み込み関数の内、CTL 内でサポートされているものは、以下のものだけです。それ以外はサポートされません。

 acos, asin, atan, atan2, cos, sin, tan, cosh, sinh, tanh, exp, exp_h, log, logh, log10, log10_h, pow, pow_h, pow10, pow10_h, sqrt, fabs, floor, fmod, hypot

 

 かなり限定されていますが、その分、私のように、C言語になれていない人でもとっつきやすい側面もあるかと思います。