1*834a2baaSAndroid Build Coastguard Worker### Minikin Style Guide 2*834a2baaSAndroid Build Coastguard Worker 3*834a2baaSAndroid Build Coastguard WorkerThe C++ style in Minikin follows Android Framework C++ Code Style Guide except for following rules: 4*834a2baaSAndroid Build Coastguard Worker 5*834a2baaSAndroid Build Coastguard Worker * Order of include 6*834a2baaSAndroid Build Coastguard Worker 7*834a2baaSAndroid Build Coastguard Worker In dir/foo.cc or dir/foo_test.cc, whose main purpose is to implement or test the stuff in 8*834a2baaSAndroid Build Coastguard Worker dir2/foo2.h, order your includes as follows: 9*834a2baaSAndroid Build Coastguard Worker 10*834a2baaSAndroid Build Coastguard Worker 1. dir2/foo.h 11*834a2baaSAndroid Build Coastguard Worker 2. A blank line 12*834a2baaSAndroid Build Coastguard Worker 3. C system files 13*834a2baaSAndroid Build Coastguard Worker 4. C++ system files 14*834a2baaSAndroid Build Coastguard Worker 5. A blank line 15*834a2baaSAndroid Build Coastguard Worker 6. Other libraries' files 16*834a2baaSAndroid Build Coastguard Worker 7. A blank line 17*834a2baaSAndroid Build Coastguard Worker 8. Minikin public files 18*834a2baaSAndroid Build Coastguard Worker 9. A blank line 19*834a2baaSAndroid Build Coastguard Worker 10. Minikin private files 20*834a2baaSAndroid Build Coastguard Worker 21*834a2baaSAndroid Build Coastguard Worker For example, 22*834a2baaSAndroid Build Coastguard Worker ``` 23*834a2baaSAndroid Build Coastguard Worker #include "minikin/Layout.h" // The corresponding header file. 24*834a2baaSAndroid Build Coastguard Worker 25*834a2baaSAndroid Build Coastguard Worker #include <math.h> // C system header files. 26*834a2baaSAndroid Build Coastguard Worker #include <string> // C++ system header files. 27*834a2baaSAndroid Build Coastguard Worker 28*834a2baaSAndroid Build Coastguard Worker #include <hb.h> // Other library, HarfBuzz, header file. 29*834a2baaSAndroid Build Coastguard Worker #include <log/log.h> // Other library, Android, header file. 30*834a2baaSAndroid Build Coastguard Worker #include <unicode/ubidi.h> // Other library, ICU, header file. 31*834a2baaSAndroid Build Coastguard Worker 32*834a2baaSAndroid Build Coastguard Worker #include "minikin/Emoji.h" // The minikin public header file. 33*834a2baaSAndroid Build Coastguard Worker #include "HbFontCache.h" // The minikin private header file. 34*834a2baaSAndroid Build Coastguard Worker ``` 35*834a2baaSAndroid Build Coastguard Worker 36*834a2baaSAndroid Build Coastguard Worker * "<>" vs "" 37*834a2baaSAndroid Build Coastguard Worker 38*834a2baaSAndroid Build Coastguard Worker * `#include <...>` should be used for non local library files. 39*834a2baaSAndroid Build Coastguard Worker * `#include "..."` should be used for minikin header files. 40